Sunday, September 09, 2007
Windows安全策略--系统自带的“软件”防火墙
感谢fonlan的原创投递
在 互联网越来越普及的今天,互联网安全问题日益严重,木马病毒横行网络。大多数人会选择安装杀毒软件和防火墙,不过杀毒软件对病毒反应的滞后性使得他心有 余而力不足,只有在病毒已经造成破坏后才能被发现并查杀。在这种情况下,HIPS(主动防御系统)软件越来越流行,依靠设定各种各样的规则来限制病毒木马 的运行和传播,由于HIPS是基于行为分析的,这使得它对未知病毒依然有效,不过软件兼容性问题也比普通的杀毒软件要严峻的多。网 络上有一种人,他们不装任何杀毒软件和防火墙,自由奔走在互联网上,称之为“裸奔”族。不过他们也分许多不同的种类,有的是电脑不设任何防护,也不放任 何重要资料,一旦中毒就重装系统;而另一种则是依托Windows系统本身的安全机制来抵御病毒的入侵,显然这种方法要可靠的多。
其实大多数人都忽略了Windows系统本身的功能,认为Windows弱不禁风。其实只要设置好,Windows就是非常强大的安全防护软件。这篇文章 的主角就是WindowsXP Pro里自带的安全策略功能。打开安全策略很简单,直接双击控制面板管理工具里的本地安全策略即可,这里我们重点讲其中的软件限制策略。
正如其名,这里可以限制软件的运行,至于如何限制,那就要看你的策略怎么定了。如果以前未设置过安全策略,那么在软件限制策略上右键新建策略后会出现下级菜单:
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/2/7/fonlan,20070902190240043.JPG');" src="http://images.blogcn.com/2007/9/2/7/fonlan,20070902190240043.JPG" alt="" border="0">
其他地方我们都不用管,其它规则才是由我们发挥的地方,这里规则制定的好坏直接关系到你的电脑的安全程度。点击其他策略,我们可以看到微软已经帮我们预设了4条规则(如下图)
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/2/7/fonlan,20070902190242003.JPG');" src="http://images.blogcn.com/2007/9/2/7/fonlan,20070902190242003.JPG" alt="" border="0">
这4条规则是用来保证Windows运行所必须的程序不会被禁用而设的,如果你确定你的规则没有问题,这四条规则删掉也没有问题。接下去在其他规则上右键,
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/2/7/fonlan,20070902190244933.JPG');" src="http://images.blogcn.com/2007/9/2/7/fonlan,20070902190244933.JPG" alt="" border="0">
在弹出的右键菜单里,我们主要用到的是“新路径规则”,偶尔也可以用“新散列规则”,具体有何区别将在下面分别讲述。现在我们点击“新路径规则”,出现如下窗口:
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/2/7/fonlan,20070902190247066.JPG');" src="http://images.blogcn.com/2007/9/2/7/fonlan,20070902190247066.JPG" alt="" border="0">
我们主要在路径那一栏里做文章。 这里允许使用通配符,常见的有“*”和“?”,*表示任意个字符,?表示一个字符。也允许使用环境变量,常见的文件夹环境变量有:
(以下以XP默认装在C盘例举)
%ALLUSERSPROFILE% 表示 C:\Documents and Settings\All Users
%APPDATA% 表示 C:\Documents and Settings\当前用户名\Application Data
%SYSTEMDRIVE% 表示 C:
%SYSTEMROOT% 和 %WINDIR% 表示 C:\WINDOWS
%TEMP% 和 %TMP% 表示 C:\Documents and Settings\当前用户名\Local Settings\Temp
%USERPROFILE% 表示 C:\Documents and Settings\当前用户名
%ProgramFiles% 表示 C:\Program Files
在定义规则的时候我们可以使用绝对路径,也可以用通配符或者环境变量,甚至可以直接使用要禁止运行的程序的程序名。而这里就涉及到一个优先级的问题了。按微软的规定:绝对路径>使用通配符的路径>文件名。
下面我通过实例来讲规则的建立:
实例1:进程仿冒是木马病毒用的最多的一个手段,比如病毒文件名为svchost.exe,而这个病毒文件在windows文件夹下或其他任意文件夹下 (真正的svchost.exe文件在system32文件夹下),病毒运行时XP默认的任务管理器里只会显示进程名为svchost.exe,而XP本 来就有很多个svchost.exe进程,这就很好地达到了欺骗用户的目的。普通杀毒软件还是得依托单一的病毒库,一旦换了个新病毒用同样的手法他就不认 了,安全性很差。而用本地安全策略可以很简单的永久免疫这种方式的病毒,我们建立两条规则:
svchost.exe 不允许的
%windir%\system32\svchost.exe 不受限的
由 于优先级的关系,第二条使用绝对路径的规则优先级高于第一条基于文件名的路径,也就是说system32文件夹下的svchost.exe是允许运行的, 而其他任意文件夹的名字为svchost.exe的程序都无法运行。由于svchost.exe是系统文件,病毒不可能替换它。可以看到,这两条规则完美 地解决了这个问题,以后只要是使用相同手法的病毒或木马都无法运行,达到了防毒的效果。
实例2:很多病毒木马为逃过用户的追杀都会藏在很隐蔽的地方,比如回收站、System Volume Information(系统还原文件夹)、C:\WINDOWS\system32\Drivers文件夹、C:\WINDOWS\system文件夹 等等,并且加上隐藏属性使用户不易发觉。而事实上,这些文件夹正常情况下是没有任何可执行程序的,所以我们可以建立以下规则:
?:\Recycled\*.* 不允许的
?:\System Volume Information\*.* 不允许的
%windir%\system32\Drivers\*.* 不允许的
%windir%\system\*.* 不允许的
通过以上4条规则就能屏蔽掉这4个文件夹下任意可执行文件的运行,再一次完美地解决了这一类型的病毒和木马的防御。放心,用*.*这种格式并不会屏蔽掉txt或者jpg之类的其他非可执行程序。
实例3:用双扩展名迷惑用户的病毒也不在少数。比如MM.jpg.exe,免费得QQ会员的方法.txt.exe等等,然后图标改成前一个扩展名的图标,由于大多数用户都是XP的默认设置,隐藏已知扩展名的,所以这些病毒文件是很有诱惑力的,防御他们也不难:
*.jpg.exe 不允许的
*.txt.exe 不允许的
这是两条很容易理解的规则,我就不多做解释了。
实例四:优盘病毒是现在木马病毒使用的最广的传播方式,一般的方法是安装杀毒软件或专门的防USB病毒工具,那么用系统安全策略是否也能做到免疫呢?答案是不能做到100%防御,但能达到90%以上,规则看下面:
(假设你电脑上第一个优盘的盘符是G)
G:\*.exe 不允许的
G:\*.com 不允许的
利用的就是几乎所有的USB病毒都存在在优盘的根目录下,而且是exe后缀的或者com后缀的应用程序,用上面两条规则就能阻止他们的运行。还有一些 USB病毒会隐藏在优盘根目录下的一些隐藏文件夹里,如建立一个叫System Volume Information的文件夹或者Recycled文件夹,而正常情况下优盘是没有系统还原文件夹和回收站的(移动硬盘有时候有),而这个时候,就要靠 实例2的规则来组织了。
一般电脑上都不止一个USB接口,所以我们至少要免疫2到3个优盘盘符,将上面的G改成H和I并加入其他规则中即可。
实例5:文件名伪装虽然是比较老的技术了,不过由于他简单有效的特点现在依然被广泛使用。如有些病毒将自己的文件名改成expl0rer.exe,你敢随 随便便的删除它吗??不过你可要看仔细哦,不是explorer.exe,注意“0”和“o”的差别。相似的还有“l”和“1”等。或者文件名为 explorer.com,由于默认不显示后缀,看上去一模一样,你能分辨吗?而且XP默认com的优先级高于exe,所以如果你在运行里输入 explorer回车后先执行的会是explorer.com,即那个病毒程序,恐怖吧。甚至有病毒会用pif后缀,即explorer.pif。pif 和exe、com一样,也是可执行文件,但他的扩展名即使你在文件夹选项里选择了显示文件后缀他都不会显示出来,具有极强的隐蔽性。(但在WinRAR等 第三方浏览器中可被查看到)所以如果你开启了显示后缀而发现某个正常的应用程序依然没有显示后缀的话你就要小心了。废话不多说了,讲规则:
expl0rer.exe 不允许的
exp1orer.exe 不允许的
explorer.exe 不允许的
expl0rer.exe 不允许的
explorer.com 不允许的
*.pif 不允许的
以上六条规则就可解决伪装explorer.exe的问题,pif文件普通计算机里一般都用不到,所以也禁用。其他诸如svchost.exe、rundll32.exe、spoolsv.exe等规则也相似,请自行编写。
路径规则主要就是以上5个大类,下面再大略地介绍一下新散列规则。所谓的散列规则,简单的说就是提取一个文件的特征信息,如版本、Hash等,然后根据这些信息判断是否是同一个文件。如图:
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/8/3/fonlan,20070908152121164.JPG');" src="http://images.blogcn.com/2007/9/8/3/fonlan,20070908152121164.JPG" alt="" border="0">
由 于识别原理的关系,文件散列识别的优点是不论文件名改为什么,只要是同一个文件都能正确识别。但他的优点也是他的缺点,如果用散列规则来实现以上的功能, 则如果WindowsUpdate更新了被保护的系统文件,文件版本发生了变更,安全策略就会阻止他的运行,造成系统出错。简而言之就是容易带来兼容性问 题。所以一般不使用“新散列规则”。
虽然用系统安全策略带来兼容性问题的可能性很小,不过还是有的,那碰到这些问题时我们该怎么办呢?其实系统已经帮我们准备了日志功能。如图,如果由于系统安全策略的原因导致某个程序无法运行,系统会弹出如下对话框:
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/8/3/fonlan,20070908154230848.JPG');" src="http://images.blogcn.com/2007/9/8/3/fonlan,20070908154230848.JPG" alt="" border="0">
这个对话框中其实已经告诉我们解决方法了,我们立即去控制面板的管理工具里打开事件查看器,其中的应用程序日志的第一篇一般就是了,双击那个日志,会弹出如下对话框:
'800')this.width='800';" onclick="if(this.width>=800) window.open('http://images.blogcn.com/2007/9/8/3/fonlan,20070908153926507.JPG');" src="http://images.blogcn.com/2007/9/8/3/fonlan,20070908153926507.JPG" alt="" border="0">
这 里面的C:\Program Files\*.exe就是出现兼容性问题的那条规则了,不过要注意的是如果你在建立规则时用的是环境变量,如%ProgramFiles%\*.exe 的格式,日志这里会把变量%ProgramFiles%替换为系统的实际路径,一般都是C:\Program Files,所以显示的依然是如上图的对话框。
知道问题出在哪里了自然就好办了,相应的规则删的删,改的改,这就随你们了。另外再提供我做的规则下载,下载后直接双击即可安装:
点此下载
Labels: computer security