本帖最后由 柯林 于 2010-1-22 11:57 编辑
第三章:如何防御病毒
病毒防御,原理上说很简单——阻止病毒文件的创建,阻止或者破坏掉病毒行为,就防住了病毒。如果把病毒文件的创建也归入病毒行为之一的话,那就只需阻止病毒行为即可。 哪些是病毒行为?归纳网上各种病毒分析,主要的大致有这么一些: 1、创建病毒文件到备份文件卷,有机会就运行。 2、创建病毒文件到回收站,有机会就运行。 3、创建病毒文件到磁盘根目录,同时在磁盘根目录创建一个autorun,.inf驱动文件指向病毒,当用户双击磁盘时在后台自动运行病毒。 4、创建病毒文件到windows目录下并运行。 5、创建病毒文件到system32目录下并运行。 6、创建病毒驱动文件,或者改写系统里面的驱动文件。 7、.修改用户hosts文件,实现网址重定位,让杀毒软件等无法连接服务站点更新病毒库,把用户的访问劫持到病毒网站下载病毒。 8、假冒系统进程或文件。修改、删除、替换系统文件,让系统无法正常运行或者无法进入系统,严重时让系统彻底报废。
9、通过修改、替换的方式感染系统目录下的可执行文件,甚至是整个磁盘上的可执行文件。
10、修改注册表,添加病毒自启动键,修改IE的相关设置以便把IE首页指向病毒站点或者是给IE添加各种插件,修改系统重要设置以进行破坏——映像劫持、禁用安全模式等。 11、在开始菜单的启动里添加项目,以便下次开机随系统启动病毒。 12、在windows下的Tasks里添加计划任务,让病毒在计划好的时间运行。 13、通过修改其它进程内存、创建远程线程、安装全局钩子的方式注入其它进程。钩子可以截取信息,可以阻断信息的传递,还可以修改信息再转发给目标进程实施欺骗。 14、通过底层操作来窃密或者执行破坏——底层屏幕访问可以截屏,底层键盘记录可以窃取用户帐号、密码,底层磁盘访问可以读取磁盘上存储的信息、文件,可以写入病毒文件或者格式化磁盘。 15、结束某个进程,以便启动一个假冒的病毒进程来替代,或者是结束杀软防火墙等安防软件的进程而使其功能失效。 16、调用系统高危程序来达成病毒目的。例如调用cmd.exe,rundll32.exe,net.exe等来执行修改可执行文件、运行dll、停止或启用某项服务等。 17、利用系统功能实现病毒目的。例如,访问COM接口使用系统组件;访问服务管理器来注册自身服务——比如在服务管理器(scm)里注册自身为通过svchost.exe加载的服务dll组件之一。 18、连接网络,下载病毒文件,把窃取的信息上传给病毒作者。 粗略统计,大致上有这18种行为。只要用规则控制或者阻止这18种病毒行为,基本上就能够防住90%以上的病毒,这就是克毒保本的“降龙十八掌”。 病毒要达到它自身的目的,必须保证病毒行为的顺利进行。要有行为就必须有主体,这个主体就是病毒文件。病毒文件包括可执行文件和一些配置文件、数据文件等,我们需要防范的主要是可执行文件——主要有exe、dll、sys、bat、com、pif、vbs、autorun.inf等文件。如果你留心病毒分析报告,统计一下,你会发现,病毒主体90%都是exe文件和dll文件,在它们运行的过程中,会释放sys驱动文件、bat批处理文件、autorun.inf驱动文件…… 病毒主体一旦成功创建并激活运行,就会有一系列的后续动作产生——修改、创建exe、dll、sys等文件,访问服务管理器添加服务或加载驱动,修改注册表以实现自启动,添加开机启动项目,添加任务计划,注入其它进程,底层访问磁盘、屏幕、键盘,修改hosts文件…… 如果,我们能够阻止病毒文件的创建,后续的一系列行为及危害就不会产生,这就叫做入口防御,主要是FD的规则。(入口防御并不仅仅指FD的文件创立,它还包括AD及RD方面的病毒早期行为,一句话,能够在病毒行为的早期就实施拦截,让病毒的后期行为无法完成,这就叫入口防御)这是一种防御思想,叫做早期防御。 相应地,还有一种防御思想,假设我们能够限制或破坏掉病毒的行为,让病毒即使运行起来也无法干坏事——比如,病毒要调用cmd.exe不让它调用,要往系统目录下创建文件不让它创建,要修改exe等可执行文件不让它修改,要访问注册表不让它访问……这是另一种防御思想,叫做后期防御。 如果把早期防御与后期防御结合起来,就能实现双保险。不过,有人认为这样是功能重叠属于浪费行为,提倡早期防御与后期防御的相互配合与互补——合理安排搭配,有些方面放到早期防御,有些方面放到后期防御,这一方遗漏的由另一方来弥补。 究竟采用哪种方式,完全由个人喜好来决定。至于效果,最终要落实到规则上来。 在整个病毒防御的实施过程中,我们实际上需要考虑的有两个方面—— 第一个方面,对未知程序的风险判断,防止病毒创建和运行: 前面已经说过,D+的甄别过滤,是依据“计算机安全规则”里设定的规则来进行的。打开“计算机安全规则”,里面已经设定好了规则的,是已知程序,未知程序没有对应规则将会交由全局规则来处理。 打开全局规则,你会发现,全部选项都是询问,没有例外允许的内容。如果你的功力够,凭据全局规则的监控询问,完全可以通过弹窗来阻止病毒的入侵和作乱。 依据何在呢?请打开D+→“常规设置”→“我的受保护文件”:
看上图,可执行文件和系统重要文件已经列入了监控范围。如果一个未知程序想要创建或修改一个exe文件,comodo的全局规则将根据“我的受保护文件/可执行文件”里的受保护项*.exe弹窗询问,如果你并没有下载一个exe文件,也没有安装一个程序,毫无疑问,这是极不正常的行为,你应该阻止那个exe文件的创建,通常情况下正常程序是不可能去修改一个exe文件的,何况这还是一个未知程序,所以无需多言,你也应该阻止。同理,如果一个未知程序想要添加一个开机启动项,全局规则将根据上图中“开始目录”下的C:\Documents and Settings\All Users\「开始」菜单\程序\启动\*这条规则弹窗询问,你点阻止就拦截了它。如果一个未知程序想要删除系统盘上的?:\ntldr文件好让你下次开机进不了系统,全局规则将根据上图中“重要的文件/目录”下的?:\ntldr这条规则弹窗询问,你点阻止就让它的阴谋不能得逞。 这样看来,拦截病毒不也是很简单?默认规则貌似已经很不错。是的,只要你会判断,采用安全模式的默认规则,对于未知程序的恶意行为是能够拦截的。事实上,很多高手就是这样使用来测试病毒的。 对于不熟悉正常行为与恶意行为的甄别判断的新手,担心误点允许导致恶劣结果,那么,适当地修改一下全局规则,让它自动判断和过滤掉一部分内容,一来保证了安全度的提高,二来减少了弹窗,你应该是乐意的吧? 既然是修改全局规则,事情就变得很简单了——打开全局规则的编辑画面,找到对应的项目,把自己想要实施的拦截内容添加到例外阻止里,就有规则帮你自动把关拦截了。 回顾18种病毒行为,哪些是我们可以添加到全局规则里自动拦截的呢? 系统备份还原,是由svchost.exe来进行的,comodo已经将svchost.exe划为系统更新程序——允许操作和改写系统文件,svchost.exe操作备份文件卷的行为已经在全局规则之上提前允许,剩下来的,有哪个程序是需要往备份文件夹卷里创建、修改、删除文件的呢?没有!这就好办了,阻止未知程序改写备份文件卷:全局规则→访问权限→受保护的文件/目录→修改→阻止的文件/文件夹→添加?:\System Volume Information\* 如果,已经有病毒文件创建到了备份文件卷里,那么,应该阻止任何程序去启动或调用它:全局规则→访问权限→运行一个可执行文件→修改→阻止的应用程序→添加?:\System Volume Information\* 通过这两条FD和AD规则的限制,未知程序的第一种病毒行为就被拦截了,不再需要弹窗询问交由用户选择。怎么样,是不是很简单? 其它那些病毒行为的拦截,也用同样的方法处理即可。不过,要分析权衡,灵活处理。例如,大部分病毒,会创建exe和dll文件到C:\WINDOWS路径下和C:\WINDOWS\system32下,如果你不考虑安装软件的问题,完全可以进行FD限制:全局规则→访问权限→受保护的文件/目录→修改→阻止的文件/文件夹→添加%windir%\*.exe及添加%windir%\system32\*.exe等规则。如果要考虑程序安装,那就不要这样弄了,反正comodo已经把exe和dll等可执行文件列入了监控名单,有未知程序企图创建、修改、删除windows下面及sysytem32下面的exe及dll等文件,comodo会弹窗询问,你只要知道,如果不是正在安装程序,有谁要创建、修改这两个路径下的可执行文件,那么90%的可能性就是病毒,直接点阻止即可。 这里注意几个小问题: ①comodo的通配符支持,官方没有清晰的说明,论坛上交流的经验大部分是个人摸索的结果。%windir%\*.exe的写法是否包含了%windir%\system32\*.exe?自己验证一下。 %windir%\*的写法是包含了整个windows目录里的所有文件——涵盖任意层子目录下的可执行文件及非可执行文件。 ②comodo是不防文件夹的创建的。 ③一般情况下,不建议在AD的运行程序的规则中添加优先阻止%windir%\*.exe或%windir%\system32\*.exe的规则,至于禁运%windir%\*更是属于自杀行为。如果你没有在全局规则之上排除干净系统进程对系统目录下的可执行文件的调用,可能会导致系统出错、死机、开机无法进系统。 一般来说,当我们搭配一款杀软使用时,就没有必要考虑安装程序了,安装软件时禁用D+即可。这样的话,FD可以阻止%windir%\*.exe和%windir%\*.dll,顺便再阻止%windir%\*.sys和%windir%\*.com 再添加一些可添加的拦截规则,做个具有初等强度的防御方案吧。 病毒喜欢到回收站里藏身,那就全局规则→访问权限→受保护的文件/目录→修改→阻止的文件/文件夹→添加?:\Recycle?\*,但是这样一来,执行删除操作移动到回收站里的以D打头的正常文件也禁止创建了,没关系,利用规则优先级关系来排除——全局规则→访问权限→受保护的文件/目录→修改→允许的文件/文件夹→添加?:\Recycle?\D*即可。回收站病毒的防御,其实可以换个思路——我不管你在回收站里创建什么文件,我只要禁止回收站里的文件运行即可。 磁盘根目录,是熊猫等U盘感染性病毒喜欢的藏身之地。不用说了,FD添加优先阻止?:\*.exe和?:\autorun.inf即可。等一下,这样行吗,没问题吗??:\*.exe的写法不是包含了任意盘符根目录开始到任意层子目录下的所有exe文件,当自己移动、复制一个exe文件不也受限了吗?检查explorer的规则,发现comodo自动配置的规则已经允许explorer访问受保护的文件/目录,根据规则流程,explorer不受影响,没问题。但是这样的规则,将导致浏览器和快车等下载工具无法下载exe文件到本地磁盘上,暂时不考虑它。 如果磁盘根目录下已经创建了此类病毒,要防止它运行,是不是在AD规则的运行程序里写上优先阻止?:\*.exe即可?不要这样写,如果系统程序及应用程序没有排除干净,?:\*.exe实际包含了任意盘符根目录开始到任意子目录的exe文件,连系统盘都包括在内,那要出问题的。所以,暂时不管这个,限制autorun.inf吧——全局规则→访问权限→设备驱动程序安装→修改→阻止的驱动→添加?:\autorun.inf。 再限制一下hosts文件的修改:全局规则→访问权限→受保护的文件/目录→修改→阻止的文件/文件夹→添加%windir%\system32\drivers\etc\hosts【这样设置之后,如果自己要用记事本打开hostst编辑屏蔽网址,要么在记事本的规则里排除,要么暂时禁用D+】 一般来说,是不会往计算机里创建修改bat文件、pif文件、cmd文件、cpl文件、scr文件的:全局规则→访问权限→运行一个可执行文件→修改→阻止的应用程序→添加*.bat和*.cpl以及*.pif以及*.cmd以及*.scr 病毒最爱调用的cmd.exe、net.exe等高危程序加以阻止:全局规则→访问权限→运行一个可执行文件→修改→阻止的应用程序→添加%windir%\system32\cmd.exe,%windir%\system32\conime.exe,%windir%\system32\cscript.exe,%windir%\system32\net*.exe,%windir%\system32\wscript.exe,%windir%\system32\debug.exe,%windir%\system32\format.*,%windir%\system32\reg*.exe,%windir%\system32\sc.exe,%windir%\system32\taskkill.exe,%windir%\system32\tasklist.exe Com接口也是很需要防范的,就把“伪COM接口——特权端口”列入阻止吧,其余的监控:全局规则→访问权限→受保护的com接口→修改→阻止的com接口→添加→com组→伪COM接口——特权端口 这里顺便解释一下这几个特权端口: LocalSecurityAuthority.Backup ………………备份 LocalSecurityAuthority.Restore ………………还原 LocalSecurityAuthority.Debug ………………调试提权 LocalSecurityAuthority.Shutdown ………………关闭系统 LocalSecurityAuthority.SystemEnvironment ………………检测和设置系统环境,Environment类主要是用来提供有关当前环境和平台的信息以及操作它们的方法 LocalSecurityAuthority.SystemTime ……………………系统时间 注册表,限制一下自动运行和IE设置及系统设置等比较重要的捡几项防治一下,其它的监控:全局规则→访问权限→受保护的注册表键→修改→阻止的注册表键→添加→ Comodo键 *\Software\Microsoft\Windows\CurrentVersion\Run* *\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\* *\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run *\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page *\SOFTWARE\Microsoft\Internet Explorer\Main\Search* *\SOFTWARE\Microsoft\Internet Explorer\Main\Default_Page_URL *\SOFTWARE\Microsoft\Internet Explorer\Main\Default_Search_URL *\SOFTWARE\Microsoft\Internet Explorer\Main\Search Bar *\SOFTWARE\Microsoft\Driver Signing\Policy *\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options* *\SYSTEM\CurrentControlSet\Control\SafeBoot* *\SOFTWARE\Policies\Microsoft\Windows\Safer* 好了,这样简单设置一下,自动拦截过滤以对抗未知恶意病毒的能力加强了(上面所述设置截图如下): 注意,这样设置后,不仅未知程序受影响,位于全局规则之下的已知程序规则也受影响。如果极个别程序因此无法正常使用,请把其规移动到全局规则上添加优先允许加以排除。 全局规则中添加病毒黑名单来加强过滤,也是一个可以参考的方法。黑名单的缺陷是——病毒程序日新月异,黑名单需要与时俱进,实际上并不是一个理想的方法,如果喜欢这种方式,可以针对一些著名的病毒做一下即可,例如灰鸽子、威金、磁碟机、机器狗、猫癣……黑名单对于可安装软件的规则来说是有用的,著名病毒及流氓软件放进黑名单,可以在安装软件的过程中执行过滤。新手搭配杀毒软件来用的,可以不用理会这个问题。
第二个方面,已知程序的防控
从HIPS的角度来说,除了HIPS本身,无法确信哪一个程序是绝对安全的。任何一个程序,如果给予全部授权的话,HIPS对它的监控基本上已经不存在了,它爱干什么都可以。为了防止病毒对它进行控制来做坏事,除了加强对未知程序的监管之外,对于所给予的已知程序的规则要做适当的调整。
凡是权限太大的,没有约束的行为,都要进行规则调整。具体的操作,请参看第二章里的程序授权自己把握,原则上以消除隐患为目标,以不妨碍正常使用为度。这种调整,属于深入打磨的话题,下一章会专门进行讨论,这里简单提一下。调整规则来削权限制,不仅可以防止程序被病毒操控,还可以防止程序本身的流氓行为。
上述对未知程序和已知程序的监管,都是从D+上来考虑的,对于喜欢联网作怪的木马病毒来说,除了用D+进行源头上的扑杀,还有一道坚固屏障——防火墙。
如果木马程序已经存在并被允许运行,只要防火墙切断它的联网,它弄到的情报也没法外送,危害还是不能发生。这样讲,并不是说防火墙就是万能的,事实上最好的防御方法还是源头防御——让本机干干净净的没有一个病毒木马。当然,防火墙对于联网病毒木马可以起到最后的限制作用。
如何用防火墙防止联网的病毒木马?答案再简单不过——禁止病毒木马联网。对于自己拿不准的未知程序,可以先阻止,待确认无害后再改成允许。
防火墙规则怎么做?如果你对防火墙方面有所了解,制定规则是很简单的事情。如果对防火墙方面不了解,可以用最简单的办法处理——依据自己的使用情况,选择一个适合的隐身模式设置一下,剩下的交由弹窗处理。隐身模式的设置参考下图:
像上图这样设置一下之后,剩下的可以借助弹窗完成——当一个程序想访问网络时,comodo会弹出询问框,不想让它上网的就阻止,想让它上网的就允许。comodo会根据程序的要求,对程序访问运程端口以及开放本机端口寻求你的意见,你可以视需要选择允许或阻止。注意:除了QQ和p2p软件,一般的程序是不需要开放本机端口的。
顺便再完善一下,svchost开放135端口是危险的,改成阻止;如果你是外网,无须共享本机资料,system开放的139、445及137、138端口改成阻止:
病毒防御基本上就是这样子。对于U盘病毒,如何防范呢?你只须以U盘路径写一条全部阻止的规则即可,假如你的U盘盘符是H,你就写一条H:\*全阻止【从运行程序到键盘全部都是阻止】的规则,把它放到全局规则之上即可。
病毒防御,实际上并不难,无非是针对病毒行为进行拦截即可。病毒有些什么行为?可以观看病毒分析贴——论坛上大小姐发布的病毒分析贴,网络上各大安全厂商发布的病毒播报及分析,都是很好的资料。
章末总结: 病毒防御,从未知程序和已知程序两方面的规则上来监管,主要防御对象是未知程序。
典型病毒行为,遗漏了一个网马——除了使用浏览器下载exe文件,一般IE缓存和临时文件夹是不会生成exe等可执行文件的。为了可以正常下载exe文件和程序安装,可以禁止IE缓存运行程序,监控IE缓存生成exe文件,临时文件夹运行程序可以监控询问。 细致分析,病毒行为还有很多,例如,system文件夹里是不可能有exe文件的,有则为病毒;C:\WINDOWS\Fonts里是不可能有exe、dll等文件的,只有字体文件,有些病毒会冒充字体文件……用心搜罗,会积少成多的。概括来看,18病毒行为再加一个IE缓存和临时文件夹监管,基本上已经全了。
|