動態嵌入式DLL木馬

動態嵌入式木馬是為了在NT系統下能夠繼續隱藏進程,木馬的開發者們開始利用DLL(Dynamic Link Library動態程式庫)檔案,起初他們只是將自己的木馬寫成DLL形式來替換系統中負責Win Socket1.x的函式調用wsock32.dll(Win Socket2中則由WS2_32.DLL負責),這樣通過對約定函式的操作和對未知函式的轉發(DLL木馬替換wsock32.dll時會將之更名,以便實現日後的函式轉發)來實現遠程控制的功能。

基本介紹

  • 中文名:動態嵌入式DLL木馬
  • 作業系統:從Win98過渡到Winnt系統
  • 狀態:日漸衰弱
  • 清除DLL木馬:從DLL木馬的DLL檔案入手
隨著MS的作業系統,清除步驟,

隨著MS的作業系統

從Win98過渡到Winnt系統(包括2k/xp),MS的任務管理器也一下子脫胎換骨,變得火眼金睛起來(在WINNT下傳統木馬再也無法隱藏自己的進程),這使得以前在win98下靠將進程註冊為系統服務就能夠從任務管理器中隱形的木馬面臨前所未有的危機,所以木馬的開發者及時調整了開發思路,所以才會有今天這篇討論如何清除動態嵌入式DLL木馬的文章。
隨著MS數字簽名技術和檔案恢復功能的出台,這種DLL馬的生命力也日漸衰弱了,於是在開發者的努力下出現了時下的主流木馬--動態嵌入式DLL木馬,將DLL木馬嵌入到正在運行的系統進程中.explorer.exe、svchost.exe、smss.exe等無法結束的系統關鍵進程是DLL馬的最愛,這樣這樣在任務管理器里就不會出現我們的DLL檔案,而是我們DLL的載體EXE檔案.
當然通過進一步的加工DLL木馬還可以實現另外的一些如連線埠劫持/復用(也就是所謂的無連線埠)、註冊為系統服務、開多執行緒保護、等功能。簡而言之,就是DLL木馬達到了前所未有的隱蔽程度。

清除步驟

那么我們如何來發現並清除DLL木馬呢?
一,從DLL木馬的DLL檔案入手,我們知道system32是個捉迷藏的好地方,許多木馬都削尖了腦袋往那裡鑽,DLL馬也不例外,針對這一點我們可以在安裝好系統和必要的應用程式後,對該目錄下的EXE和DLL檔案作一個記錄:
運行CMD--轉換目錄到system32--dir *.exe>exeback.txt& dir *.dll>dllback.txt,這樣所有的EXE和DLL檔案的名稱都被分別記錄到exeback.txt和dllback.txt中,日後如發現異常但用傳統的方法查不出問題時,則要考慮是不是系統中已經潛入DLL木馬了.
這是我們用同樣的命令將system32下的EXE和DLL檔案記錄到另外的exeback1.txt和dllback1.txt中,然後運行CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比較前後兩次的DLL和EXE檔案,並將結果輸入到diff.txt中),這樣我們就能發現一些多出來的DLL和EXE檔案,然後通過查看創建時間、版本、是否經過壓縮等就能夠比較容易地判斷出是不是已經被DLL木馬光顧了。
沒有是最好,如果有的話也不要直接DLL掉,我們可以先把它移到資源回收筒里,若系統沒有異常反應再將之徹底刪除或者提交給防毒軟體公司。
二、上文也曾提到一些系統關鍵進程是這類木馬的最愛,所以一旦我們懷疑係統已經進駐了DLL木馬,我們當然要對這些關鍵進程重點照顧了,怎么照顧?這裡推薦一個強大的脫殼工具工具Procedump.exe他可以幫您看出進程到底調用了那些DLL檔案(如圖1)但是由於有的進程調用的DLL檔案非常多,使得靠我們自己去一個核對變的不太現實,
所以我們會用到一個shotgun寫的NT進程/記憶體模組查看器ps.exe,用命令ps.exe /a /m >nowdlls.txt將系統當前調用地所有DLL檔案地名稱保存到nowdlls.txt,然後我們再用fc將之於事先備份dllback.txt比較一下,這樣也能夠縮小排查範圍。
三、還記得木馬的特徵之一連線埠么?所有的木馬只要進行連線,只要它接受/傳送數據則必然會打開連線埠,DLL木馬也不例外,這也為我們發現他們提供了一條線索,我們可以使用foundstone的進程連線埠查看工具Fport.exe來查看與連線埠對應的進程,這樣可以將範圍縮小到具體的進程,然後結合Procedump來查找DLL木馬就比較容易了
.當然有如上文提到的有些木馬會通過連線埠劫持或者連線埠重用的方法來進行通信,139、80、1443、等常見連線埠則是木馬的最愛。因為即使即使用戶使用連線埠掃描軟體檢查自己的連線埠,發現的也是類似TCP UserIP:1026 ControllerIP:80ESTABLISHED 的情況,稍微疏忽一點,您就會以為是自己在瀏覽網頁(防火牆也會這么認為的)。所以光看連線埠還不夠,我們要對連線埠通信進行監控,這就是第四點要說的。
四、我們可以利用嗅探器來了解打開的連線埠到底在傳輸些什麼數據。通過將網卡設為混雜模式就可以接受所有的IP報文,嗅探程式可以從中選擇值得關注的部分進行分析,剩下的無非是按照RFC文檔對協定進行解碼。這樣就可以確定木馬使用的連線埠,結合Fport和Procedump我們就能夠查找到該DLL木馬了。至於嗅探器個人推薦使用IRIS,圖形界面比較容易上手。
五、通常說道查殺木馬我們會習慣性地到註冊表碰碰運氣,以前可能還蠻有效的,但如果碰到註冊為系統服務的木馬(原理:在NT/2K/XP這些系統中,系統啟動時會載入指定的服務程式)這時候檢查:
啟動組/註冊表/autoexec.bat/win.ini/sysytem.ini/wininit.ini/*.inf(例如autorun.inf)/config.sys等檔案就發現不了絲毫的異樣,這時候我們就應該查看一下系統服務了:右擊我的電腦--管理--服務和應用程式--服務,這時您會看到100多個服務,(MS也真是的,其中75%對個人用戶無用,可以禁止。),慢慢找吧,看誰不順眼就把它拎出來:),
當然如果您以前曾經用導出列表功能對服務備份過,則用檔案比較的方法會很容易發現哪些是外來客,這時您可以記錄下服務載入的是那個檔案,然後用Resource Kits里提供的srvinstw.exe來移除該服務並清除被載入的檔案。
通過以上五步,基本能發現並清除狡猾的動態嵌入式DLL木馬了,也許您也發現如果適當地做一些備份,會對我們的查找木馬的過程有很大的幫助,當然也會減輕不少工作的壓力喔。

相關詞條

熱門詞條

聯絡我們