组策略之软件限制策略—-组策略防病毒

相信各位一定在为电脑中毒.流氓插件等问题头疼
重装系统,一键还原这些解决办法都存在各种不足.
传统的杀毒软件面对如今铺天盖地的病毒,木马,流氓软件也是只有招架之功.无还手之力.
归根结底,我们得想办法防毒.而不是把希望寄托在杀毒上.
那么如何防呢.要用到HIPS
什么是HIPS?
Host Intrusion Prevent System 主机入侵防御系统。HIPS是一种能监控你电脑中文件的运行和文件运用了其他的文件以及文件对注册表的修改,并向你报告请求允许的的软件。如果你阻止了,那么它将无法运行或者更改。比如你双击了一个病毒程序,HIPS软件跳出来报告而你阻止了,那么病毒还是没有运行的。引用一句话:”病毒天天变种天天出新,使得杀软可能跟不上病毒的脚步,而HIPS能解决这些问题。”。 HIPS是以后系统安全发展的一种趋势,只要你有足够的专业水平,你可以只用HIPS而不需杀毒软件。但是HIPS并不能称为防火墙,最多只能叫做系统防火墙,它不能阻止网络上其他计算机对你计算机的攻击行为。
其实,如果你能够做到用受限用户来完成日常工作的话,其实,一切的hips都可以歇菜。毕竟微软为我们准备了十分完备的防御体系,毫不夸张的说,能够真正与组策略的整体实力相抗衡的软件还没有诞生呢。
但是,为什么那么多人还是倒霉?
这个,就是国内的体制问题,很多开发软件的人,根本不按照常规做事情,就比如QQ,你在普通用户模式下,多多少少的会遇到这个那个的稀奇古怪的问题。而且症状都千奇百怪,主要是开发者没有考虑到用户权限的问题,开发和测试都在管理员的权限上执行,这样很多设计上的漏洞自然就暴露不出来。
组策略的软件限制策略
软件限制策略包括证书规则、散列规则、Internet 区域规则和路径规则。我们主要用到的是散列规则和路径规则,其中灵活性最好的就是路径规则了,所以一般我们谈到的策略规则,若没有特别说明,则直接指路径规则。
其他关于组策略的介绍可以参考本文开头给的连接.既然是防病毒,我们有二种思路.
一种是宽松的规则.对危险的行为进行限制.对普通的行为允许.
建立黑名单制度.对恶意程序进行限制.
另一种严格的规则,实习白名单制度,对已知的程序建立白名单,只允许运行已知的程序.
对未知的程序进行严格的限制.
目前的情况来看,大量windows计算机中毒主要来自两个方向.一个就是IE浏览器.另一个就是U盘等移动存储介质.IE由于自身问题,漏洞多多,即使及时的打上微软的补丁,依然无法避免一些恶意网马的入侵.
举一个例:
若我们把IE设成基本用户等级启动,那么由IE执行的任何程序的权限都将不高于基本用户级别,只能更低。所以就可以达到防范网马的效果——即使IE下载病毒并执行了,病毒由于权限的限制,无法对系统进行有害的更改,如果重启一下,那么病毒就只剩下尸体了。
甚至,我们还可以通过NTFS权限的设置,让IE无法下载和运行病毒,不给病毒任何的机会。
关于组策略规则的设置:
规则要顾及方便性,因此不能对自己有过多的限制,或者最低限度地,即使出现限制的情况,也能方便地进行排除
规则要顾及安全性,首先要考虑的对象就是浏览器等上网类软件和可移动设备所带来的威胁。没有这种防外能力的规则都是不完整或者不合格的
基于文件名防病毒、防流氓的规则不宜多设,甚至可以舍弃。
一是容易误阻,二是病毒名字可以随便改,特征库式的黑名单只会跟杀软的病毒库一样滞后。
于是,我们有两种方案:
如果想限制少一点的,可以只设防“入口”规则,主要面向U盘和浏览器
如果想安全系数更高、全面一点的,可以考虑全局规则+白名单
具体做法可以是:
IE 基本用户
U盘 不允许的
阅读器的受限,如hh.exe,pdf Reader
Documents and Settings 不允许的 + Application Data 不受限
CMD基本用户
桌面受限的 + lnk不受限的
全局基本用户 + 白名单不受限(系统默认的四条规则+Program Files+自定义程序+某些格式的排除)
注意全局规则中最好使用 “* 基本用户”这样的形式,大家不妨对比一下与 “*.* 基本用户”或者“*.exe 基本用户” 的不同
组策略的编辑,查看,修改,
在开始-运行里面输入gpedit.msc
计算机配置-windows设置-安全设置-软件限制策略-其他规则

