其实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 不允许的 ……………………………… 就不一一列举了 大家根据自己的实际情况来设置吧
3)软件限制策略的优先级,从高到底排列如下:
散列规则
证书规则
路径规则(包含注册表路径规则)
Internet区域规则
路径规则优先权
如果有多个匹配的路径规则,则最具体的匹配规则优先权最高。以下一组路径按优先权从最高(最具体的匹配)到最低(最一般的匹配)排序:
• | Drive:\Folder1\Folder2\FileName.Extension |
• | Drive:\Folder1\Folder2\*.Extension |
• | *.Extension |
• | Drive:\Folder1\Folder2\ |
• | Drive:\Folder1 |
关于环境变量(假定系统盘为 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下的所有文件及子目录都生效。