咨询热线:400-000-3720 中文 | English
您现在的位置: 安腾软件 >> ITEN博客 >> 正文

系统安全:剿清删不掉的DLL木马

DLL注入木马是目前网络上十分流行的木马形式,它就像是一个寄生虫,木马以DLL文件的形式,寄宿在某个重要的系统进程中,通过宿主来调用DLL文件,实现远程控制的功能。这样的木马嵌入到系统进程中可以穿越防火墙,更让人头疼的是,用杀毒软件进行查杀,杀软即使报警提示发现病毒,但是也无法杀掉木马病毒文件,因为木马DLL文件正被宿主调用而无法删除。下面我们把杀软放到一边,通过专用工具及其手工的方法来清除DLL木马。

  一、清除思路

  1、通过系统工具及其第三方工具找到木马的宿主进程,然后定位到木马DLL文件。

  2、结束被木马注入的进程。

  3、删除木马文件。

  4、注册表相关项的清除。

  二、 清除方法

  1、普通进程DLL注入木马的清除

  有许多DLL木马是注入到“iexplore.exe”和“explorer.exe”这两个进程中的,对于注入这类普通进程的DLL木马是很好清除掉的。

  如果DLL文件是注入到“iexplore.exe”进程中,此进程就是IE浏览进程,那么可以关掉所有IE窗口和相关程序,然后直接找到DLL文件进行删除就可以了。如果是注入到“explorer.exe”进程中,那么就略显麻烦一些,因为此进程是用于显示桌面和资源管理器的。当通过任务管理器结束掉“explorer.exe”进程时,桌面无法看破到,此时桌面上所有图标消失掉,“我的电脑”、“网上邻居”等所有图标都不见了,也无法打开资源管理器找到木马文件进行删除了。怎么办呢?

  这时候可以在任务管理器中点击菜单“文件”→“新任务运行”,打开创建新任务对话框,点击“浏览”挖通过浏览对话框就可以打开DLL文件所在的路径。然后选择“文件类型”为“所有文件”,即可显示并删除DLL了。(图1)


      提示:如果你熟悉命令行(cmd.exe)的话,可以直接通过命令来清除,如:

  taskkill /f /im explorer.exe

  del C:\Windows\System32\test.dll

  start explorer.exe

  第一行是结束explorer.exe,第二回是删除木马文件test.dll,第三行是重启explorer.exe。
2、使用IceSword卸载DLL文件调用

  如果木马是插入了“svchost.exe”之类的关键进程中,就不能指望进程管理器来结束进程了,可能需要一些附加的工具卸载掉某个DLL文件的调用。

  IceSword的功能十分强大,可以利用它卸载掉已经插入到正在运行的系统进程中的DLL文件。在IceSword的进程列表显示窗口中,右键点击DLL木马宿主进程,选择弹出菜单中的“模块信息”命令打开DLL模块列表对话窗口。选择可疑的模块后,点击“卸载”按钮即可将DLL木马进程中删除掉了。

  如果提示不能卸载的话,可以点击“强行解除”按钮,从进程中强行删除该DLL调用。这时候就可以从“模块文件名”栏中,得到DLL文件文件的路径,然后到文件夹中将DLL木马彻底删除掉。(图2)


3、SSM终结所有DLL木马

  许多木马都是注入到系统里关键进程中的,比如“svchost.exe”、“smss.exe”、“winlogon.exe”进程,这些进程使用普通方式无法结束,使用特殊工具结束掉进程或卸载掉进程中的DLL文件后,却又很可能造成系统崩溃无法正常运行等。例如一款著名的木马PCShare是注入“winlogon.exe”进程中的,该进程是掌握Windows登录的,在使用IceSword卸载时系统立刻异常重启,更本来不及清除dll文件,在重启后dll木马再次被加载。

  对于这类dll木马,必须在进程运行之前阻止dll文件的加载。阻止dll文件加载要用到一个强大的安全工具“System Safety Monitor”(简称SSM)。SSM是由俄罗斯出品的一款系统监控软件,通过监视系统特定的文件和程序,达到保护系统安全的目的。这款软件功能非常强大,可以很好地配合防火墙和杀毒软件更好地保护系统的安全。

  运行SSM,在程序界面中选择“规则”选项卡,右键点击中间规则列表空白处,选择“新增”命令。弹出文件浏览窗口,选择浏览文件类型为“库文件”,在其中选择指定文件路径“C:\Windows\system32\rejoice.dll”。确定后,即可将DLL木马文件添加到规则列表中,然后在界面下方的“规则”下拉列表中选择“阻止(F2)”(图3)


  添加规则设置完毕后,点击“应用设置”按钮,然后重启系统。在重启系统前要检查SSM的设置,保证SSM随系统启动而加载运行。当系统重启时,会自动阻止该进程调用rejoice.dll木马文件。由于木马文件没有任何进程调用,所以就可以直接删除了。

  此外,我们还可以利用其它工具来清除DLL木马后门,例如Tiny Personnal Firewall 2005(TPF)防火墙的“balcklist”禁止运行功能等,清除的原理都是一样的,总之是在木马DLL文件被调用之前,阻止其被进程加载,从而达到结束木马进程并删除木马的目的。
4、通过系统权限法来清除DLL木马

  在Windows系统中,NTFS分区格式具有强大的文件限制设置功能,可以设置某个文件是否可以被程序调用访问等。通过这个功能,我们一样可以阻止木马调用相应的DLL文件,从而彻底地清除掉DLL木马文件。

  双击打开“我的电脑”,点击菜单命令“工具”→“文件夹选项”→“查看”,在高级设置的选项卡下去掉“简单文件共享”的选择。(图4)


然后定位到无法删除的DLL文件上,右键点击该文件,在弹出菜单中选择“属性”命令,单击“高级”按钮,在弹出的窗口中去掉“从父项继承那些可以应用的到子对象的权限项目,包括那些在此明确定义的项目”不被选中(如图5)。再在弹出的窗口中单击“删除”,再依次单击“确定”。这样就没有任何用户可以访问和调用这个DLL木马文件了。重新启动系统就可以删除该DLL文件了。
5、恢复系统

  将DLL文件删除后,还要到注册表中找到所有与该DLL木马关联的项目,尤其是:

  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices

  等几个与自动启动有关的项目。

  另外,DLL木马不仅仅局限存在于Run、Runonce这些众所周知的子键,而有可能存在于更多的地方。例如对于后门类的DLL来说“KnownDLLs”就是再好不过的藏身之处。在注册表的“HEKY_LOCALMACHINE\SYSTEM\ControlSet001\Control\Session Manager\KnownDLLs”子键下,存放着一些已知DLL的默认路径(如图6)。假设DLL木马修改或者增加了某些键值,那么DLL木马就可以在系统启动的时候悄无声息地代替正常的DLL文件被加嵌入到相应的进程中。(图6)

三、总结

  总的来说,DLL木马后门的种类极多,木马选择的注册表选项及其系统进程也不尽相同。清除DLL木马的总体思路是这样的:

  在碰到DLL注入类木马时,我们可以首先考虑用procexp之类的工具,查找出DLL类木马的宿主进程。找到宿主进程后,如果是注入到普通可结束的进程中,可以直接将宿主进程结束后直接删除木马文件即可。

  如果DLL木马是注入到系统关键进程中的话,可以考虑用IceSword卸载DLL文件;如若失败,那么直接用SSM建立规则或者通过阻止DLL文件的加载就可以了。