其实WINXP组策略中的软件限制策略完全可以实现HIPS的功能
设置得当的话,完全可以防御大部分的网络威胁
要设置组策略,先来了解一下系统环境变量和通配符
环境变量
%USERPROFILE% 表示 C:\Documents and Settings\当前用户名
%ALLUSERSPROFILE% 表示 C:\Documents and Settings\All Users
%APPDATA% 表示 C:\Documents and Settings\当前用户名\Application Data
%ALLAPPDATA% 表示 C:\Documents and Settings\All Users\Application Data
%SYSTEMDRIVE% 表示 C:
%HOMEDRIVE% 表示C:\
%SYSTEMROOT% 表示 C:\WINDOWS
%WINDIR% 表示 C:\WINDOWS
%TEMP% 和 %TMP% 表示 C:\Documents and Settings\当前用户名\Local Settings\Temp
%ProgramFiles% 表示 C:\Program Files
%CommonProgramFiles% 表示 C:\Program Files\Common Files
通配符
? 表示任意单个字符
* 表示任意多个字符
**或*? 表示零个或多个含有反斜杠的字符,即包含子文件夹
接下来开始设置“软件限制策略”
设置完成后,将C:\Windows\\system32\GroupPolicy\Machine\Registry.pol文件拷贝出来
这个文件就是你所设置的规则。重做系统后,将备份的这个文件覆盖到源路径中,就可以恢复规则
也可以将这个文件做成一个自解压EXE格式的文件
自解压脚本为
Path=%windir%\system32\GroupPolicy\Machine\
SavePath
Setup=gpupdate /force
Silent=1
Overwrite=1
一、软件限制策略的作用
首先说一下HIPS的3D
AD——程序保护 保护应用程序不被恶意修改、删除、注入
FD——文件保护 保护关键的文件不被恶意修改、删除,禁止恶意程序创建和读取文件
RD——注册表保护 保护注册表关键位置不被恶意修改、读取、删除
XP系统软件限制策略可以做到上面的AD与FD,至于RD,可以通过注册表权限设置来实现
因此可以说,XP本身就具备3D功能,只是不被大家所熟悉。
二、软件限制策略的优劣势
1、优势
优势是很明显的,它是系统的一部分,不存在兼容性问题,不占用内存,属于系统最底层保护,保护能力远不是HIPS可以比拟的
2、劣势
劣势也很明显,与HIPS相比,它不够灵活和智能,不存在学习模式,它只会默认阻止或放行,不会询问用户,若规则设置不当,可能导致某些程序不能运行
三、软件限制策略 规则编写实例
我直接以一些最常见的例子来说明
1、首先要学会系统通配符、环境变量的含义,以及软件限制策略规则的优先级
2、如何阻止恶意程序运行
首先要注意,恶意程序一般会藏身在什么地方
?: 分区根目录
C:WINDOWS (后面讲解一律以系统在C盘为例)
C:WINDOWSsystem32
C:Documents and SettingsAdministrator
C:Documents and SettingsAdministratorApplication Data
C:Documents and SettingsAll Users
C:Documents and SettingsAll UsersApplication Data
C:Documents and SettingsAdministrator「开始」菜单程序启动
C:Documents and SettingsAll Users「开始」菜单程序启动
C:Program Files
C:Program FilesCommon Files
注意:
C:Documents and SettingsAdministrator
C:Documents and SettingsAdministratorApplication Data
C:Documents and SettingsAll Users
C:Documents and SettingsAll UsersApplication Data
C:Documents and SettingsAdministrator「开始」菜单程序启动
C:Documents and SettingsAll Users「开始」菜单程序启动
C:Program Files
C:Program FilesCommon Files
这8个路径下是没有可执行文件的,只有在它们的子目录下才有可能存在可执行文件,那么基于这一点,规则就容易写了
%ALLAPPDATA%*.* 不允许的
%ALLUSERSPROFILE%*.* 不允许的
%ALLUSERPROFILE%「开始」菜单程序启动*.* 不允许的
%APPDATA%*.* 不允许的
%USERSPROFILE%*.*
%USERPROFILE%「开始」菜单程序启动*.* 不允许的
%ProgramFiles%*.* 不允许的
%CommonProgramFiles%*.* 不允许的
那么对于
C:WINDOWS C:WINDOWSsystem32 这两个路径的规则怎么写呢?
C:WINDOWS下只有explorer.exe、notepad.exe、摄像头程序、声卡管理程序是需要运行的,而其他都不需要运行
则其规则可以这样写:
%SYSTEMROOT%*.* 不允许的 (首先禁止C:WINDOWS下运行可执行文件)
C:WINDOWSexplorer.exe 不受限的
C:WINDOWS otepad.exe 不受限的
C:WINDOWSamcap.exe 不受限的
C:WINDOWSRTHDCPL.EXE 不受限的
(然后利用绝对路径优先级大于通配符路径的原则,设置上述几个排除规则,则,在C:WINDOWS下,除了explorer.exe、notepad.exe、摄像头程序、声卡管理程序可以运行外,其他所有的可执行文件均不可运行)
对于C:WINDOWSsystem32就不能像上面那样写规则了,在SYSTEM32下面很多系统必须的可执行文件,如果一个一个排除,那太累了。所以,对system32,我们只要对它的子文件作一些限制,并对系统关键进程进行保护
子文件夹的限制
%SYSTEMROOT%system32config***.* 不允许的
%SYSTEMROOT%system32drivers***.* 不允许的
%SYSTEMROOT%system32spool***.* 不允许的
当然你可以限制更多的子文件夹
3、如何保护system32下的系统关键进程
有些进程是系统启动时必须加载的,你不能阻止它的运行,但这些进程又常常被恶意软件仿冒,怎么办?其实很简单,这些仿冒的进程,其路径不可能出现在system32下,因为它们不可能替换这些核心文件,它们往往出现在其他的路径中。那么我们可以这样应对:
C:WINDOWSsystem32csrss.exe 不受限的
C:WINDOWSsystem32ctfmon.exe 不受限的
C:WINDOWSsystem32lsass.exe 不受限的
C:WINDOWSsystem32 undll32.exe 不受限的
C:WINDOWSsystem32services.exe 不受限的
C:WINDOWSsystem32smss.exe 不受限的
C:WINDOWSsystem32spoolsv.exe 不受限的
C:WINDOWSsystem32svchost.exe 不受限的
C:WINDOWSsystem32winlogon.exe 不受限的
先完全允许正常路径下这些进程,再屏蔽掉其他路径下仿冒进程
csrss.* 不允许的 (.* 表示任意后缀名,这样就涵盖了 bat com 等等可执行的后缀)
ctfm?n.* 不允许的
lass.* 不允许的
lssas.* 不允许的
rund*.* 不允许的
services.* 不允许的
smss.* 不允许的
sp???sv.* 不允许的
s??h?st.* 不允许的
s?vch?st.* 不允许的
win??g?n.* 不允许的
4、如何保护上网的安全
在浏览不安全的网页时,病毒会首先下载到IE缓存以及系统临时文件夹中,并自动运行,造成系统染毒,在了解了这个感染途径之后,我们可以利用软件限制策略进行封堵
%SYSTEMROOT% asks***.* 不允许的 (这个是计划任务,病毒藏身地之一)
%SYSTEMROOT%Temp***.* 不允许的
%USERPROFILE%Cookies*.* 不允许的
%USERPROFILE%Local Settings***.* 不允许的 (这个是IE缓存、历史记录、临时文件所在位置)
另外可以免疫一些常见的流氓软件
3721.* 不允许的
CNNIC.* 不允许的
*Bar.* 不允许的
等等,不赘述,大家可以自己添加
注意,*.* 这个格式只会阻止可执行文件,而不会阻止 .txt .jpg 等等文件
另外演示两条禁止从回收站和备份文件夹执行文件的规则
?:Recycler***.* 不允许的
?:System Volume Information***.* 不允许的
5、如何防止U盘病毒的入侵
这个简单,两条规则就可以彻底搞定
?:autorun.inf 不允许的
?:*.* 不允许的
6、预防双后缀名的典型恶意软件
许多恶意软件,他有双后缀,比如 mm.jpg.exe
由于很多人默认不显示后缀名,所以你看到的文件名是 mm.jpg
对于这类恶意,我本来想以一条规则彻底免疫
*.*.* 不允许的
可是这样做了之后,却发现我的ACDSee 3.1 无法运行
于是改成
*.???.bat 不允许的
*.???.cmd 不允许的
*.???.com 不允许的
*.???.exe 不允许的
*.???.pif 不允许的
这样5条规则,ACDSEE没有问题了。我现在还没搞清楚,我的ACDSEE并没有双后缀,为何不能运行
7、其他规则
注意 %USERPROFILE%Local Settings***.* 这条规则设置后,禁止了从临时文件夹执行文件,那么一些自解压的单文件就无法运行了,因为这类文件是首先解压到临时文件夹,然后从临时文件夹运行的。如果你的电脑中有自解压的单文件,那么,删除这条规则,增加3条:
%USERPROFILE%Local SettingsApplication Data***.* 不允许的
%USERPROFILE%Local SettingsHistory***.* 不允许的
%USERPROFILE%Local SettingsTemporary Internet Files***.* 不允许的
威金的预防,很简单三条
logo?.* 不允许的
logo??.* 不允许的
_desktop.ini 不允许的
小浩病毒的预防
xiaohao.exe 不允许的
禁止conimi.exe进程
c?nime.* 不允许的
禁止QQ自动更新
QQUpdateCenter.exe 不允许的
TIMPlatform.exe 不允许的
禁止遨游自动更新
maxupdate.exe 不允许的
禁止小红伞C版的广告
avnotify.exe 不允许的
………………………………
就不一一列举了
大家根据自己的实际情况来设置吧
路径规则优先权
如果有多个匹配的路径规则,则最具体的匹配规则优先权最高。以下一组路径按优先权从最高(最具体的匹配)到最低(最一般的匹配)排序:
• |
Drive:\Folder1\Folder2\FileName.Extension |
• |
Drive:\Folder1\Folder2\*.Extension |
• |
*.Extension |
• |
Drive:\Folder1\Folder2\ |
• |
Drive:\Folder1 |
最后附上我自己精简后的规则,比较大众化,下载解压后直接运行即可
运行前,先备份C:WINDOWSsystem32GroupPolicyMachineRegistry.pol 这个文件
如果导入规则出现不良反应,可以用原文件替换回去
有兴趣的朋友可以深入研究,不良反应究竟是触发了哪一条规则,如何设置能达到最佳效果
附带啰嗦一句,现在很多病毒采用劫持IFEO的方法,致使杀毒软件无法启动。解决方法如下:
打开注册表编辑器,找到
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
右击——权限,取消所有用户的写入、修改权限,仅保留读取和删除权限
规则导入完成之后,利用NTFS格式的安全设定,设置Registry.pol 的权限,取消所有用户的修改、写入和删除权限,这样恶意软件便不能修改或删除这个规则了
同理,可以利用NTFS的权限设置,保护任意文件不被修改和删除,和软件限制策略相辅相成,达到HIPS的FD功能。
这个是FAT格式无法享有的优越性
关于环境变量(假定系统盘为 C盘)
%USERPROFILE% 表示 C:Documents and Settings当前用户名
%HOMEPATH% 表示 C:Documents and Settings当前用户名
%ALLUSERSPROFILE% 表示 C:Documents and SettingsAll Users
%ComSpec% 表示 C:WINDOWSSystem32cmd.exe
%APPDATA% 表示 C:Documents and Settings当前用户名Application Data
%ALLAPPDATA% 表示 C:Documents and SettingsAll UsersApplication Data
%SYSTEMDRIVE% 表示 C:
%HOMEDRIVE% 表示 C:
%SYSTEMROOT% 表示 C:WINDOWS
%WINDIR% 表示 C:WINDOWS
%TEMP% 和 %TMP% 表示 C:Documents and Settings当前用户名Local SettingsTemp
%ProgramFiles% 表示 C:Program Files
%CommonProgramFiles% 表示 C:Program FilesCommon Files
注:
1. 通配符 * 并不包括斜杠 。例如*WINDOWS 匹配 C:Windows,但不匹配 C:SandboxWINDOWS
2. * 和 ** 是完全等效的,例如 ****abc = **abc
3. C:abc* 可以直接写为 C:abc 或者 C:abc,最后的* 是可以省去的,因为软件限制策略中已经存储了执行文件类型作为 * 的内容了。(指派的文件类型)
4. 软件限制策略只对“指派的文件类型”列表中的格式起效。例如 *.txt 不允许的,这样的规则实际上无效,除非你把TXT格式也加入“指派的文件类型”列表中。
5. * 和 *.* 是有区别的,后者要求文件名或路径必须含有“.”,而前者没有此限制,因此,*.* 的优先级比 * 的高
6. ?:* 与 ?:*.* 是截然不同的,前者是指所有分区下的每个目录下的所有子文件夹,简单说,就是整个硬盘;而 ?:*.* 仅包括所有分区下的带“.”的文件或目录,一般情况
下,指的就是各盘根目录下的文件。那非一般情况是什么呢?请参考第7点
7. ?:*.* 中的“.” 可能使规则范围不限于根目录。这里需要注意的是:有“.”的不一定是文件,可以是文件夹。例如 F:ab.c,一样符合 ?:*.*,所以规则对F:ab.c下的所有文件及子目录都生效。