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