【IT168 专稿】为了躲避杀毒软件的围追堵截,一些病毒作者开始把病毒或者木马程序,做成DLL文件。在Windows操作系统中,由于系统运行的需求,必须加载一些DLL文件。病毒或木马程序伪装成DLL文件之后,不仅可以躲过杀毒软件的严密监控,还可以麻痹一些对电脑非常精通的高手。因为精通电脑的高手可以通过进程,以及网络端口判断是否存在病毒,伪装成DLL的病毒,不会出现在进程中,网络端口也会隐藏起来。正因于此,DLL病毒堪称最难对付的一类病毒。
对于DLL病毒,如何发现,清除并做出相应的防范措施呢?世间万物都有缺点,DLL病毒也不例外。只要对DLL病毒有一个非常透彻的了解,发现DLL病毒并不难,清除也很容易。
DLL病毒的原理及特点
提起DLL文件,或许很多用户并不陌生。DLL的全称是Dynamic Link Library,中文叫做“动态链接文件”。在Windows操作系统中, DLL对于程序执行是非常重要的,因为程序在执行的时候,必须链接到DLL文件,才能够正确地运行。而有些DLL文件可以被许多程序共用。
DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。在Windows操作系统中,DLL负责在Windows操作系统下可以运行的程序提供代码、数据或函数。在日常的使用过程中,程序会根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。更重要的是,DLL文件是无法删除的,尤其是Windows系统的DLL文件,因为Windows系统自带DLL文件检测恢复功能。
DLL病毒其实也是一个DLL文件,它会插入到某个可执行文件中,使DLL文件可以执行,这样,病毒就可以随着系统的启动而自动运行了。由于病毒仅仅是调用某个可执行文件达到运行,系统管理器不会有其进程,也没有其占用的网络端口,非常高的隐蔽性,是DLL病毒的一个特点。加之一些DLL病毒作者,经常把病毒插入到系统文件中,一旦删除,系统就会瘫痪,致使DLL病毒很难清除,这是DLL病毒的又一特点。从DLL病毒的原理不难看出,DLL会借助某个可执行文件启动,虽然难以清除,而且非常隐蔽,但这是清除DLL病毒的一个方向。
DLL病毒的常用清除方法
由于DLL病毒有非常高的隐蔽性,不易被清除,基于DLL的病毒或木马特别流行。要想准确的清除DLL病毒,还需要了解DLL病毒的常用启动方法,因为启动过程,就是调用可执行文件的一个过程。
1、单独编写的DLL文件病毒:这类病毒是最容易被清除的DLL病毒,其原理也非常简单。病毒作者编写一个DLL文件,然后通过注册表的Run键值或者其他可以被系统加载的地方启动。
2、替换系统文件的DLL病毒:病毒作者把病毒代码做成一个和系统匹配的DLL文件,并把原来的DLL文件改名。遇到应用程序请求原来的DLL文件时,DLL病毒就启一个转发的作用,把“参数”传递给原来的DLL文件。通过偷梁换柱的方法,DLL病毒堂而皇之的在用户电脑中活动。
3、动态嵌入式DLL病毒:这类病毒,可以在系统进程运行的时候,通过一些方法,进入系统的进程中。由于系统进程无法终止,动态嵌入式的DLL病毒很难清除。
无论使用哪种方法启动,DLL病毒都需要借助一个可执行文件来启动,这也就是程序员俗称的“Loader”。只要DLL病毒启动了,就会通过注册表中的启动选项加载,还要知道DLL病毒的源文件名字。下面,我们以臭名昭著的守护者(NOIR—QUEEN)DLL木马为例,介绍一下DLL病毒的清除方法。
第一步:查找DLL木马的Loader:守护者(NOIR—QUEEN)会以DLL文件的形式插入到系统的Lsass.exe进程中,由于Lsass.exe是系统的关键进程,不能被终止。这种情况下,我们必须查找守护者的Loader。
使用“进程猎手”工具查看Lsass进程所调用的DLL文件,并与感染病毒前的信息比较,可以发现Lsass进程中增加了“QoSserver.dll”文件。通过操作系统自带的文件搜索功能,查找到了QoSserver.exe文件,这就是守护者的Loader。
第二步:结束相关进程:感染了守护者病毒,在任务管理器中会有一个QoSserver.exe进程,强制结束这个进程。并在“服务”选项中,找到该项服务,并将其禁用。
第三步:清理注册表:利用注册表中的查找服务,查找“QoSserver”关键字,并且将其键值逐一删除。
所有操作完成之后,重新启动计算机,然后逐一检查守护者是否被清理干净。这样,我们就可以手工清除DLL病毒。由于DLL病毒类型不同,其清除方法也有所差异。不过,其步骤都是相同的,先用工具软件查找DLL病毒的Loader,然后针对具体情况采取不同的措施清除病毒。
不难看出,DLL病毒的清理相当的复杂,而且一些比较顽固的DLL病毒,一次很难清理干净。对于一些隐蔽性非常强的DLL病毒,杀毒软件没有查杀能力,如何才能防范DLL病毒的感染呢?
DLL病毒的防范
尽管DLL病毒非常隐蔽,而且不易被发现。可是,DLL病毒只要运行,就会生成DLL文件,并且有Loader,找到了Loader,也就相当于找到了DLL病毒。下面介绍一下DLL病毒的常用防范方法。
1、备份DLL文件:DLL病毒通常会释放在Windows\system32目录中,这也是系统DLL文件的所在目录,建议用户最好把该目录下的DLL文件备份一下。如果不备份,可以将文件名备份一下,备份方法如下:在DOS提示符下,执行:dir *.exe> listexe.txt & dir *.dll>listdll.txt,这样,就会把所有的EXE名字和DLL文件名字备份到listexe.txt和listdll.txt中。如果发现系统异常,可以再执行上述命令,生成listexenew.txt和listdllnew.txt文件,使用FC对比命令,可以发现新增加的文件,这有可能就是DLL病毒的Loader。
2、查看DLL文件调用情况:使用诸如Windows优化大师中的Windows 进程管理器,查看进程到底调用了什么DLL文件。同时,结合上边用FC命令比较出来的结果,可以检查系统是否感染了DLL病毒。
3、查看网络端口打开情况:DLL病毒虽然非常隐蔽,但只要工作,也会占用一个网络端口。尤其是一些DLL木马程序,经常需要与服务端连接,自然需要占用一个网络端口。在DOS提示符下,可以用netstat -an来查看所有TCP/UDP端口的连接,如果发现可疑连接,则证明系统可能感染了DLL病毒。不过,使用网络端口查看系统是否感染DLL病毒,需要用户大家对当前系统打开的端口非常熟悉,并对netstat -an中的state属性有所了解。
4、定期检查自动加载项目:DLL病毒要运行,必须加载,而加载位置,无非是在注册表,Winstart.bat,Autoexec.bat,win.ini,system.ini,wininit.ini,Autorun.inf,Config.sys等文件中。定期检查这些文件的加载内容,也可以有效的防范DLL病毒的入侵。除此之外,系统的服务也是病毒加载的一个位置,也要仔细检查,而这需要用户对系统默认的服务要有非常透彻的了解。一旦发现系统服务有可疑项目,确认之后,禁用该服务,然后删除相关的文件。
其实,只要对操作系统有一定的了解,再了解了DLL病毒的工作原理及特点,平时多多细心检查,基本可以杜绝DLL病毒的入侵。
结束语:民间有句俗语说得好,“卤水点豆腐,一物降一物。”DLL病毒虽然难对付,只要找对方法,照样轻松的找到DLL病毒并查杀。只要在使用中勤查看,多比较,即可社绝DLL病毒事件的发生。