“求職信”病毒/蠕蟲行為深入分析
描述:
程序名稱:Worm.wantjob.57345 “求職信”
程序類型:病毒/蠕蟲
利用漏洞:MIME漏洞
(http://www.microsoft.com/technet/security/bulletin/ms01-020.asp)
病毒行為:自我復制,通過email傳播,通過網(wǎng)絡共享傳播,感染可執(zhí)行文件(包括屏保),
破壞本地文件
受影響的系統(tǒng):所有32位Windows版本。
詳細描述(基于Win2K平臺):
該程序具有罕見的雙程序結構,分為蠕蟲部分(網(wǎng)絡傳播)和病毒部分(感染文件,破壞文件)。
兩者在代碼上是獨立的兩部分,可能也是分開編寫的。兩者的結合方式非常有趣,作者先是寫好蠕蟲
部分,然后將病毒部分的二進制碼在特定位置加進蠕蟲部分,得到最終的病毒/蠕蟲程序。
完整的wantjob第一次運行時只執(zhí)行蠕蟲部分代碼,具體如下:
1、把自身拷貝至“\WINNT\System32\krn132.exe”,并設置系統(tǒng)、隱藏、只讀屬性。
(在Windows 2000下同時設置了系統(tǒng)和隱藏屬性的文件在資源管理器中是不可見的,即使選擇了
“顯示所有文件和文件夾”。取消選擇“隱藏受保護的操作系統(tǒng)文件(推薦)”后則是可見的。)
2、把“\WINNT\System32\krn132.exe”注冊為“Krn132”服務,并設置為開機時自動運行。
3、在internet臨時文件夾中讀取所有"htm","html"文件并從中提取email地址,此蠕蟲利用和Nimda
一樣利用了MIME漏洞把自身加到郵件中,發(fā)送到所有獲得的地址。
郵件主題隨即設為下列之一:
“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、搜索網(wǎng)上鄰居,發(fā)現(xiàn)可寫的共享目錄會隨機生成一個文件名,并將病毒自身進行加密,用該文件名
將病毒復制過去。文件名的生成規(guī)則:
第一部分隨機生成的名字為字母或數(shù)字,最后補一個“.”,
第二部分在Htm、Doc、Jpg、Bmp、Xls、Cpp、Html、Mpg、Mpeg中選擇一個。
第三部分補上exe作為擴展名。
5、krn132.exe每啟動一次就會在目錄:“%Temp%”和“\WINNT\Temp\”中創(chuàng)建一個自身的副本,
文件名是以K打頭的,形如“k871.exe”、“k2.exe”或“ka.exe”。
完整的wantjob第一次運行時還會設置病毒在下次開機時執(zhí)行病毒部分,具體如下:
6、、改變部分編碼后拷貝至“\WINNT\System32\Wqk.dll”,并設置系統(tǒng)、隱藏、只讀屬性。
7、、在注冊表中寫入以下鍵值
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="Wqk.dll"
把Wqk.dll注冊為系統(tǒng)啟動時必須加載的模塊。下次開機時,病毒部分以動態(tài)鏈接庫形式被加載,
存在于所有系統(tǒng)進程中。因為沒有自己的PID,所以在任務管理器中也看不見,也不能被終止。
這是黑客常用的一種隱藏backdoor的方法,微軟知識庫Q134655和Q125680詳細論述了這一問題。
下次開機時,Wqk.dll被加載,wantjob以病毒方式運行:
1、遍歷硬盤,尋找PE文件,并感染之。
2、檢查本地的時間,如果時間為1月13日,則馬上啟動26個破壞線程,用內存中的數(shù)據(jù)覆蓋硬盤上的
所有文件。
3、Wqk.dll每啟動一次就會在目錄:“\WINNT\System32\”中創(chuàng)建一個自身的副本,
文件名為“Wqk.dll”再加一個數(shù)字,形如“Wqk.dll6”、“Wqk.dll23”。
無論以什么方式運行,wantjob都會進行一些自我保護的措施:
1、檢查進程,如果發(fā)現(xiàn)一些殺毒軟件在(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、系統(tǒng)文件夾下沒有“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""
(系統(tǒng)啟動時,這個鍵值是優(yōu)先于上面提到的“AppInit_DLLs”載入的)然后重啟系統(tǒng),運行反病
毒軟件查殺整個硬盤。
或者:
用支持NTFS的干凈軟盤啟動系統(tǒng),或以Windows 2000安裝光盤啟動系統(tǒng),選擇修復Windows 2000
安裝的選項,最后啟動“故障恢復控制臺”。刪除Wqk.dll。用可以從控制臺啟動的反病毒軟件查殺
整個硬盤。(在此之前請聯(lián)系反病毒軟件廠商,升級最新的病毒特征庫)
5、正常啟動系統(tǒng),刪除相關注冊表鍵值。
只要可能,強烈建議格式化硬盤后重裝系統(tǒng),或用備份系統(tǒng)恢復。
預防措施:
1、針對MIME漏洞:打開IE的“工具-->internet選項-->安全-->自定義級別-->文件下載”選“禁用”。
還可以安裝IE的Service Pack 2,或者升級到IE6。
2、恰當?shù)卦O置共享目錄權限及口令。
3、不要打開可疑郵件,尤其是不要以HTML方式打開。
常見問題:
1、wantjob用什么語言編寫?
因為程序會對自身進行重新編碼,所以原始程序并無明顯特征,但其病毒部分代碼是完整的,分離后
可以看出是用MS Visual C++ v6.0編譯的,結合程序大小判斷,可能采用了C++/ASM混合編程的方式。
2、如何知道自己是否已感染wantjob?
主要是檢查有無可疑文件,具體詳見上文。
3、加載在內存中的Wqk.dll真的無法察覺嗎?
Wqk.dll加載到內存中后,系統(tǒng)反應會明顯遲緩,硬盤無故轉動。
使用sysinternals.com的一個工具listdlls.exe可以察看系統(tǒng)加載的模塊,使用如下格式命令:
“l(fā)istdlls -d ”
可知系統(tǒng)當前是否加載了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更大