天天看點

使用DLL技術的木馬分析

"木馬"大家都不陌生,給我們的系統安全帶來很大的危害。而且現在的木馬采用的技術越來越高,開始采用以".exe或.com"為字尾的可執行檔案,但這種技術隐蔽性很差,将木馬程序注冊為系統服務後,雖然在WINDOWS98系統中可以隐藏,但在基于WINNT核心的系統中卻一覽無遺,用WINDOWS任務管理器很容易發現它們,為了達到隐藏的目的,DLL技術是廣泛使用的一種手段,這種木馬的隐蔽性很強,難以發現。

  DLL是Dynamic Link Library(動态連結庫)的縮寫,DLL檔案是Windows系統的基礎,DLL檔案沒有程式邏輯,是由多個功能函數構成,它并不能獨立運作,一般都是由程序加載并調用的。因為DLL檔案不能獨立運作,是以在程序清單中并不會出現DLL檔案,這樣木馬利用DLL檔案的這種特性,把自身的木馬功能部分解壓縮到DLL庫檔案中,就可以很有效的隐藏自己,那DLL檔案不能獨立運作,木馬怎麼才能運作呢?

 運作DLL檔案最簡單的方法是利用Rundll32.exe,Rundll32者,顧名思義,執行Dll(動态連結庫)也,是Windows用來調用32位DLL函數時所使用的指令(16位的DLL檔案使用rundll.exe),Rundll32的使用方法如下:

  “rundll32.exe 動态連結庫名 ,函數名, 參數名”

 下面就以“Win32.Lovgate.H新變體”木馬病毒為例,看看他們如何通過調用Rundll32指令來實作自身的加載。

   “Win32.Lovgate.H新變體”木馬病毒會把自身的木馬功能部分解壓縮到一個個DLL庫檔案中,以便此木馬以一個單獨程式來運作,“reg678.dll”和“Task688.dll ”就是這樣的檔案,然後把木馬的DLL檔案添加到啟動項中以及注冊成服務,如下修改系統資料庫:

 “HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run”中,添加鍵名為“Remote Procedure Call Locator”的啟動項,其值為“RUNDLL32.EXE reg678.dll ondll_reg”(圖一)。

另外它還做以下修改:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/ll_reg

"ImagePath" = "RUNDLL32.EXE Task688.dll ondll_reg"

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NetMeeting Remote Desktop (RPC) Sharing,

"ImagePath" = "RUNDLL32.EXE Task688.dll ondll_reg"

這樣在WINDOWS任務管理器就沒辦法發現它,因為“Win32.Lovgate.H新變體”是使用Rundll32程式調用的,程序清單中根本不存在木馬程序,是不是很詭秘。即使你在系統資料庫啟動項看到“RUNDLL32.EXE reg678.dll ondll_reg”,也會以為是RUNDLL32.EXE調用系統DLL檔案,怎麼想到這就是木馬,太可怕了。

  另外,還有一種情況更為詭秘,就是把木馬的DLL檔案替換成系統常用的DLL檔案,如把木馬寫成wsock32.dll檔案,替換掉原先的wsock32.dll,将原先的DLL檔案重命名為wsockold.dll,這種方法隐蔽性更強,很難發現。

     那我們怎麼來防範這些使用DLL技術的木馬呢?下面就介紹一些經驗。

1、安裝病毒木馬防火牆

  現在的使用者都很注意病毒木馬的防範,但要經常更新病毒資料庫,這樣就可以有效的清除絕大部分木馬病毒,另外,很多網站提供免費的線上殺毒,這就更友善使用者清除木馬,比如3721提供的”安博士“線上殺毒( http://assistant.3721.com/),使用就相當友善,可以有效的清除木馬。另外建議大家使用專門針對木馬的清除軟體,如木馬克星。

2、使用程序/記憶體子產品檢視器

  DLL木馬對于程序管理器來說是隐藏的,是以我們既不能用程序管理器來查找,也無法直接将它停止運作,是以,我們不能指望NT自帶的程序管理器了,需要使用一些附加的工具。

 為了能發現DLL木馬,我們必須能檢視記憶體中“RUNDLL32.EXE”運作的DLL檔案,大家可以使用WINDOWS優化大師自帶的”程序管理器“(圖二),來檢視DLL檔案使用的情況,看看是否有異常,當然這需要使用者對WINDOWS系統有一定的了解才行。另外還要注意,可能木馬的DLL檔案替換了系統常用的DLL檔案,這時,就要檢視DLL檔案的大小是否變化,如果它的大小和正常情況有很大出入,那麼就要小心了。

3、檢視系統資料庫啟動項有無異常鍵名

  單擊”開始-->運作“,在運作對話框中輸入”msconfig",然後切換到“啟動”選項頁,這裡要注意啟動項中有無異常鍵名,如“Win32.Lovgate.H新變體”木馬病毒會在啟動項中添加”rundll32“項目,其值為“RUNDLL32.EXE reg678.dll ondll_reg”(msconfig圖檔),遇到這種類似情況大家一定要留心,WINDOWS2000不自帶“msconfig”程式,将WINDOWS XP下的msconfig檔案拷貝過去即可。

另外,還可以在運作對話框中輸入”regedit"指令,依次展開“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run”,這種方法也是一樣的。

 當然還可以使用端口程序關聯軟體、嗅探器等進行查找,這裡就不在詳細介紹了,有興趣的朋友可以檢視有關技術資料,進行深入研究。