组策略完全解析.docx
《组策略完全解析.docx》由会员分享,可在线阅读,更多相关《组策略完全解析.docx(68页珍藏版)》请在冰豆网上搜索。
组策略完全解析
ThefinalrevisionwasonNovember23,2020
组策略完全解析
七寸”其实就是所谓的“打蛇打七寸”
七寸”其实就是所谓的“打蛇打七寸”,以击中要害为目的,而最大限度的不干扰其他操作,所以,如果要完成“七寸”的效果,就不能用全局规则的想法来考虑,而只能以point-to-point的模式来进行管制。
诚然,组策略对于交互式的操作来说,可比性各有千秋,HIPS的API函数挂钩是一个一个的完成,胜在细致、直观,但是总会有漏掉的;而组策略的一个安全等级相当于一个现成的HIPS规则,这显然要比HIPS一个一个的HOOK高效得多,毕竟这是微软给我们提供好的,虽然也不能所每个安全等级都能面面俱到,但至少它胜在方便,上手简单。
既然不能用全局规则的思路来编,那么就从系统目录一个一个来讲,至于其他盘符目录,可以在熟悉的条件下自己添加,这里仅举出系统盘策略。
在XP系统,系统盘假设为C盘,那么其下无非就几个目录而已,DocumentsandSettings,ProgramFiles,WINDOWS,一些WindowsInstaller软件的安装还会创建一个目录。
关于通配符、优先级和环境变量,这里再赘述一遍,因为它很重要:
*:
任意个字符(包括0个),但不包括斜杠。
:
1个或0个字符。
优先级总的原则是:
规则越匹配越优先。
①.绝对路径>通配符全路径
如C:
\Windows\>*\Windows\
②.文件名规则>目录型规则
如若在Windows目录中,那么>C:
\Windows
③.环境变量=相应的实际路径=注册表键值路径
如%ProgramFiles%=C:
\ProgramFiles=%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
④.对于同是目录规则,则能匹配的目录级数越多的规则越优先;对于同是文件名规则,优先级均相同。
⑤.若规则的优先级相同,按最受限制的规则为准。
举例:
绝对路径(如C:
\Windows\system32\>通配符全路径(如*\Windows\*\>文件名规则(如=通配符文件名规则(如*.*)>部分绝对路径(不包含文件名,如C:
\Windows\system32)=部分通配符路径(不包含文件名,如C:
\*\system32)>C:
\Windows=*\*
常用的环境变量:
%SystemDrive%
表示C:
\
%AllUsersProfile%
表示C:
\DocumentsandSettings\AllUsers
%UserProfile%
表示C:
\DocumentsandSettings\当前用户名
%AppData%
表示C:
\DocumentsandSettings\当前用户名\ApplicationData
%Temp%和%Tmp%
表示C:
\DocumentsandSettings\当前用户名\LocalSettings\Temp
%ProgramFiles%
表示C:
\ProgramFiles
%CommonProgramFiles%
表示C:
\ProgramFiles\CommonFiles
%WinDir%
表示C:
\WINDOWS
%ComSpec%
表示C:
\WINDOWS\system32\
===========================================
一、DocumentsandSettings
于是我们来一步一步排除,在一些缓存目录未修改的前提下,首先需要排除的是三个用户程序目录,一些软件在安装完毕后会在这三个目录下创建相关文件:
%AppData%\*\不受限的
%AppData%\LocalSettings\ApplicationData\*\不受限的
%AllUsersProfile%\ApplicationData\*\不受限的
然后在排除文档目录
%UserProfile%\MyDocuments基本用户
%AllUsersProfile%\Documents基本用户
接着排除临时文件目录
%Temp%不受限的
%Tmp%不受限的
最后在排除桌面目录
%UserProfile%\桌面受限的
%AllUsersProfile%\桌面受限的
附加*.lnk不受限的
排除完毕后,就可以放心的加上一条禁止规则%SystemDrive%\DocumentsandSettings,因为上面的这几个目录是我们常用到的,除了这几个目录,其他位置运行的文件基本都不是什么好东西。
二、ProgramFiles
第一个目录搞定,慢慢接着往下来。
ProgramFiles目录相对来讲也很简单,受限禁止ProgramFiles根目录运行程序,然后排除下一级目录:
%ProgramFiles%不允许的
%ProgramFiles%\*\不受限的
然后把系统程序降权,限制其访问令牌,重点是联网的,尤其是浏览器:
%ProgramFiles%\InternetExplorer基本用户
%ProgramFiles%\NetMeeting基本用户
%ProgramFiles%\OutlookExpress基本用户
%ProgramFiles%\WindowsMediaPlayer基本用户
%ProgramFiles%\WindowsNT基本用户
关于一些其他程序的降权,可以参考我之前发的一个帖子:
禁止一些存放软件用到的公用库目录,放心大胆的禁:
%CommonProgramFiles%\*.*
%CommonProgramFiles%\DESIGNER
%CommonProgramFiles%\MicrosoftShared
%CommonProgramFiles%\MSSoap
%CommonProgramFiles%\ODBC
%CommonProgramFiles%\Services
%CommonProgramFiles%\SpeechEngines
%CommonProgramFiles%\System
最后添加%CommonProgramFiles%基本用户,作用于一些用户文件,比如Adobe,Tencent...
这样ProgramFiles目录就排除完毕,是不是很简单没错,追求基本安全的方法就是这样容易上手。
三、Windows
备受争议的Windows目录,但别看Windows目录下目录这么多,多数病毒的隐匿居所基本都是一些常见的目录,慢慢来:
先排除Windows目录下的一些常用程序:
需要降权为基本用户的一些程序:
防帮助文件捆绑
防chm格式文件捆绑
(此文件在Windows目录和system32目录都有)
至于一些用户程序会在Windows下建立的一些程序,不是很多的,自己手动排除下就可以了。
然后禁止一些高危目录:
%WinDir%\Debug调试目录
%WinDir%\DownloadedProgramFiles防IE插件
%WinDir%\Fonts字体目录,一般程序不会在此目录启动
%WinDir%\inf用于存放驱动信息目录
%WinDir%\OfflineWebPages脱机浏览文件目录
%WinDir%\system16位系统文件目录,一般程序不会在此目录启动
%WinDir%\tasks禁止计划任务目录启动可疑程序
%WinDir%\Temp高危系统变量,禁止
%WinDir%\WinSxS系统重要组件,一般程序不会在此目录启动
最后加上两条:
%WinDir%不允许的
%WinDir%\*\不受限的
顺承接入下一目录,鱼龙混杂的system32,既然不考虑全局,那么可以只禁止一些高危目录:
%WinDir%\system32\Com除了系统自有的程序,一般程序不会在此目录启动
%WinDir%\system32\config系统配置目录,包括注册表
%WinDir%\system32\dllcache备份目录,一般程序不会在此目录启动
%WinDir%\system32\drivers驱动目录,一般程序不会在此目录启动
%WinDir%\system32\ShellExt危险目录,禁止
%WinDir%\system32\spool打印机目录,不用打印机的话可以禁止
%WinDir%\system32\wins危险目录,禁止
然后再禁止一些不必要的系统程序:
%WinDir%\system32\计划任务,很少用到
%WinDir%\system32\防止启动中转换系统
%WinDir%\system32\防止启动中格式化
%WinDir%\system32\管制访问控制列表
%WinDir%\system32\格式化命令,禁止
%WinDir%\system32\用于执行多种系统相关的任务,高级用户才能使用
%WinDir%\system32\危险调试程序,禁止
%WinDir%\system32\修改注册表权限,禁止
%WinDir%\system32\替换保护文件和正在运行的文件,禁止
%WinDir%\system32\配置服务用,防被恶意调用
%WinDir%\system32\将路径与驱动器盘符关联,很少用到
%WinDir%\system32\命令行结束进程工具,禁止
%WinDir%\system32\脚本宿主,防止恶意脚本
当然,这些往往要根据个人知识掌握度来添加。
这样一来Windows和system32目录差不多也排除完毕,没有设置%WinDir%\*\基本用户是因为那样基本相当于系统目录全局规则,而且还要做很多排除工作。
四、其他相关目录
1.输入法目录的限制:
%WinDir%\ime受限的
%WinDir%\system32\IME受限的
2.禁止可移动磁盘:
U盘盘符:
\*不信任的或不允许的都可以
3.禁止系统盘根目录:
%SystemDrive%\*.*不信任的或不允许的都可以
4.禁止双后缀恶意程序:
*.*.bat
*.*.chm
*.*.cmd
*.*.pif
*.*.vbs
*.
*.
*.
*..exe(其中可以是mp3、avi、doc、rar等,觉得这个限制太严厉的话,就拆开写,一些常见的都可以写进去。
)
5.禁止一些特殊的后缀:
*.cmd高危格式禁止
.exe高危格式禁止
6.降权一些特殊的后缀:
*.scr基本用户(防止恶意scr屏保)
因为cmd和bat在组策略里是单独处理的,也就是说,禁止cmd之后,bat也可以独立运行,所以:
%ComSpec%基本用户
*.bat基本用户(bat等一些格式降权后双击会提示无关联操作,这个可能与open方式有关,此时可以通过调用的方式打开,如Win+R,处理的过程仍然是以基本用户权限运行的cmd,或者更简单的方式——创建快捷方式。
)
7.特殊的系统目录:
:
\Recycle\回收站目录不信任的或不允许的都可以
:
\SystemVolumeInformation系统还原目录不信任的或不允许的都可以
8.至于伪装系统程序名,还是写上一些吧:
不允许的
%WinDir%\system32\不受限的
不允许的
%WinDir%\system32\不受限的
不允许的
%WinDir%\不受限的
不允许的
%WinDir%\system32\不受限的
不允许的
%WinDir%\system32\不受限的
不允许的
%WinDir%\system32\不受限的
不允许的
%WinDir%\system32\不受限的
、等等以此类推...
9.排除一些相关文件:
*.ade不受限的Access项目文件
*.adp不受限的Access项目文件
*.chm不受限的CHM格式文件
*.hlp不受限的帮助文件
*.mdb不受限的数据库文件
*.mde不受限的数据库文件
*.msi不受限的微软WindowsInstaller安装包
*.msp不受限的微软WindowsInstaller修补包
*.pcd不受限的PCD格式文件
10.可以利用组策略禁止一些插件(可选),例如:
*bar*.*
*cnnic*.*
*coopen*.*
11.排除system32下的14个MS-DOS文件,然后加入*不允许的(可选)。
这样一来,该禁止的危险都禁止掉了,安全的动作基本也都放行掉,“七寸”这个关键点可以说把握的比较到位了。
AD的部分基本差不太多,但不要认为基本用户就足够安全了,基本用户虽然很强大,无法控制System等级的进程,但基本用户下的进程可以通过注入或发送消息的方法控制其他高等级的进程,如explorer,控制了explorer能做什么不用我说想必也能知道了吧...
===========================================
五、注册表部分
微软默认的注册表权限限制得宽松有至,一些程序降权后是无法对HKLM下的键值进行修改的,最多也就是只读,但基本用户的程序是有当前操作用户的权限的,也就是通常使用的administrator权限(但没有administrators组的权限),所以基本用户在操作HKCU键值的时候会以当前用户的权限来操作,也就是说,基本用户下的程序是有权限来对HKCU下的键值进行修改和删除的,所以一些修改主页的流氓程序就会钻这个空子,对付这一类的不再赘述了,安全软件,HIPS,选择安全的下载点都可以防范,这里说一些值得思考的地方:
映像劫持,话说在AV终结者爆发之前,有多少用户把IFEO设置只读了呢:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ImageFileExecutionOptions
U盘自动运行:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
系统自启动:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
DLL加载自启动(可选):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs
有关IE的键值太多,Winlogon和Explorer的自启动也不少,不一一列举了,也不建议都设置只读属性,系统的权限设置最大的优点是底层,而最大的缺点就是不够灵活,这也是很多人不喜欢组策略+系统权限的原因吧,如果要一项一项来设置,疯掉了
===========================================
六、NTFS权限部分
也是个麻烦事。
。
。
同样,Microsoft默认的够用,可以考虑用默认的:
重要资料(文件夹)只读,重要文件备份只读,这个不解释了。
允许启动程序的地方不允许创建文件----InternetExplorer目录,允许创建文件的地方不允许启动程序----IE临时文件目录、下载目录,至于%Temp%可以考虑为了软件的安装而允许运行程序,如果有从浏览器下载下来的病毒运行,它的权限也是继承了浏览器的权限,无法对关键目录进行破坏。
工作量大点的,可以参考:
ProgramFiles和其它程序目录允许Users读取和运行不允许写,或者保持已存在文件的只读只允许创建和写新文件,再或者系统关键目录的白名单。
最后说一说everyone这个组别,顾名思义,这个组别适应于所有的用户,所以这个组别的权限必须是最低的,而且一定不要高于只读权限的users组。
有鉴于此,在一个用户属于多个组的时候,该用户所获得的权限是各个组的叠加,因为“拒绝”要比“允许”的优先级要高,所以不需要相关的权限取消打勾即可,故尽量不要使用“拒绝”,不然Adm权限下的程序也会受影响,例如用户kafan同时属于Administrators和Everyone组,若Administrators组具有完全访问权,但Everyone组拒绝写目录,那么该用户的实际权限则不能对目录进行写如操作,但除此之外其他任意的操作都可以进行。
为了满足一些人降权后的特殊需求,提供禁止基本用户程序在磁盘根目录创建文件的方法,很简单:
打开所有隐藏属性,确保各盘符下的文件夹和文件复制继承了各盘符的NTFS权限后,删除Users组的其他权限,只保留读取和运行。
===========================================
码字好累
说了这么多,就是提供一些有安全软件防护组合的条件下对一些危险操作的禁止,老帖中有很多隐匿的精品回复,而置顶教程和规则贴也不少,简单些的防入口,全面些的控全局,希望以上内容能起到给一些喜欢自己定制规则的人自我揣摩的思路,这也是我发这个帖子的初衷。
对于一些喜欢不直接套用规则的人,我觉得这个想法还算不错,匹配自己使用环境的策略才是好策略,拿来主义好,可惜的是,不加修改直接引用就会导致好的不明显
那么,感谢下看到这里的人吧,你们辛苦了(其实我也很辛苦)
上图一张
附规则示例文件,内有说明,仅供交流学习使用。
使用前注意备份原文件(GroupPolicy目录不可手工建立,新建默认策略后运行,熟练使用查看日志为上)
KB,下载次数:
683)
备份下载地址----
===========================================
就说这么多吧,写来写去怎么感觉越来越肤浅...一些不成熟的个人建议,欢迎批评指正,感激涕零。
以上
?
。
注意:
如果你没有耐心或兴趣看完所有内容而想直接使用规则的话,请至少认真看一次规则的说明,谢谢
实际上,本教程主要为以下内容:
理论部分:
1.软件限制策略的路径规则的优先级问题
2.在路径规则中如何使用通配符
3.规则的权限继承问题
4.软件限制策略如何实现3D部署(配合访问控制,如NTFS权限),软件限制策略的精髓在于权限,部署策略同时,往往也需要学会设置权限
规则部分:
5.如何用软件限制策略防毒(也就是如何写规则)
6.规则的示例与下载
其中,1、2、3点是基础,很多人写出无效或者错误的规则出来都是因为对这些内容没有搞清楚;第4点可能有
点难,但如果想让策略有更好的防护效果并且不影响平时正常使用的话,这点很重要。
如果使用规则后发现有的软件工作不正常,请参考这部分内容,注意调整NTFS权限
理论部分
软件限制策略包括证书规则、散列规则、Internet区域规则和路径规则。
我们主要用到的是散列规则和路径规则,其中灵活性最好的就是路径规则了,所以一般我们谈到的策略规则,若没有特别说明,则直接指路径规则。
或者有人问:
为什么不用散列规则散列规则可以防病毒替换白名单中的程序,安全性不是更好么
一是因为散列规则不能通用,二是即使用了也意义不大——防替换应该要利用好NTFS权限,而不是散列规则,要是真让病毒替换了系统程序,那么再谈规则已经晚了
一.环境变量、通配符和优先级
关于环境变量(假定系统盘为C盘)
%USERPROFILE%表示C:
\DocumentsandSettings\当前用户名
%HOMEPATH%表示C:
\DocumentsandSettings\当前用户名
%ALLUSERSPROFILE%表示C:
\DocumentsandSettings\AllUsers
%ComSpec%表示C:
\WINDOWS\System32\
%APPDATA%表示C:
\DocumentsandSettings\当前用户名\ApplicationData
%ALLAPPDATA%表示C:
\DocumentsandSettings\AllUsers\ApplicationData
%SYSTEMDRIVE%表示C:
%HOMEDRIVE%表示C:
%SYSTEMROOT%表示C:
\WINDOWS
%WINDIR%表示C:
\WINDOWS
%TEMP%和%TMP%表示C:
\DocumentsandSettings\当前用户名\LocalSettings\Temp
%ProgramFiles%表示C:
\ProgramFiles
%CommonProgramFiles%表示C:
\ProgramFiles\CommonFiles
关于通配符:
Windows里面默认
*:
任意个字符(包括0个),但不包括斜杠
:
1个或0个字符
几个例子
*\Windows匹配C:
\Windows、D:
\Windows、E:
\Windows以及每个目录下的所有子文件夹。
C:
\win*匹配C:
\winnt、C:
\windows、C:
\windir以及每个目录下的所有子文件夹。
*.vbs匹配WindowsXPProfessional中具有此扩展名的任何应用程序。
C:
\ApplicationFiles\*.*匹配特定目录(ApplicationFiles)中的应用程序文件,但不包括ApplicationFiles的子目录
关于优先级:
总的原则是:
规则越匹配越优先
1.绝对路径>通配符全路径
如C:
\Windows\>*\Windows\
2.文件名规则>目录型规则
如若在Windows目录中,那么>C:
\Windows
3.环境变量=相应的实际路径=注册表键值路径
如%ProgramFiles%=C:
\ProgramFiles=%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
4.对于同是目录规则,则能匹配的目录级数越多的规则越优先
对于同是文件名规则,优先级均相同
5.散列规则比任何路径规则优先级都高
6.若规则的优先级相同,按最受限制的规则为准
举例说明,例如cmd的全路径是C:
\Windows\system32\
那么,优先级顺序是:
绝对路径(如C:
\Windows\system32\>通配符全路径(如*\Windows\*\>文件名规则(如=通配符文件名规则(如*.*)>部分绝对路径(不包含文件名,如C:
\Windows\system32)=部分通配符路径(不包含文件名,如C:
\*\system32)>C:
\Windows=*\*
注:
1.通配符*并不包括斜杠\。
例如*\WINDOWS匹配C:
\Windows,但不匹配C:
\Sandbox\WIND