此处就是添加规则的地方了
因篇幅太长,无法在blog中全部详细解释了.如对本文有疑问,还是请看最上面的链接吧
本文仅仅提供思路,真正强大之处在于规则的定义上.
最后附上气流兄的规则文件包
下载规则后,解压缩双击就可以了.如果觉得规则影响到你的正常使用了.双击还原组策略那个程序就可以还原.规则分为二组,一个是基本规则,较为宽松,一个是全局规则,较为严格.
如果遇到组策略的阻止,会在windows的事件管理器里面留下日志记录.
其中一个很重要的地方就在于降低IE的权限,如何降低IE权限呢,网上提到过在计算机建立多个用户,让IE采用一个不活动的用户来运行,此方法虽然可以,然而在公司这样的环境却难以应用,毕竟此方法需要一台计算机一台的去手工设置.
由于上文提到的原因,部分软件的不规范导致必须要用管理员权限才能正常运行.因此,大部分管理员为了省事,都给了用户管理员权限.这样导致,计算机上任何程序都是以管理员权限来运行,如果打开带有网页木马的网页,由于IE是管理员权限,那么IE接下来被木马利用,向系统文件夹复制文件,修改注册表等等事件都会出现了.于是,中毒了.虽然不断的在出补丁修复,但是这种亡羊补牢的办法.总是慢半拍.
组策略在路径规则里面设置
%ProgramFiles%\Internet Explorer 基本用户
这样IE就成了基本用户,从IE上执行的网页中即使有漏洞,由于继承IE的基本用户权限,也难以有大的破坏了
同理可以设置其他浏览器为基本用户,比如遨游,TT浏览器等等.
只指定文件名,而不指定可以匹配任意路径,也就是用户不管把浏览器安装在硬盘上什么地方,只要不修改可执行文件名,都能匹配上.
另一大病毒来源,就是U盘,如果你发现你的驱动器根目录下突然多了一个autorun.inf,哈哈,恭喜你,可能你中毒了.关于组策略防U盘病毒的策略,网上讨论也很多,但是大多数的策略是错误的.如 ?:\autorun.inf 不允许的
详细分析可以看[url]http://bbs.kafan.cn/viewthread.php?tid=206247[/url]
另外,组策略里面关闭自动播放,是不能防止autorun.inf里面的程序执行的,有兴趣的朋友可以自己试验.
根据上面的讨论,发现有效封堵U盘autorun.inf的办法只有
实际可行的方法:
1. 禁止explorer.exe读取autorun.inf (HIPS之FD)
2. 禁止explorer.exe写入MountPoints2的shell下面的open、explorer、autorun、command等项
,即:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\*\shell\open
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\*\shell\autorun
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\*\shell\explorer
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\*\shell\*\Command
或者将整个MountPoints2项封住,禁止写入
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
(注册表权限、HIPS之RD)
3. 禁止U盘的程序启动 (软件限制策略、HIPS之AD)
4. 用沙盘限制 (DW的非信任、SBie的强制运行等等)
5. 自定义有害文件:autorun.inf (一些杀软可以做到,例如咖啡8.5i)
可以考虑的方案是2和3.
2的原理是虽然插入的U盘有毒,但不能修改注册表,也就是无法把autorun..inf中定义的键值插入到指定的位置,这样auotrun.inf中定义的可执行文件依然无法运行
3,的办法比较简单,禁止U盘上的所有可执行文件运行.缺点在于要确定U盘的驱动器盘符.
4和5需要第三方软件来支持了.如果想简单的话.不妨用方法2
当前这样做的前提是你的机器没有中autorun..inf.也就是该键值是清洁的.如果有问题,请自行用regedit打开注册表来编辑该键值.把病毒加入的键值删除掉
打开注册表编辑器.右键单击MountPoints2项,选择权限,然后把里面的administrator
administrators.everyone,system等用户的权限从完全控制改为读取,然后点击高级.选中
“用在此显示的可以应用到子对象的项目替代所有子对象的权限项目”,然后确定
OK,现在MountPoints2项和它的子项都是只读了.在你的U盘上自己建一个autorun.inf
[autorun]
OPEN=NOTEPAD.exe
shell\open=打开(&O)
shell\open\Command=NOTEPAD.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=NOTEPAD.exe
icon=game.ico
保存在U盘根目录.然后拔掉U盘再插上,双击U盘的盘符,看看能否执行记事本,不能了吧.
以上是单机防御的办法.对于AD活动目录,我们可以自己写一个登录脚本.让所有电脑登录域的时候自动运行脚本
命令行下修改注册表键值的工具,微软自己就有regini.exe
我们看看用法
创建一个txt文件,文件名任意,如read.txt
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
[2 8 19]
然后在cmd下执行
regini.exe read.txt
然后你再打开regedit.exe看看,键值的权限是不是变成只读了?
可惜此方法有个缺陷,就是子键值不能继承父键值的权限
在网上找到一个第三方的修改工具setacl.exe
注意此文件有多个版本,从[url]http://sourceforge.net/project/showfiles.php?group_id=69165[/url]
可以下载到最新的2.0版本
最新版的用法暂时还没研究明白
旧版本下载地址[url]http://www.helge.mynetcologne.de/setacl/[/url]
这里给出一个旧版本(0.904以下都可以)的用法
rem 解释:
rem setacl:设置 —————————–
rem CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run: 当前用户注册表分支启动RUN键值
rem registry:类型为注册表
rem deny:项目为拒绝访问
rem administrator:访问对象为administrator
rem full:权限是:完全访问
rem 简单的讲这句话的意思就是:
rem 将注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run键值设置为administrator用户无法访问
rem 项目有四种 deny(拒绝) grant(允许) set(设置) revoke(撤消)
rem 权限有两种 FULL 完全访问 READ 只读访问
rem 所以我们要恢复上面被拒绝的项只需要用一下下面的命令:
rem setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /registry /grant administrator /full
rem 下面是各个主分支开头部分的对照:
rem setacl machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /registry /deny administrator /full
rem setacl USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
rem setacl MACHINE\SYSTEM\CurrentControlSet\Services /registry
rem setacl CLASSES_ROOT\exefile\shell\open\command
rem setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 /registry /deny everyone /full
rem 解释:
rem setacl:程序
rem CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run: 当前用户注册表分支启动RUN键值
rem registry:类型为注册表
rem deny:项目为拒绝访问
rem administrator:访问对象为administrator
rem full:权限是:完全访问
rem 简单的讲这句话的意思就是:
rem 将注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run键值设置为administrator用户无法访问
rem 项目有四种 deny(拒绝) grant(允许) set(设置) revoke(撤消)
rem 权限有两种 FULL 完全访问 READ 只读访问
rem 所以我们要恢复上面被拒绝的项只需要用一下下面的命令:
rem setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /registry /grant administrator /full
rem 下面是各个主分支开头部分的对照:
rem setacl machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /registry /deny administrator /full
rem setacl USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
rem setacl MACHINE\SYSTEM\CurrentControlSet\Services /registry
rem setacl CLASSES_ROOT\exefile\shell\open\command
所以,要禁止autorun.inf文件自动播放只需要运行下面的命令即可
setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 /registry /deny everyone /full
注意这里的对象是everyone,也就是说拒绝任何人完全控制此键,也就禁止了administrators之类的
我们要封锁MountPoints2,需要下列命令
setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 /registry /deny everyone /full
同样道理,我们还可以锁住一些其他的键值来保护计算机
比如开机自动运行的程序
setacl CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /registry /deny administrator /full
Image镜像劫持(防止病毒干掉我们的杀毒软件)
setacl.exe “machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options” /registry /deny administrators /full
setacl.exe “machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options” /registry /deny system /full
最后提供一个从[url]http://www.zychina.com.cn/article/163/214/10323.html[/url]找到的脚本,大家可以参考一下这个思路.
需要说明的是,开放给用户的权限越多.带来的潜在危害越大,但是限制过多,又会造成用户使用不便,如何权衡,请各位根据自己的实际环境来调整.写成通用的脚本难度比较大,毕竟大家情况都不不一样,本文仅仅提供思路.具体的发挥就看大家自己了.
另外,由于计算机技术不断发展本文所提供的办法也不是就能永远有效下去
希望大家继续研究,不断改进.
关于组策略的3D保护,第一篇提到了AD,本文提到了RD.还有FD的保护,也就是NTFS权限保护.将会在后面的文章中写出.
高手说,运用好HIPS,加上合适的规则,理论上可以裸奔.哈哈.不过不推荐普通用户这样做.我们要的是综合防御,立体防线.在简单和复杂之间取得平衡.
再次感慨,权限才是王道…由此也能看到微软和linux的两种不同风格
前者是默认开放所有,然后逐步的禁止而后者是禁止所有,然后逐步开放允许的
孰是孰非已经不是我们几句话可以说的明白的东西了.有点跑题了哈.就此打住.

发表评论

电子邮件地址不会被公开。 必填项已用*标注