“白加黑”遠(yuǎn)控木馬技術(shù)分析及手殺方案
“白加黑”是民間對(duì)一種DLL劫持技術(shù)的通俗稱呼,現(xiàn)在很多惡意程序利用這種劫持技術(shù)來繞過安全軟件的主動(dòng)防御以達(dá)到加載自身的目的,是目前很火的一種免殺手段。本文將針對(duì)此類病毒做了一個(gè)簡單技術(shù)介紹和案例演示。
所謂的“白加黑”,籠統(tǒng)來說是“白exe”加“黑dll”,“白exe”是指帶有數(shù)字簽名的正常exe文件,那么“黑dll”當(dāng)然是指包含惡意代碼的dll文件。病毒借助那些帶數(shù)字簽名且在殺毒軟件白名單內(nèi)的exe程序去加載自己帶有惡意代碼的dll,便能獲得殺毒軟件主動(dòng)防御的自動(dòng)信任,從而成功加載到系統(tǒng)中。病毒的這種手段其實(shí)是鉆了軟件編寫的空子,若第三方軟件在編寫時(shí)對(duì)調(diào)用的庫文件沒有進(jìn)行審查或?qū)彶榈貌粔驀?yán)謹(jǐn),就容易發(fā)生DLL劫持,這種編寫漏洞已被微軟獲悉,詳情可參考Microsoft 安全通報(bào)(2269637)。
Dll劫持技術(shù)簡介
當(dāng)一個(gè)可執(zhí)行文件運(yùn)行時(shí),Windows加載器將可執(zhí)行模塊映射到進(jìn)程的地址空間中,加載器分析可執(zhí)行模塊的輸入表,并設(shè)法找出任何需要的DLL,并將它們映射到進(jìn)程的地址空間中。由于輸入表中只包含DLL名而沒有它的路徑名,因此加載程序必須在磁盤上搜索DLL文件。首先會(huì)嘗試從當(dāng)前程序所在的目錄加載DLL,如果沒找到,則在Windows系統(tǒng)目錄中查找,***是在環(huán)境變量中列出的各個(gè)目錄下查找。惡意程序利用這個(gè)特點(diǎn),先偽造一個(gè)系統(tǒng)同名的DLL,提供同樣的輸出表,每個(gè)輸出函數(shù)轉(zhuǎn)向真正的系統(tǒng)DLL。這樣,程序調(diào)用系統(tǒng)DLL時(shí)會(huì)先調(diào)用當(dāng)前目錄下偽造的DLL,完成相關(guān)功能后,再跳到系統(tǒng)DLL同名函數(shù)里執(zhí)行。這個(gè)過程用個(gè)形象的詞來描述就是,系統(tǒng)DLL被劫持了。
Windows XP SP2系統(tǒng)以上DLL文件加載的搜索順序如下:
(1)可執(zhí)行程序加載的目錄(可理解為程序安裝目錄比如C:\Program Files\Internet Explorer)
(2)系統(tǒng)目錄(即 %windir%\system32)
(3)16位系統(tǒng)目錄(即 %windir%\system)
(4)Windows目錄(即 %windir%)
(5)運(yùn)行某文件的所在目錄(比如C:\Documents and Settings\Administrator\Desktop\test)
(6)PATH環(huán)境變量中列出的目錄
根據(jù)前面介紹的DLL加載順序,運(yùn)行程序的時(shí)候會(huì)優(yōu)先到程序執(zhí)行的目錄下加載必須文件,這么一來,病毒作者可以偽造一個(gè)dll,包含所有被劫持dll的導(dǎo)出函數(shù),放到可執(zhí)行程序目錄下,當(dāng)exe運(yùn)行時(shí),病毒dll就理所當(dāng)然被優(yōu)先調(diào)用了。
病毒案例分析
1) 本例中的白加黑樣本是一個(gè)假冒某游戲大廳捆綁安裝的遠(yuǎn)控木馬,用戶從假冒的下載地址下載了捆綁木馬的安裝包,雙擊運(yùn)行后則出現(xiàn)安裝界面,與正常安裝過程無異。
圖1:運(yùn)行安裝包,彈出安裝界面
2) 點(diǎn)擊“下一步”直至安裝完成,桌面多出“456游戲”快捷方式。如果此時(shí)你不假思索就雙擊運(yùn)行,那么你就實(shí)實(shí)在在地上當(dāng)了。右擊快捷方式查看屬性,目標(biāo)文件是C:\Program Files\Common Files\ODBC\SGUpdater.exe,這根本就不是456游戲的安裝目錄和主程序。
圖2:病毒篡改了桌面快捷方式指向自身
3) 找到SGUpdater.exe查看屬性,該exe是搜狗壁紙升級(jí)程序,帶有文件版本和合法數(shù)字簽名,也就是我們所說的“白exe”。
圖3:被病毒利用的正常exe文件
4) ***次雙擊456游戲快捷方式并沒彈出什么界面,只是快捷方式圖標(biāo)閃了一下,用XueTr查看系統(tǒng)進(jìn)程,SGUpdater.exe已經(jīng)運(yùn)行了,并且加載了同目錄下的HWSignature.dll,也就是本例中的“黑dll”,并添加了自啟動(dòng)項(xiàng)。到這一步,這個(gè)遠(yuǎn)控木馬就相當(dāng)于“種植”完畢了,接下來便會(huì)連接遠(yuǎn)控主機(jī),記錄鍵盤操作等,導(dǎo)致用戶隱私外泄,個(gè)人財(cái)產(chǎn)安全受到威脅。
圖4:HWSignature.dll借助SGUpdater.exe加載從而繞過殺毒軟件主防
圖5:木馬和遠(yuǎn)控主機(jī)建立連接
5) 運(yùn)行SGUpdater.exe后再次查看456游戲快捷方式屬性,發(fā)現(xiàn)目標(biāo)文件和位置已有所改變,這次指向的才是真正的456游戲主程序:C:\Program Files\KaiUnion Tech\456游戲\Lobby.exe,這時(shí)再雙擊快捷方式便能彈出游戲界面了。
圖6:病毒成功加載后便將快捷方式指向改回
由此可見,病毒作者可以說是精打細(xì)算、步步為營。首先把病毒相關(guān)文件捆綁到游戲安裝包中,在用戶安裝過程中釋放到本地磁盤,修改游戲快捷方式指向,誘騙用戶雙擊,待木馬成功植入后再將快捷方式指向改回,用戶再次雙擊便能調(diào)出游戲界面,并不有所懷疑,在用戶兩次雙擊快捷方式之間神不知鬼不覺地植入了遠(yuǎn)控木馬,并能實(shí)現(xiàn)自啟動(dòng)。既然不幸中招,為避免更多損失,接下來還是趕緊把這個(gè)木馬清出系統(tǒng)吧。
清理過程很簡單,首先我們從任務(wù)管理器結(jié)束SGUpdater.exe進(jìn)程,在Xuetr里刪除SGUPDA~1.EXE自啟動(dòng)項(xiàng),C:\Program Files\Common Files\ODBC目錄下全部都是跟游戲無關(guān)額外釋放的文件,干脆將其全部刪除,***重啟電腦即可。
圖7:用Xuetr刪除病毒的自啟動(dòng)項(xiàng)
總結(jié)
由于dll劫持漏洞發(fā)生在三方軟件的編寫上,這種打補(bǔ)丁的工作自然落到了軟件編寫者的頭上。對(duì)于普通網(wǎng)民來說,除了謹(jǐn)慎下載以外,運(yùn)行一些來歷不明的程序前***先用殺毒軟件掃描,不要貿(mào)然運(yùn)行,畢竟安全軟件不是***的,也會(huì)有防不住的時(shí)候。但防不住不代表殺不掉,由于那些dll包含病毒代碼,安全軟件可以通過特征碼掃描殺掉它們??偟膩碚f,病毒的免殺手段花樣百出、層出不窮,那么安全廠商也只好把這“貓捉老鼠”的游戲繼續(xù)下去。