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