防微杜渐
各们电脑爱好者们,你们好。如果我告诉你,我现在没装病毒防火墙,但我不怕"欢乐时光"(HappyTime)、不怕"红色代码"(RedCode)、不怕"尼姆达"(Nimda)、不怕你给我发HTML网页炸弹、不怕你发给我你精心做出来的恶意的帮助文件、不怕"冰河",不怕……,因为你有矛,我就有盾,我有对付你的偏方。因为我一直在思考防范你的方法,我从能做的哪怕一点小事上都在防着你,所以我能防微杜渐。当你在看到各大反病毒厂商在宣传某某病毒有某某厉害的招数时,你也要思考:我能给我的机器动点小手术,而使我的机器对这样病毒免疫吗?
也许大家还能回忆起一年半以前那只著名的"爱虫"病毒,当我听说到这只病毒是利用VBS大展拳脚时,我就在思考我能让它动不了吗?是的,的确能够,我的这个方法最早发表在2000年第44期《电脑报》上的《防范危险邮件》一文上,在《电脑爱好者》2002年第2期和《黑客防线》2002年第1期上的《需要防范的几个危险文件》一文基本上是照搬我的那篇文章,实际上真正在一年前就采用了该方法的人应该在后面数个病毒狂潮中都幸免于难。授人以鱼不如授人以渔,所以我要告诉你,我是怎么找到这个解决方案的。当我从反病毒厂商那里了解了"爱虫"的原理,知道它使用了WScript.Shell对象来防问注册表以后,我马上就想到可以卸掉Windows Script Host组件(Win98的用户应该采取这个方案),但是Windows2000下没有直接卸载的工具,于是我又想有没有手工删除的方法,通过反复实验,就有了《防》文中所说的用regsvr32 /u wshom.ocx和regsvr32 /u wshext.dll来禁掉WScript.Shell危险对象的方法。这个方法是可行的,但是这里还要修正一下,实际上《防》文中所说的regsvr32 /u wshext.dll这个操作是多余的,当然,这还不是最有效的方法,因为我后来我又发现更简单更有效偏方:
【偏方一】禁止Windows Script Host组件:把Windows目录下的Wscript.exe和cscript.exe放到别的地方或改个名字就行了,因为这样就连脚本病毒运行环境都没了,对于从来不和脚本打交道的普通用户这个方案是最可行的。
如果只想禁掉危险对象,而保留脚本运行功能,那么实际上有三个对象存在危险(就我所知),除了上面说的WScript.Shell,还有FileSystemObject和ScriptLet组件,前者可以访问文件系统,后者可以在硬盘上生成.HTA类型的病毒文件("欢乐时光"就采用这种方式),两个对象分别注册在scrrun.dll和scrobj.dll中,因此若要使用regsvr32 /u来反注册掉危险组件的话,那么应该把wshom.ocx、scrrun.dll、scrobj.dll三个都禁止掉,这也算是对《防》文的一点补充。
实际上"爱虫"之后出现了不少脚本病毒,如果采取了《防》文方案的朋友都应该没事。至于《防》中所说通过regsvr32 /u msoe.dll来禁掉Outlook发邮件对象,以防止病毒通过它来传播的方案实际上是错的,不好意思,当时我并没有仔细的求证,msoe.dll其实是Outlook Express的组件,禁掉它并不能防止病毒通过Outlook.Application(注意是Outlook不是Outlook Express)来发病毒邮件,正确的方法见偏方二:
【偏方二】禁止有发邮件功能的组件:同偏方一类似,禁掉Outlook.Application对象的最简单的办法是将Office安装的Outlook.exe改名。这可以有效防止大部分脚本病毒暗地里通过它来传播病毒邮件。不过,在装有IIS的NT和2000的机器上,还应该考虑病毒可能通过CDONTS组件来发邮件,所以装了IIS的朋友可以考虑用regsvr32反注册掉装在系统目录下CDONTS.DLL。
做过样的小手术是为了对你的朋友负责,网联网上已经爆发数次邮件病毒泛滥以至于使邮件服务器瘫痪的事件,所以说采取这样的方案也是对整个网络负责。而这个小手术并没让我们失去任何正常的发信功能,何乐而不为呢?
网联网带给了我们全世界的WEB,美好的HTML又使我们的WEB鲜活起来,但是病毒、炸弹也借着它们蜂拥而至,IE的漏洞也让我们吃足了苦头。对付这些东西,除了升级我们的IE、升级我们的防火墙外,我们还有很多事可以做。下面我就来说说我的偏方三:
【偏方三】小心使用我们的WEB功能:如果你不在乎失去一些美感,你可以象我一样不使用WEB方式的桌面、不显示文件夹的WEB内容,或者干脆把Window目录下的WEB目录给删除了。使用OE的朋友还要注意,当你用HTML格式写信时你的信纸里可能被写入病毒,要么你不使用HTML格式的信件,要么请打开OE的编辑HTML源文件功能(在"查看"菜单下),这样你还需要经常留意你信件的HTML源文件,如果一封空白的信里面却有百行以上的源文件,那么你千万别用HTML格式把它发出去,【偏方二】可不能禁止这样正常的发信,收到你信的朋友就可能和你一样遭殃了。
当然除了小心使用WEB功能,我们还应该IE设置的更安全些。这是一个很简单但很重要的工作,可是很少有文章提及。实际上IE默认的安全设置并不是最安全的,因为它要考虑更高的可用性,所以让我们来定制一下它的安全性设置,让IE更安全吧!
【偏方四】将IE设置的更安全:在IE里打开"工具"下的"Internet选项",到"安全"选项卡开始我们的手术吧。首先点击"Internet"区域,并将其自定义级别重置为"高",然后再点击"可信站点"区域,再点击"站点",在其中加入我们常去的我们可以信任的WEB站点的地址,并将其自定义安全级别重置为"中"。
采取这样的做法,是因为在你进入一个Internet站点前你根本就不知道这个站点安不安全,所以我们要认为所有没去过的站点都是不安全的,对这些站点要视同于"受限站点"并应该应用最高的安全性设置。这样就算一不小心进入了不良站点,由于它没有JS和VBS的脚本运行能力,没有Cookie,不能使用IFrame漏洞,就不会产生破坏。现在,有很多人有过被不良网站控制了IE的经历,这从网上诸如"IE设置恢复修改器"这类的软件下载人数极多这点上就可以看出来。其实只要简单地进行上面的操作,就能使这些站点和"受限站点"一样进行有效的预防。还有,在设置安全性级别的时候千万不能设置为"低",即使可信的站点,这是因为这种设置可以让站点为所欲为,你不想你的用户名和密码被可信站点知道吧,你不想可信站点在你机器上运行程序吧,所以可信的站点其安全级别也最好设为"中",这叫防人之心不可无。当然你甚至可以把"本地Intranet"的安全级别由"中低"设为"中",这样就不会有内容在你不知道的情况下运行了。
有很多病毒和炸弹程序在设计上为了短小精悍,并不是考虑得非常全面,它们往往认为Windows肯定在C盘下,Windows的外壳程序名肯定是Explorer.exe,认为启动目录肯定在C:\WINDOWS\Start Menu\Programs\启动\下,改变一下这些默认的东西也可以提高安全性。
【偏方五】使自己的系统和常规的系统不一样:一可以把Windows不装在C盘,至少不要用Windows做目录名。二我们可考虑把Explore.exe换个名字,大名鼎鼎的红色代码就是利用同名的Explorer留后门的!当然在换Explorer.exe的名字之前,win9x用户应该先将system.ini中的Shell=Explorer.exe换名再到DOS方式下给Explorer.exe换名;Win2K用户应该先修改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon中Shell的值Explorer.exe,再将Explorer.exe结束任务后再换名。三我们可以将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders和User Shell Folders下改Common Startup值改一下,这样就能让那些想当然往C:\WINDOWS\Start Menu\Programs\启动\中写入的后门都落空。
象【偏方五】这样的使自己的系统与众不同方法还有很多,但是对一个设计完善的病毒或炸弹来说这都只是小把戏,翻过这样的路障只不过需要一些额外判断代码而已,所以我们还要再设一个终级路障,那就是把一些常用的危险命令也做一番修改,《防》文也曾提到过要把象del,deltree,fdisk,format等命令改名,但这样一个个改很麻烦,二来自己用着也不方便,所以对Win9x的用户我再推存一个偏方:
【偏方六】让常用的有危险命令只有自己才能用:听起来很难,其实很简单,把Windows\command目录挪个位置比如挪到d:\myCmd,再在Windows目录下新建一个自动批处理文件,写入如下语句:set path = %path%;d:\mycmd回车,然后保存成Mydos.bat,以后每次要用DOS命令就先执行这个mydos.bat,也可以将开始菜单->程序下的"MS-DOS快捷方式"指向这个mydos.bat,这样绕了一个弯后,只有我们自己启动的DOS方式才知道命令在哪里找得到,安全多了。
对于Win2000的用户,尤其是做为服务器来使用,应该认真的学习一下安全常识,从管理好你们的权限,关闭不必要的服务,禁止不需要的端口这些常规正途上着手,而不是用这种偏方和花招,提高自己的安全技术实力才是正途。当然把cmd.exe改个名字还是有必要的,记得改了以后要把环境变量%ComSpec%也同时修改。
还有不要小看任何可以使你的系统更安全的方法,我下面还要推存《防》文中曾经谈过改文件关联的方法,再更全面地把它总结成如下的偏方:
【偏方七】:对打开后存在危险的文件类型修改其默认的"打开"动作。具体的做法以.vbs的VBScript文件为例:在资源管理器中选"查看"->"文件夹选项"->"文件类型",找到VBS文件类型,再选"编辑",然后将"操作"中的"编辑(E)"设为默认值。这样每次双击VBS文件,只是用写字板查看而不会运行它。若其原来没有编辑操作,我们可以自己增加一个默认的编辑操作,也把它设置成用写字板打开。和.vbs一样存在危险的文件类型还有:.WSC、.WSF、.VBE、.JSE这样的脚本文件类型,如.SHB、.SHS这种很少见到的碎片文件(它存在可以调用任意程序的漏洞),至于象.hlp、.chm、.lnk、.pif这样虽然存在危险,但由于太常用,改了以后用起来不方便的文件类型我们可以不改,但要提高警惕,把它们也看得和.exe文件一样危险是不错的。
要是再思考得深一步,对默认就是编辑操作的文件类型也不能掉以轻心,比如.txt这样的文件类型也可以新建一个"编辑"操作,再将默认的"打开"动作改成"编辑",因为象"冰河"这样修改文件关联的后门程序就是冲着你的原来默认的open动作来的(至少对冰河现在的版本来说是这样,但冰河稍加修改完善,我们的这个方法就行不通了,所以我希望冰河的作者永远不要看到这篇文章,呵呵)。这些操作也可以通过修改注册表来完成,比如对.exe文件类型(不仅是"冰河",还有很多本马都会修改它)就只能在注册表里改,你可以参照别的文件类型来修改它。
象这样很简单的,病毒和炸弹很容易就可以突破的小路障,却很实用。我最早使用这个方法的时候还没出现"欢乐时光"这样的病毒,但这个方法却还是防止了后来的"欢乐时光"病毒调用默认执行动作来交叉感染(我朋友的一台机器做过这样的小手术,所以中“欢乐时光”时,只是每隔10秒弹出一个写字板,里面写的就是help.vbs的病毒源码,让我们的确“欢乐”了一把)。我把这个最简单的手术放在最后,就是要说明哪怕一个简单的方法,只要可行就应该尝试,这样才能真正做到防微杜渐。
最后要说的是,有这样的小手术技术、这样的偏方肯定还有很多,我们完全可以自己摸索总结出来,以上东西绝大部分就是我摸索出来的,只要你也开动脑筋,你也会发现这样偏方。其实提高我们系统的安全性的方法,并不一定非要等安全厂商来给我们提供,有时我们找出的方法也很实用(厂商们是不会看得起这样的"歪门邪道"的)。当然,这里我还是希望大家千万别学我,为了系统更安全一定要装一个防火墙!(我也有过血的教训)。
以上的方法称不上专利,所以如果有人要推广、改进、增加这类的方法,或者把它做成软件,我举双手赞成,不过记得帮我也宣传一下,呵呵,叫我大熊,AdamBear都行,有问题可以给我来信:xcbear@netease.com
联系方式
姓名: 熊超
家庭住址: 湖北省武汉市青山区钢花东村110街4门1号
邮政编码: 430080
EMail:xcbear@netease.com