倍可親

回復: 0
列印 上一主題 下一主題

超級屠馬人:新型木馬必殺技

[複製鏈接]

711

主題

768

帖子

1036

積分

一星貝殼精英

有車階層(十級)

Rank: 4

積分
1036
跳轉到指定樓層
樓主
mgshong 發表於 2006-7-29 18:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 在這個萬「馬」奔騰的時代,網路上充斥著各種各樣的木馬,不過隨著殺毒技術的進步和大家防毒意識的提高,傳統木馬已漸漸失去市場,而DLL木馬則「與時俱進」以其強大的生命力,繼續網路中「為非作歹」。因DLL木馬的啟動方式比較特別,它不象傳統的木馬,啟動時會「傻傻」地在進程列表中暴露自己,而且還可以通過插入系統進程運行自己,具有很強的隱蔽性。本文就和大家一起來揭開DLL木馬的神秘面紗。

  本文相關軟體:Autoruns V8.53 漢化版   推薦軟體:Safe360(集成正版卡巴斯基6.0)

  一、初識DLL木馬

  首先了解一下DLL文件,DLL(Dynamic Link Library)是系統中的動態鏈接庫文件,DLL文件本身並不能夠運行,需要應用程序來調用。當程序運行時,Windows將其裝入內存中,並尋找文件中出現的動態鏈接庫文件。對於每個動態鏈接,Windows都會裝入指定的DLL文件並把它映射到相應虛擬地址空間中。DLL木馬實際就是把一段實現了木馬功能的代碼加上一些特殊代碼寫成DLL文件。DLL文件運行時是插入到應用程序的內存模塊當中,所以DLL文件無法刪除。

  下面以一個實例說明DLL文件的運行,單擊「開始→運行」並輸入「rundll32.exe netplwiz.dll,UsersRunDll」,回車後會看到一個用戶賬戶設置窗口,打開進程列表發現系統新增一個「rundll32.exe」進程,但是並不會發現DLL之類的進程,「netplwiz.dll,UsersRunDll」就是通過「rundll32.exe」來調用的,如果這是一個DLL木馬,那麼它啟動后新增的進程就是正常的「rundll32.exe」,一般用戶也不會將「rundll32.exe」中止或刪除,而木馬此時卻可以在後台悄悄地「作惡」。

  小提示

  當然除了用「rundll32.exe」作為載體外,DLL木馬還可以通過動態嵌入技術,通過任意一個系統進程進行載入。

  二、查殺方法

  前面介紹了DLL文件自身並不能運行,它必須通過其它程序調用才能「作惡」,主要有以下兩種途徑:

  1.通過Rundl32l.exe啟動的木馬

  木馬運行如上所述,系統啟動后若發現載入了「rundll32.exe」進程,那很可能就是中招了。不過系統也會調用「rundll32.exe」來載入正常的DLL文件,主要看載入的是什麼DLL文件,因為木馬大多是通過註冊表鍵值來自啟動。首先檢查那些常見的自啟動鍵值,如「3721」就是通過DLL文件來啟動的,雖然它並不是木馬,但是它的自啟動和運行方式可以借鑒。它在註冊表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下,新添了一個「CnsMin」的鍵值,啟動命令是「Rundll32.exe E:\WINDOWS\DOWNLO~1\CnsMin.dll,Rundll32」(如圖1)。這樣每次啟動系統后「CnsMin.dll」都會被Rundll32.exe調用,而在進程列表出現的則是Rundl32.exe。此類DLL木馬的運行過程大多如此,查殺方法是:首先將「rundll32.exe」進程終止,接著查找註冊表各啟動鍵值,從啟動命令的路徑中找到相應的DLL文件並刪除即可。

  

  

  


  2. 嵌入式木馬

  運用Rundl32l.exe調用的木馬,很容易被用戶發現並查殺。為了提高「馬兒」的成活率,網上出現了動態嵌入式木馬,它是將木馬代碼嵌入到正在運行的進程中。理論上來說,在Windows中的每個進程都有自己的私有內存空間,別的進程是不允許對這個私有空間進行操作的,但實際上,動態嵌入式木馬就是通過嵌入進程來「作惡」的。雖然編寫這種動態式嵌入木馬有一定的技術難度,但是很多「雷鋒」式的制馬高手將此類木馬隨意放在網上,初學者下載這種木馬後只要按提示選擇嵌入進程就可以輕鬆生成木馬,把客戶端發送到對方電腦並運行后,動態嵌入式木馬就可以在我們的電腦「安家落戶」了,這也是眾多用戶中招的原因。下面以查殺「winlogon.exe」進程木馬為例,介紹一下查殺技巧。

  ①.查看連接

  不管是何種類型的木馬,它要「作惡」肯定要通過本地埠與外部電腦連接,只要查看本機開放埠和連接情況,一般就可以找出木馬客戶端。查看埠和連接可用「netstat」命令(格式:nestat –a –o),不過這個命令並不能看到發起連接的進程。這裡推薦大家使用「CurrPorts 漢化版」,它是一款免費的網路連接檢測工具,除了能夠列出所有TCP/IP和UDP連接外,還可以列出打開埠的應用程序,並提供終止程序功能。運行「CurrPorts」后,會發現「winlogon.exe」已被一遠程地址連接,打開的埠是6666、6671、6669、6672。「winlogon.exe」是Windows NT的用戶登陸程序,這個進程是管理用戶登錄和退出的,它在用戶按下CTRL+ALT+DEL時就激活了,顯示安全對話框。正常情況下,這個進程是不會向外發起連接的,若「winlogon.exe」發起連接,則是中了嵌入「winlogon.exe」進程的DLL木馬,在「CurrPorts」中選中進程,依次將連接中斷(如圖2),需要注意的是不要選擇「終止打開選中埠的進程」,否則電腦會自動重啟。

  

  

  


  小知識:埠狀態參數含義

  LISTENING表示處於偵聽狀態,就是說該埠是開放的,等待連接,但還沒有被連接,只有TCP協議的服務埠才能處於LISTENING狀態。

  ESTABLISHED的意思是建立連接,表示兩台機器正在通信。

  TIME_WAIT的意思是結束了這次連接。說明埠曾經有過訪問,但訪問結束了。

  SYN_SENT是本機向其它計算機發出的連接請求,一般這個狀態存在的時間很短。

  ②.分析

  既然是插入進程的DLL木馬,通過查看「winlogon.exe」進程載入DLL模塊應該可以找出「真兇」。查看模塊利用免費軟體「prcmgrWindows進程管理器」,運行軟體后選中進程並切換到「進程模塊」選項卡,接著單擊「導出列表」,將載入列表導出為TXT文件(如圖3)。

  

  

  


  小提示

  若木馬插入到「Explorer」、「Iexplorer.exe」等進程中,由於啟動的應用程序不同,則載入的DLL模塊也是不同的,為便於比較最好關閉所有不必要的程序再進行導出。

  ③.查找木馬

  用上文的方法到另一台電腦中同樣導出「winlogon.exe」進程載入的DLL模塊文件,用記事本打開這兩個文件比較,可以看到中招電腦上進程模塊比正常電腦多出14個(如圖4),現在一一比較將相同模塊文件刪除后,順利找到多出的14個DLL文件,經查看文件屬性獲知,「e:\windows\rundll.dll」為非微軟「製造」,它就是DLL木馬。

  

  

  


  小提示

  如果是系統正常的DLL文件,文件屬性中都會有一個「版本」標籤,公司名稱為「Microsoft Corporation」,創建日期是「2001年9月5日,:13:00」,可根據這一特性來判斷是否為木馬文件。如本例的「rundll.dll」木馬,創建日期「2004年11月13日, :11:59」,修改日期則是「2001年9月5日, :13:00」,也就是說還沒創建文件時就被修改了,顯然是非法文件!

  ④.刪除木馬

  由於「winlogon.exe」是系統關鍵進程無法終止,所以也無法直接刪除「rundll.dll」,這裡使用系統許可權設置來禁止「winlogon.exe」的調用。打開「我的電腦」,單擊「工具→文件夾選項→查看」,然後在「高級設置」選項下去除「簡單文件共享(推薦)」前的小勾;隨後找到「rundll.dll」右擊選擇「屬性」命令,點擊「安全」標籤,接著單擊「高級」項,在彈出的窗口清除「從父項繼承那些可以應用到子對象的許可權項目,包括那些在此明確定義的項目」複選框,最後單擊刪除,去除所有繼承的許可權(如圖5),依次單擊「確定」後退出,這樣系統中就沒有任何進程可以調用「rundll.dll」,重啟后重新勾選「從父項繼承那些可以應用到子對象的許可權項目許可權」,然後將其刪除。

  

  

  


  小提示

  上述許可權操作僅對採用NTFS分區的系統有效,對於採用FAT32分區的系統,可以重啟後進入純DOS將木馬文件刪除。如果載入DLL木馬的進程可以被終止,如嵌入「Explorer.exe」木馬,只要將進程終止,然後找到文件將它刪除即可。

  ⑤.修復自啟動

  DLL木馬會通過註冊表鍵值進行自啟動,查看自啟動菜單推薦大家使用「Autoruns 8.13漢化版」,它也是一款免費工具,可以查看系統所有啟動項目。運行后單擊「登錄」,可以看到[HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Windows \CurrentVersion \policies \Explorer\Run]下,有一「Windows服務」啟動項極為可疑(載入的是「E:\WINDOWS\msagent\msymrj.com」),右擊選擇「轉到具體位置」(如圖6)。此時程序將直接打開註冊表,隨後將該鍵值刪除,至此DLL木馬順利被查殺。那麼「msymrj.com」與「rundll」木馬究竟是什麼關係?這其實是一對守護進程,用於守護嵌入「winlogon.exe」進程的木馬,如果發現被插入的進程被終止,立刻重新啟動該進程。不過本例的「winlogon.exe」進程如果被終止,系統會重新啟動,它也幫不上什麼忙了。

  

  

  


  小提示

  很多DLL木馬被終止后立刻又會復活,就是由於有守護進程的存在,只有把守護進程「掐死」后,才能終止木馬的運行。

  三、總結經驗

  嵌入式木馬作為一種「科技含量」較高的木馬,用一般方法不易發現,查殺也有一定的難度,我們只要根據上述流程進行查殺,還是可以將其全部「消滅」。總結一下查殺步驟:首先用「CurrPorts」查看本機開放埠和連接並終止非法連接,找到發起連接進程,接著用「prcmgrWindows進程管理器」找出DLL木馬,然後將木馬文件刪除,最後通過「Autoruns」修復註冊表即可。

  編輯提示:最近,奇虎推出的Safe360集成了卡巴斯基6.0版,帶有一個可以使用版面的正版序列號,自己試用了一下,感覺蠻不錯,推薦下載。
您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-7-19 11:43

快速回復 返回頂部 返回列表