什么是DLL注入木马?就是利用DLL文件,插入系统关键进程中,通过系统进程调用启动运行的木马。DLL文件是Windows中的库链接文件,是Windows系统中许多驱动和程序运行时必需的文件。DLL文件与EXE文件不同,是不能直接运行的,简单地说,所谓的DLL木马就像是一个寄生虫,寄宿在某个重要的系统进程中;单独的DLL文件是无法执行的,就像寄生虫离开了宿主无法存活一样,DLL木马必须通过宿主来调用DLL文件,实现远程控制的功能。但正是由于DLL文件注入到系统进程中的特殊性,因此很难为一般的杀毒软件查杀掉。
举个例子,大家可以打开KV2007的进程查看器,任意选中一个进程,点击右键,选择“模块列表”命令,在弹出的对话框中,就可以看到此进程调用的各种模块信息(如图)。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161329471.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161329471.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
在这些模块中,有可能就有DLL木马模块。正是由于DLL木马隐藏在进程中,而不是作为一个单独的进程,因此很难检查出来。既使查出了木马,也很难成功地清除掉。为什么呢?因为有些DLL木马被进程所调用,要删除DLL木马文件中时,往往会提示该文件正在使用中,因此无法删除。只有结束掉被DLL木马注入的进程,才可以成功删除该木马。但如果某些DLL木马注入到如“csrss.exe”或“winlogon.exe”之类的进程中(例如曾经非常流行的“黑客之门”木马),一旦结束这类进程时,就会造成系统重启。因此木马也成了顽疾,再也无法清除掉。而且,DLL木马有一个得天独厚的优势,那就是它借助于隐藏在正常的系统进程中,因此可以突破网络防火墙,被黑客或恶意攻击者连接控制。例如,假设某个DLL木马注入到了IE进程中,当木马连接远程控制端时,防火墙会认为是IE进程在使用网络,因此就会放进,导致隐藏在其中的DLL木马得以无阻碍的穿透网络。
也许“熊猫烧香”、“ANI漏洞木马”等木马病毒攻击事件,仅仅是造成一阵病毒攻击潮,那么DLL插入类木马,才是在真正地一直威胁着众多的电脑用户!
典型的DLL插入式木马——“上兴远程控制”
可能大家还是对DLL木马不太了解,这里举个例子,介绍一款叫作“上兴远程控制”的木马,看看这类木马有多恐怖,如果你的系统中被植入了这样的木马,该怎么办?
“上兴远程控制木马”是一款极强大的DLL注入木马,支持域名反弹连接进行远程控制,可以注入到各种系统程序中,可以有效穿透防火墙,并且不为杀毒软件所查杀。上兴木马之所以可以兴风作浪,其关键在于该木马的配置上。在木马的“安装设置”选项中,“DLL名称”处就是木马生成的DLL文件,默认为“rejoice.dll”;在“宿主进程名”中就是木马要注入的系统进程,可以选择为“explorer.exe”或“iexplore.exe”(如图2)。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161329326.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161329326.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
假设选择注入的是“iexplore.exe”,这是IE浏览器的进程,我们尝试在自己的电脑上运行了生成的木马,可以看到控制端可以操纵中了木马的电脑,能够轻易获得其主机的IP地址、主机名、Ping值等,并且可以进行各种远程控制、轻易地上传下载或删除被控制主机硬盘中的文件,可进行系统管理、远程Shell、屏幕捕捉、键盘记录等(如图3)。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161329661.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161329661.jpg" width=700 onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
此外,上兴木马还提供了远程屏幕控制(如图4)、摄像头监控、键盘记录等功能,让电脑用户的个人隐私和机密数据等赤裸裸地展现在“黑客”的面前!
通常情况下,运行杀毒软件会报警提示发现病毒,但是使用杀毒软件进行清除病毒时,却无法杀掉木马病毒文件“rejoice.dll”和“rejoice0.dll”;换成手工清除删除病毒,也无法删除病毒文件——这是由于DLL木马文件嵌入到了正在运行的系统进程中,正在使用中的文件是无法删除掉的! 当然,仅仅是嵌入到“explorer.exe”或“iexplore.exe”进程中的DLL木马,还是很容易清除的,只要结束这两个进程再删除木马文件即可,或者在重启时删除病毒文件即可。但是,如果是注入到“svchost.exe”、“smss.exe”、“csrss.exe”或“winlogon.exe”之类的进程中,结束进程的结果就是死机重启!尤其是象NameLess BackDoor、黑客之门之类特殊的DLL木马,还可以实现端口复用、注册为系统服务、多线程守护等,使得DLL木马的隐蔽性更高,查杀难度更大。而且经过免杀的DLL木马,不为杀毒软件检测到,因此更不易被察觉。
日常操作中如感到整体系统速度变慢,尤其是在聊天办公之类打字时会有延迟的感觉及打开网页慢,甚至丢失游戏或QQ密码帐号、文件被删除或修改时,就需要重点检测DLL注入类木马了。
江民防火墙虽然不能直接拦截DLL木马与外部的通信,但是它能够显示本机与外部通信的所有连接。一般来说,只有当我们打开一个网页时,才会有“iexplorer.exe”进程与网页服务器进行连接,如果中了灰鸽子或上兴之类的DLL木马后,不论访问网页还是不访问网页,本机上都会有一个“iexplorer.exe”进程监听连接远程服务器的某个端口。也就是说,我们关闭所有的IE浏览器窗口,再点击江民防火墙面板上的“程序网络状况”按钮,展开本机程序网络状态列表。如果在其中发现有IE浏览器进程“iexplorer.exe”,而且该进程长时间连接到同一个主机的80或8181之类的端口(如图),那么就可以初步断定,发起这些连接的绝对不是IE浏览器,十有八九它就是木马。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161416563.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161416563.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
——当然了,DLL木马不一定都注入到“iexplorer.exe”进程中,也可能注入到其它进程中。但是这些木马绝大部份是通过80、8080或8181等几个端口反弹连接的,因此通过江民防火墙检测网络连接时,只要足够细心,都可以找出DLL木马隐身的宿主进程。特别是发现“Windows Explorer”进程连接网络端口时,基本上可以肯定是中了DLL木马(如图),因为此进程是资源管理器的,不可能连接网络。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161416159.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161416159.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
找到木马宿主进程后,这里以“iexplorer.exe”进程为假设,在KV2007中,点击菜单“工具”→“进程查看器”,打开进程查看器对话框
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161416981.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161416981.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
在其中找到“iexplorer.exe”进程,右键点击该进程后,在弹出菜单中选择“模块列表”命令,打开模块列表就可以检查该进程中的模块是否安全、是否有DLL木马注入其中
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161416484.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161416484.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
当然,许多用户没有经验,看不出可疑的模块来,因此可以勾选“隐藏标记为Micorsoft的模块”项,所有正常的模块就被隐藏了,而上兴木马的DLL模块“rejoice.dll”就赫赫然显示在你的眼前了
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/200751516153846.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/200751516153846.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
此外,在“进程查看器”中,还可以直接检测出新版的上兴木马2007及其它一些冒充的DLL注入木马进程(如图)。另外,利用KV2007的未知病毒检测功能,也能有效地检测出DLL木马模块
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161538588.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161538588.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161538994.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161538994.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
查找到DLL木马文件,并定位了注入的宿主进程,就可以开始清除DLL木马病毒了。清除的实质很简单,主要就是删除掉DLL木马文件,禁止掉DLL木马的调用,不过在实施的时候却不是那么的简单,比如清除时会出现桌面消失、重启等现象。对于可检测的已知木马,KV2007可以在扫描到后智能地自动结束掉相应的宿主进程,直接删除。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/20075151615384.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/20075151615384.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
对于未知的DLL木马,可以关掉所有IE窗口,或者用KV2007的“进程查看器”结束掉“explorer.exe”进程,然后直接找到DLL文件进行删除就可以了。不过在通过任务管理器结束掉"explorer.exe"进程时,电脑桌面的所有图标会消失掉,剩下的只是黑黝黝的屏幕上只有任务管理器可用。这时候,可以在任务管理器中点击菜单"文件"→"新任务运行",打开创建新任务对话框,点击"浏览"按钮,通过浏览对话框就可以打开DLL文件所在的路径(如图)。然后选择"文件类型"中输入"*.dll",即可显示并删除DLL文件了。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161538447.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161538447.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
如果木马是插入了"svchost.exe"之类的关键进程中,KV2007会在扫描到木马后,自动设置为重启删除。对于不能检测的免杀DLL木马,则可以利用KV2007提供的“重启删除”功能,采用手工删除的方法进行清除:直接在要删除的DLL木马文件上点击右键,在弹出菜单中选择“重启删除”命令(如图),重新启动系统时就会自动删除该文件了。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/200751516169909.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/200751516169909.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
对于加载到“Winlogon.exe”之类进程中的DLL木马,在清除时会造成系统崩溃重启。对于这类DLL木马病毒,最好用BOOTSCAN在Windows系统启动前进行清除,因为此时任何Dll文件都是不会加载调用的。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/200751516169556.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/200751516169556.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
如果注入“Winlogon.exe”之类进程中的DLL木马文件,杀毒软件不能报警查杀的,似乎KV2007也没有办法了。遇到这种状况,一般是采用系统引导盘进入DOS模式中,或者利用“MAXDOS”之类的虚拟DOS环境,去删除木马文件。笔者以前也一直这样做的。不过,后来竟然意外地发现KV2007光盘欧特殊作用,完全不用其它的工具,可以直接对硬盘中的木马文件进行删除操作!
用KV2007光盘引导系统后,自动进行病毒查杀,停止病毒扫描。点击左下角处黑方块的“Console”按钮,打开Linux系统SHELL窗口
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161690.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161690.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
点击SHELL窗口菜单“会话”→“新建Midnight Commander”命令,新建一个图形化的会话标签(如图)。双击其中的“UP-DIR”栏,返回上一层根目录(如图)。双击其中的“/mnt”栏,打开当前驱动器目录列表(如图)。如果是STA串口硬盘的话,则选择“sda”目录,如果是普通IDE硬盘的话,则选择“hda”目录。双击打开目录后,即可进入硬盘驱动器根目录中,找到DLL木马所在的文件夹路径(如图),选择要删除的DLL木马文件,点击下方的“8 Delete”按钮,弹出删除文件提示对话框。点击“Yes”,即可成功将DLL木马文件删除掉。
点击SHELL窗口菜单“会话”→“新建Midnight Commander”命令,新建一个图形化的会话标签(如图21)。双击其中的“UP-DIR”栏,返回上一层根目录(如图22)。双击其中的“/mnt”栏,打开当前驱动器目录列表(如图23)。如果是STA串口硬盘的话,则选择“sda”目录,如果是普通IDE硬盘的话,则选择“hda”目录。双击打开目录后,即可进入硬盘驱动器根目录中,找到DLL木马所在的文件夹路径(如图24),选择要删除的DLL木马文件,点击下方的“8 Delete”按钮,弹出删除文件提示对话框。点击“Yes”,即可成功将DLL木马文件删除掉。
点击SHELL窗口菜单“会话”→“新建Midnight Commander”命令,新建一个图形化的会话标签(如图21)。双击其中的“UP-DIR”栏,返回上一层根目录(如图22)。双击其中的“/mnt”栏,打开当前驱动器目录列表(如图23)。如果是STA串口硬盘的话,则选择“sda”目录,如果是普通IDE硬盘的话,则选择“hda”目录。双击打开目录后,即可进入硬盘驱动器根目录中,找到DLL木马所在的文件夹路径(如图24),选择要删除的DLL木马文件,点击下方的“8 Delete”按钮,弹出删除文件提示对话框。点击“Yes”,即可成功将DLL木马文件删除掉。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161826151.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161826151.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161827833.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161827833.jpg" onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161827239.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161827239.jpg" width=700 onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161827625.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161827625.jpg" width=700 onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
这个SHELL窗口操作文件还是很方便的,可以过滤显示文件,进行各种文件和文件夹新建、删除、复制、移动和查找等操作,甚至还可以进行删除文件恢复、对比文件及同步文件等。
DLL注入型木马并不会感染其它文件,只要结束木马进程并删除掉病毒文件木马,木马就无法死灰复燃了。有些注入“explorer.exe”进程的DLL木马,在删除后会出现无法显示系统登陆对话框,或者登陆系统后没有桌面的情况。此时依旧可以使用KV2007来进行修复。
在KV2007光盘引导杀毒界面中,点击菜单“服务”→“系统修复”,在弹出对话框中可以选择要修复的项目(如图25)。另外,安装了KV2007后,在进入系统登陆界面时,右上角处有一个“系统修复”按钮,点击该按钮,也可以进行修复(如图26)。
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/2007515161827630.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/2007515161827630.jpg" width=700 onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
=700) window.open('http://forum.jiangmin.com/UploadFile/2007-5/20075151618400.jpg');" src="http://forum.jiangmin.com/UploadFile/2007-5/20075151618400.jpg" width=700 onload="if(this.width > 700)this.width = 700;if(this.height > 700) this.height = 700;" border=0>
从木马的整个清除过程中,我们不用利用其它任何工具,仅仅是利用杀毒软件,就可以全面彻底地清除掉所有DLL注入式木马。