这篇文章是转载作品,转载的原因觉得此文章很实用,原创出处: [url]http://coolerfeng.blog.51cto.com/133059/64822[/url]
上一篇关于组策略防病毒,其中一个很重要的地方就在于降低IE的权限,如何降低IE权限呢,网上提到过在计算机建立多个用户,让IE采用一个不活动的用户来运行,此方法虽然可以,然而在公司这样的环境却难以应用,毕竟此方法需要一台计算机一台的去手工设置.
由于上文提到的原因,部分软件的不规范导致必须要用管理员权限才能正常运行.因此,大部分管理员为了省事,都给了用户管理员权限.这样导致,计算机上任何程序都是以管理员权限来运行,如果打开带有网页***的网页,由于IE是管理员权限,那么IE接下来被***利用,向系统文件夹复制文件,修改注册表等等事件都会出现了.于是,中毒了.虽然不断的在出补丁修复,但是这种亡羊补牢的办法.总是慢半拍.
 
组策略在路径规则里面设置
%ProgramFiles%\Internet Explorer    基本用户
 
这样IE就成了基本用户,从IE上执行的网页中即使有漏洞,由于继承IE的基本用户权限,也难以有大的破坏了
 
同理可以设置其他浏览器为基本用户,比如遨游,TT浏览器等等.
只指定文件名,而不指定可以匹配任意路径,也就是用户不管把浏览器安装在硬盘上什么地方,只要不修改可执行文件名,都能匹配上.
 
另一大病毒来源,就是U盘,如果你发现你的驱动器根目录下突然多了一个autorun.inf,哈哈,恭喜你,可能你中毒了.关于组策略防U盘病毒的策略,网上讨论也很多,但是大多数的策略是错误的.如 ?:\autorun.inf    不允许的
另外,组策略里面关闭自动播放,是不能防止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
可以下载到最新的2.0版本
最新版的用法暂时还没研究明白
 
这里给出一个旧版本(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的两种不同风格
 
前者是默认开放所有,然后逐步的禁止而后者是禁止所有,然后逐步开放允许的
 
孰是孰非已经不是我们几句话可以说的明白的东西了.有点跑题了哈.就此打住.