第四回:Rundll32帮助木马自启动

网络安全

危险等级:★★★★

曾经案例

2002年出现的木马病毒Trojan.Killonce,运行时会首先将自身藏入系统目录,然后进入自启动项。当发现局域网中有完全共享的系统目录时,此病毒就将此系统目录中的Rundll32.exe文件改名为Run32.exe,同时将自己放入到此系统目录中,并改名为Rundll32.exe。利用同样的方法,此病毒还会替换掉注册表编辑器程序,造成注册表编辑器程序无法正常使用,同时在打开所有的应用程序与文本文件时,病毒会自动运行,表现出来的状态就是无法正常打开这些文件,无法正常使用计算机。

Rundll32.exe的真面目

新的一周又到了,唐僧师徒照例来教室听谭教授讲课。这次谭教授并没有问同学们的复习情况,而是说:“不久前,周鸿祎和‘雅虎助手’掐上了……”话还没有说完,八戒接过话题:“这事我知道。‘雅虎助手’不就是原来的3721的升级版本吗,我以前还用过了。”谭教授问道:“那你有没有注意它的启动方式呢?”八戒想了想说:“‘Rundll32.exe C:\WINDOWS\DOWNLO~1\CnsMin.dll,Rundll32’,感觉怪怪的”。

小知识:所谓Rundll32.exe,可以分成两部分,Run(运行)和DLL(动态链接库),所以此程序的功能是运行那些不能作为程序单独运行的 DLL文件。Windows 98/Me由于是16位和32位的混合编码,所以同时具有Rundll32.exe和Rundll.exe两个程序,而Rundll32.exe则用来运行32位DLL文件。而到了Windows 2000/XP时,Windows 2000/XP/2003都是NT内核系统,其代码都是纯32位的,所以在这些系统中就没有Rundll.exe这个程序。

看完关于Rundll32.exe的介绍后,沙僧问道:“那么既然这个Rundll32.exe进程是系统自带的,那么怎么和病毒扯上关系的呢?”谭教授答道:“我们还是再来了解一下Rundll32.exe的运行方式吧。无论是Rundll32.exe或Rundll.exe,独立运行都是毫无作用的,要在程序后面指定加载DLL文件才行。所以在Windows的任务管理器中,我们只能看到Rundll32.exe进程,而其实质是调用的DLL。比如有些木马、后门就是利用Rundll32.exe加载DLL形式运行的,但大多数情况下Rundll32.exe都是加载系统的DLL文件。”

检验Rundll32.exe

悟空马上说道:“看来要分辨Rundll32.exe是否病毒等恶意程序,首先要确定正在系统运行的Rundll32.exe是在%systemroot%system32目录下的,并且注意文件名称也没有变化才行。”

谭教授马上补充道:“悟空,你说得的确不错,但是也有例外出现,比如曾经流行的‘白骨精’病毒。一旦感染该病毒,就会自动覆盖系统本身的Rundll32.exe文件。如果要清除该病毒的话,首先需要结束Rundll32.exe进程,接着使用杀毒软件对它进行查杀。因为你刚刚删除了Rundll32.exe文件,所以当你打开系统‘控制面板’时,会提示你Windows无法打开控制面板,因为找不到Rundll32.exe文件。这时你必须重新拷贝真正的Rundll32.exe到系统,从而保证系统组件的正常运行。”

小贴士:Rundll32.exe是受系统保护的进程文件,一般情况下是不可能被替换的。如果用户怀疑它被替换的话,可以通过文件的属性来进行分辨。如果是真正的系统文件,则点击“属性”窗口的“兼容性”标签可以看到“由于这个程序是Windows XP的一部分……”的信息(如图1)。另外从“版本”标签的“产品名称”选项中也可以查看到。

43-f9-1.jpg
图1

用好Rundll32.exe

唐僧又问道:“那么如何使用Rundll32.exe呢?”谭教授说道:“前面已经提到了,Rundll32.exe需要在程序后面指定加载的DLL文件才行。程序的命令格式是‘Rundll32.exe 动态链接库名 函数名 参数名’,比如Rundll32.Exe shell32.dll SHExitWindowsEx 1(如图2),指定该文件后就可以进行系统的关机操作。刚才是系统文件的正常运行,其实木马、后门的使用方法也是差不多的。比如Rundll32 dllshell.dll,I password即可成功安装名为dllshell.dll的这个后门文件。”

43-f9-2.jpg
图2

沙僧接着问道:“如何才能知道Rundll32.exe加载了哪DLL文件呢?”“这个其实很简单,在命令提示符窗口执行命令:tasklist /m /fo list >C:\dll.txt,这样就可以将当前进程加载的所有DLL文件输出到列表之中。接着打开列表文件,找到和Rundll32.exe相关的内容即可进行分析判断。另外通过卡卡进程管理器也可以进行查看(如图3)。”

43-f9-3.jpg
图3

在一阵欢声笑语中,这节课很快就讲完了。谭教授告诉大家下节课将介绍系统中的一个常见高危进程——Svchost.exe。