“求职信”病毒/蠕虫行为深入分析
描述:
程序名称:Worm.wantjob.57345 “求职信”
程序类型:病毒/蠕虫
利用漏洞:MIME漏洞
(http://www.microsoft.com/technet/security/bulletin/ms01-020.asp)
病毒行为:自我复制,通过email传播,通过网络共享传播,感染可执行文件(包括屏保),
破坏本地文件
受影响的系统:所有32位Windows版本。
详细描述(基于Win2K平台):
该程序具有罕见的双程序结构,分为蠕虫部分(网络传播)和病毒部分(感染文件,破坏文件)。
两者在代码上是独立的两部分,可能也是分开编写的。两者的结合方式非常有趣,作者先是写好蠕虫
部分,然后将病毒部分的二进制码在特定位置加进蠕虫部分,得到最终的病毒/蠕虫程序。
完整的wantjob第一次运行时只执行蠕虫部分代码,具体如下:
1、把自身拷贝至“\WINNT\System32\krn132.exe”,并设置系统、隐藏、只读属性。
(在Windows 2000下同时设置了系统和隐藏属性的文件在资源管理器中是不可见的,即使选择了
“显示所有文件和文件夹”。取消选择“隐藏受保护的操作系统文件(推荐)”后则是可见的。)
2、把“\WINNT\System32\krn132.exe”注册为“Krn132”服务,并设置为开机时自动运行。
3、在internet临时文件夹中读取所有"htm","html"文件并从中提取email地址,此蠕虫利用和Nimda
一样利用了MIME漏洞把自身加到邮件中,发送到所有获得的地址。
邮件主题随即设为下列之一:
“Hi”“Hello”“How are you?”“Can you help me?”“We want peace”
“Where will you go?”“Congratulations!!!”“Don't Cry”“Look at the pretty”
“Some advice on your shortcoming”“Free XXX Pictures”“A free hot porn site”
“Why don't you reply to me?”“How about have dinner with me together?”
“Never kiss a stranger”
内容为空,但编码中有一段注释:
4、搜索网上邻居,发现可写的共享目录会随机生成一个文件名,并将病毒自身进行加密,用该文件名
将病毒复制过去。文件名的生成规则:
第一部分随机生成的名字为字母或数字,最后补一个“.”,
第二部分在Htm、Doc、Jpg、Bmp、Xls、Cpp、Html、Mpg、Mpeg中选择一个。
第三部分补上exe作为扩展名。
5、krn132.exe每启动一次就会在目录:“%Temp%”和“\WINNT\Temp\”中创建一个自身的副本,
文件名是以K打头的,形如“k871.exe”、“k2.exe”或“ka.exe”。
完整的wantjob第一次运行时还会设置病毒在下次开机时执行病毒部分,具体如下:
6、、改变部分编码后拷贝至“\WINNT\System32\Wqk.dll”,并设置系统、隐藏、只读属性。
7、、在注册表中写入以下键值
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="Wqk.dll"
把Wqk.dll注册为系统启动时必须加载的模块。下次开机时,病毒部分以动态链接库形式被加载,
存在于所有系统进程中。因为没有自己的PID,所以在任务管理器中也看不见,也不能被终止。
这是黑客常用的一种隐藏backdoor的方法,微软知识库Q134655和Q125680详细论述了这一问题。
下次开机时,Wqk.dll被加载,wantjob以病毒方式运行:
1、遍历硬盘,寻找PE文件,并感染之。
2、检查本地的时间,如果时间为1月13日,则马上启动26个破坏线程,用内存中的数据覆盖硬盘上的
所有文件。
3、Wqk.dll每启动一次就会在目录:“\WINNT\System32\”中创建一个自身的副本,
文件名为“Wqk.dll”再加一个数字,形如“Wqk.dll6”、“Wqk.dll23”。
无论以什么方式运行,wantjob都会进行一些自我保护的措施:
1、检查进程,如果发现一些杀毒软件在(AVP、NAV、NOD、Macfee等)在运行,则将该软件的进程
终止。
2、不断向注册表中写入
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="Wqk.dll"
既使手工去掉了这个键值,马上就会重新被写入。
以上提到的都是wantjob在Win2K下的情况,在WinNT下的情况也大体类似。而在Win9X下就略有不
同,主要是:
1、由于Win9X不存在“服务”所以wantjob不注册“Krn132”服务。而是在注册表
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
写入"krn132"="C:\WINDOWS\SYSTEM\krn132.exe"
2、系统文件夹下没有“Wqk.dll”,而代以Wqk.exe,并在注册表
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
写入"Wqk.exe"="C:\WINDOWS\SYSTEM\Wqk.exe"
解决方案:
在Win9X下最好开机进入DOS模式,在DOS下杀毒。然后再清除相关注册表键值。
由于wantjob的特殊性,目前的所有反病毒软件都不可能在Win2K下完全清除之,因为Wqk.dll总在
任何程序运行之前加载在内存中,又无法删除注册表相关键值,所以需要按照以下步骤进行:
1、结束所有krn132.exe进程。
2、删除“\WINNT\System32\krn132.exe”及上文提到的临时文件夹中的所有副本。
3、删除或禁用“Krn132”服务。
4、在注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]中
添加以下键值:
@="cmd /c "attrib -s -h -r \WINNT\System32\Wqk.dll"&"del \WINNT\System32\Wqk.dll""
(系统启动时,这个键值是优先于上面提到的“AppInit_DLLs”载入的)然后重启系统,运行反病
毒软件查杀整个硬盘。
或者:
用支持NTFS的干净软盘启动系统,或以Windows 2000安装光盘启动系统,选择修复Windows 2000
安装的选项,最后启动“故障恢复控制台”。删除Wqk.dll。用可以从控制台启动的反病毒软件查杀
整个硬盘。(在此之前请联系反病毒软件厂商,升级最新的病毒特征库)
5、正常启动系统,删除相关注册表键值。
只要可能,强烈建议格式化硬盘后重装系统,或用备份系统恢复。
预防措施:
1、针对MIME漏洞:打开IE的“工具-->internet选项-->安全-->自定义级别-->文件下载”选“禁用”。
还可以安装IE的Service Pack 2,或者升级到IE6。
2、恰当地设置共享目录权限及口令。
3、不要打开可疑邮件,尤其是不要以HTML方式打开。
常见问题:
1、wantjob用什么语言编写?
因为程序会对自身进行重新编码,所以原始程序并无明显特征,但其病毒部分代码是完整的,分离后
可以看出是用MS Visual C++ v6.0编译的,结合程序大小判断,可能采用了C++/ASM混合编程的方式。
2、如何知道自己是否已感染wantjob?
主要是检查有无可疑文件,具体详见上文。
3、加载在内存中的Wqk.dll真的无法察觉吗?
Wqk.dll加载到内存中后,系统反应会明显迟缓,硬盘无故转动。
使用sysinternals.com的一个工具listdlls.exe可以察看系统加载的模块,使用如下格式命令:
“listdlls -d ”
可知系统当前是否加载了Wqk.dll
4、我用一些反编译工具分析wantjob,为什么失败了?
wantjob不是直接由编译链接工具产生,而是经过了手工编码,所以一些工具会出错。可以试一下
W32dasm。
5、我用W32dasm成功的反编译了wantjob,但为什么很多字符串看上去很怪?
wantjob对一些字符串进行了简单的单表代换编码,如F->C,L->T,K->S等。像“rwky64”其实就
是“base64”
6、wantjob和Nimda、Sircam相比,那个危害更大?
显然,wantjob的传播速度没有Nimda快,但肯定会比Sircam快。它能感染文件,且能破坏文件,
危害应该不会比Nimda小多少,造成经济损失可能会比Nimda更大