感謝nslog的投遞,一篇很不錯的文章,推薦閱讀:
引言:寫在最前面
MY123創(chuàng)造了很多流氓軟件的第一,有望爭奪流氓軟件的“最流氓軟件寶座”:
1、驅(qū)動保護(hù)(System Bus Extend驅(qū)動,安全模式下也加載)
2、隨機(jī)文件名,DLL和SYS
3、多線程保護(hù),網(wǎng)絡(luò)自動升級
4、極強(qiáng)的自動恢復(fù)(即使在所有文件被刪除的情況下,仍然可以通過內(nèi)存恢復(fù)!)
5、驅(qū)動文件獨(dú)占方式,其它任何程序也無法讀寫及刪除
6、有預(yù)謀定時爆發(fā)(2006/11/11)
一、MY123的前世今生
風(fēng)雨送飄(飄雪piaoxue)歸,飛雪(fiexue)迎春到。才別傲訊(allxun)網(wǎng),又見一二三(MY123)。
短短一個多月時間,這些鎖主頁的流氓軟件已經(jīng)讓上千萬的網(wǎng)民明白了什么叫做強(qiáng)盜,什么叫做無恥,什么叫做瘋狂。9號的時候就已經(jīng)聽人放言10號以后會有一個流氓會大規(guī)模爆發(fā)。果然,在2006/11/11號這個光棍節(jié)的時候,MY123如期而至?,F(xiàn)在看來,原因在于這個流氓軟件已經(jīng)早就潛伏于用戶的電腦中,通過和多個其它流氓軟件的捆綁以及其它的渠道,已經(jīng)潛入成百上千萬的網(wǎng)民電腦中,平常也是啟動的,但判斷日期小于11/11號,就潛伏不動,一旦系統(tǒng)時間大于11號,就開始修改用戶主頁。而選擇這個特殊時間,選擇在周未的時候,顯然也是別有用心,可以利用反病毒廠商假期的時候反應(yīng)不及時而大規(guī)模爆發(fā)。
從規(guī)模及爆發(fā)面積來看,全國各地可能有數(shù)百萬甚至上千萬用戶被該流氓惡意修改了主頁,這和之前爆發(fā)的大面積piaoxue.com, feixue.net,73ss.com,9505.com,81915.com,4199.com等惡意修改用戶主頁,十分相似。同以往的一些“老流氓”相比,這些新流氓的特征是爆發(fā)面積特別大,效果明顯,目的明確單一(修改主頁),手段新奇狠毒,嘆為觀止。
顯然這是一場預(yù)謀已久的活動,并且短短幾天內(nèi),這個驅(qū)動病毒至少已經(jīng)有三個不同的版本,造成一些專殺工具失效。這個MY123已經(jīng)具備所有病毒的特征,希望總有一天法律能將這種無良的作者繩之以法。
二、剖析流氓手段
這個驅(qū)動經(jīng)過層層改進(jìn),家庭發(fā)揚(yáng)得很光大,看看:
1、飄雪(piaoxue)
2、飛雪(feixue)
3、QQHelper
4、allxun.com傲訊
5、My123(7255)
最早的MY123只有一個驅(qū)動,已經(jīng)有多個專殺工具可以殺。后來又出現(xiàn)版本2,即多一個同名的.dll位于system32目錄下,現(xiàn)在的版本3,是一個非同名的.dll位于system32目錄下。今天主要分析一下我手頭拿到的這個版本3。
1、程序安裝
首先是釋放一個.dll到system32目錄下,文件名的特征是隨機(jī)的8位字母(也有版本是6位字母加2位數(shù)字),然后調(diào)用rundll32.exe wceiukte,DllUnregisterServer來注冊COM組件,接下來調(diào)用Rundll32.exe wceiukte.dll,DllCanUnloadNow來運(yùn)行程序,并且注冊WH_CALLWNDPROC這個系統(tǒng)掛鉤。
DLL分別注入SYSTEM和EXPLORER進(jìn)程空間,進(jìn)行保護(hù),如果檢測沒有驅(qū)動,則會自動釋放出驅(qū)動,然后加載。同時這個DLL具有網(wǎng)絡(luò)下載升級功能。
這個dll運(yùn)行后,會生成一個.sys文件,放到drivers系統(tǒng)目錄下。DLL通過一個算法得到SYS文件名,算法是:
DLL的文件名
ascii碼+32143289052890852-32143289052890848-34320958+34320955就就是SYS文件名
也就是ascii + 1
即.dll的文件名為:wceiukte.dll那么.sys文件名就為:xdfjvluf.sys
2、注冊和加載驅(qū)動
會在注冊表的HKLMSYSTEMCurrentControlSetServices下寫下同驅(qū)動名的一個值,把自己注冊為System Bus Extend的驅(qū)動,使得它的優(yōu)先級很高,即使在安全模式下加載,也使得很多想清除它的軟件無效。然后通過services來加載驅(qū)動,驅(qū)動加載后,生成三個線程附加到system這個系統(tǒng)核心進(jìn)程上,(以前的驅(qū)動是兩個線程)獲取最高權(quán)限。通過Process Explorer可以查看到這三個線程:
三個線程的作用分別為:
0x1dd4:自身文件獨(dú)占及句柄檢測保護(hù)模塊等,會將自身文件以獨(dú)占方式打開,這樣若不解除獨(dú)占,任何windows下使用常規(guī)訪問文件方法的程序包括殺毒軟件都無法讀寫或者刪除它的驅(qū)動程序文件。
文件句柄檢測保護(hù)模塊則是為了防止手工或者專殺的解除句柄的操作。以前的手工清除或者專殺都是需要先解除這個獨(dú)占,才能刪除文件。
但該驅(qū)動增加了這個保護(hù),會不停檢測自身文件的獨(dú)占是否被強(qiáng)制解除,如果檢測到,立即再次獨(dú)占.
0x1816:服務(wù)保護(hù)模塊:該模塊會檢測驅(qū)動自身的注冊表服務(wù)項,不停地暴力重寫自身服務(wù)項,使得無法刪除其服務(wù)項.
0x103e: 篡改首頁模塊:該模塊會不停暴力重寫注冊表中首頁設(shè)置為www.,導(dǎo)致無法對該項進(jìn)行修復(fù).
三、手工清除辦法(適合目前有一定操作技能的用戶)
清除了這個流氓的手段,就可以針對來找一些清除辦法了。當(dāng)然,比起上一次的飄雪來,困難了許多。
1、找出驅(qū)動
要?dú)⒘髅ボ浖牡谝徊?,就是要找出流氓軟件,可以有多種辦法找出這個流氓軟件。
用到我以前寫的一篇文章《釜底抽薪:用autoruns揪出流氓軟件的驅(qū)動保護(hù)》,我們今天就來實(shí)戰(zhàn)一下。運(yùn)行autoruns之后,在它的 “Options(選項)”菜單中有兩項“Verifiy Code Signatures(驗(yàn)證代碼簽名)“Hide Signed Microsoft Entries(隱藏已簽名的微軟項)“,把這兩項都選中了。掃描之后,我們只看驅(qū)動(driver)這一項:
可以看出來,它是假冒微軟的驅(qū)動。這個驅(qū)動雖然寫明是微軟的,但是沒有經(jīng)過微軟的數(shù)字簽名,所以肯定是假的。(可能你的機(jī)器上顯示特別多,但所有非微軟的,都是有問題的),因?yàn)槭请S機(jī)生成的文件名,所以你那里找出來的,可能跟我的不一樣。請自己記下文件名。特征是8位隨機(jī)的字母,并且公司是微軟公司,但是顯示(Not verified),如果你這里不能確認(rèn),可以用下面的辦法。
2、用procexp找出驅(qū)動名來
運(yùn)行procexp,(下載地址見最后),找到system這個進(jìn)程,然后點(diǎn)右鍵——屬性(Properties)——線程(Threads),然后把下面的框子拉到最后,看有連續(xù)三個,比較無規(guī)則的八個字母的驅(qū)動,再跟autoruns對一下就可以確定是哪個驅(qū)動了。(見第一張圖)
3、刪除驅(qū)動.sys
打開c:windowssytem32drivers目錄,由于這個.sys驅(qū)動文件把自己設(shè)為系統(tǒng)、隱藏,所以需要打開文件夾的顯示系統(tǒng)文件的選項才能看到。(你也可以用這個辦法來找到驅(qū)動,一般的正常驅(qū)動都不會想著隱藏自己的)。
在那個驅(qū)動文件上點(diǎn)右鍵,然后——Unlocker——會出來一個對話框,顯示當(dāng)前已經(jīng)使用這個.sys的進(jìn)程,點(diǎn)“Unlock“,然后再Unlocker一下......顯示文件已經(jīng)被刪除了。。。。。以為大功告成了。
但是緊接著怪事就出事了,刷新一下,發(fā)覺這個文件又出現(xiàn)了!百思不得其解,已經(jīng)確認(rèn)所有的后臺服務(wù)都是正常的,那個.dll也已經(jīng)被刪除了....這個問題困擾了許久,又拿出驅(qū)動好好研究了一下,終于發(fā)覺這個極其變態(tài)的辦法——一個正常的人是不可能把寫出這樣的驅(qū)動的!
它注冊了一個NotifyRoutine的一個回調(diào)函數(shù),這個是一個自我修復(fù)的功能,只要系統(tǒng)任何進(jìn)程或線程打開,它馬上會調(diào)用,檢查文件如果被刪了就立即從內(nèi)存中自動恢復(fù)!顯然是針對上一次飄雪的那個手工專殺或者清除辦法做的一次改進(jìn),正常辦法根本不可能刪掉。
用unlocker的確是把文件刪除了,但是沒有辦法不啟動其它進(jìn)程或者線程啊,即使馬上選擇關(guān)機(jī),它也會新建線程,這個時候它也馬上可能恢復(fù)了。。。。難道只能用最后一招:DOS大法???真很不甘心啊....&%$#@!&*()_+
也不知怎么了,突然靈光一線,想到一個絕招:斷電法!就是:刪除之后,馬上不做任何操作,直接按機(jī)器電源鍵重啟!經(jīng)實(shí)驗(yàn)是成功的,OK...followed me...
清除之前,我們先要停止那三個system中的線程,那個會不停地自動檢測,打開procexp,然后在system上點(diǎn)右鍵---屬性---線程,點(diǎn)一下Start Address,這樣可以按字母排序,找到剛才我們看到的驅(qū)動,三個連續(xù)在一起。點(diǎn)一下線程,然后點(diǎn)那個“Suspend“按鈕,將這個線程暫停。(它做了自我保護(hù),殺不掉的,只能暫停)。
確保停止線程之后,這個按鈕都變成“Resume(暫停)”,三個線程全部暫停之后,打開c:windowssystem32drivers目錄,右鍵點(diǎn)那個.sys驅(qū)動---unlocker。
第一次先unlock那個System的句柄占用。第二次再unlocker,這個時候就會出來一個對話框:
這時注意了:
一手將鼠標(biāo)移動OK對話框中,一手找到機(jī)器的RESET鍵(請確保這個鍵有效,直接斷電對機(jī)器有損傷),在按下鼠標(biāo)之后,一看到那個刪除OK的提示之后,馬上按下RESET鍵,直接重啟機(jī)器(如果是筆記本,就先把電池拿了,直接斷電)。這個辦法講究眼急手快,如果無效再試一次。
按我的經(jīng)驗(yàn),兩秒之后按下RESET鍵都是有效的(殺這個東西真不容易,再次詛咒一個寫出這么變態(tài)驅(qū)動的人來)。
3、刪除.dll
當(dāng)失去驅(qū)動保護(hù)之后,這個DLL也就肉雞了,要?dú)⒁獎幦珣{你喜歡了。你放在那里不管也無所謂。它隱藏得也很深,沒有在注冊表的啟動組里面表現(xiàn)出來。360 出的專殺,只能殺MY123的前兩代,對于這個第三代,目前為止還不能清除,只能清除.dll。所以有時開機(jī)之后會顯示加載DLL失敗:
這個是由那個該死的驅(qū)動去加載的,所以找注冊表是沒有用的。
重啟之后,再重新設(shè)一下IE的主頁,應(yīng)該就可以了。至于那個Seriver的值,刪不刪都無所謂了。
四、DOS大法(適合現(xiàn)在以及將來所有此類型的流氓軟件,要求較高)
DOS大法一直是我們殺這類驅(qū)動流氓的最后一招,無論多么強(qiáng)的驅(qū)動保護(hù),只要用了它,手到擒來,但是由于要安裝另外一個系統(tǒng)或者操作DOS,對于新手來說,有一定難度,所以一般來說,都不是我推薦的。這里建議去下載一個叫vfloopy的虛擬軟驅(qū)軟件,安裝之后,系統(tǒng)重啟的時候就多了一項,啟動到虛擬軟驅(qū),這樣可以直去直接刪除這個驅(qū)動文件。
上面這個累了一身汗的辦法,不知多久就地失效,但思路是一樣的,只要找到驅(qū)動文件,下面就是如何刪除的問題。寫飄雪的時候就想著寫這個辦法了,但是覺得麻煩,不愿意再啟一個操作系統(tǒng)。
你也可以用深山紅葉這類系統(tǒng)急救光盤或者另外一個Windows去刪除那個驅(qū)動文件,具體的操作流程我就不多費(fèi)口舌了。