教你如何找到執行緒插入式木馬
目前網路上最猖獗的病毒估計非木馬程式莫數了,特別是在過去的2004年木馬程式的攻擊性也有了很大的加強,在程式隱藏方面,做了較大的改動,不再採用獨立的EXE可執行檔案形式,而是改為核心嵌入方式、遠端執行緒插入技術、掛接PSAPI等,這些木馬也是目前最難對付的。本期就教你查詢和清除執行緒插入式木馬。
操作步驟:
1、通過自動執行機制查木馬
一說到查詢木馬,許多人馬上就會想到通過木馬的啟動項來尋找“蛛絲馬跡”,具體的地方一般有以下幾處:
1)登錄檔啟動項:
在“開始/執行”中輸入“regedit.exe”開啟登錄檔編輯器,依次展開[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\],檢視下面所有以"Run"開頭的項,其下是否有新增的和可疑的鍵值,也可以通過鍵值所指向的檔案路徑來判斷,是新安裝的軟體還是木馬程式。
另外[HKEY LOCAL MACHINE\Software\classes\exefile\shell\open\command\]鍵值也可能用來載入木馬,比如把鍵值修改為“X:\windows\system\ABC.exe "%1"%”。
2)系統服務
有些木馬是通過新增服務項來實現自啟動的,大家可以開啟登錄檔編輯器,在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices]下查詢可疑鍵值,並在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\]下檢視的可疑主鍵。
然後禁用或刪除木馬新增的服務項:在“執行”中輸入“Services.msc”開啟服務設定視窗,裡面顯示了系統中所有的服務項及其狀態、啟動型別和登入性質等資訊。找到木馬所啟動的服務,雙擊開啟它,把啟動型別改為“已禁用”,確定後退出。也可以通過登錄檔進行修改,依次展開“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服務顯示名稱”鍵,在右邊窗格中找到二進位制值“Start”,修改它的數值數,“2”表示自動,“3”表示手動,而“4”表示已禁用。當然最好直接刪除整個主鍵,平時可以通過登錄檔匯出功能,備份這些鍵值以便隨時對照。
3)開始選單啟動組
現在的木馬大多不再通過啟動選單進行隨機啟動,但是也不可掉以輕心。如果發現在“開始/程式/啟動”中有新增的項,可以右擊它選擇“查詢目標”到檔案的目錄下檢視一下,如果檔案路徑為系統目錄就要多加小心了。也可以在登錄檔中直接檢視,它的位置為[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders],鍵名為Startup。
4)系統INI檔案Win.ini和System.ini
系統INI檔案Win.ini和System.ini裡也是木馬喜歡隱蔽的場所。選擇“開始/執行”,輸入“msconfig”調出系統配置實用程式,檢查Win.ini的[Windows]小節下的load和run欄位後面有沒有什麼可疑程式,一般情況下“=”後面是空白的;還有在System.ini的[boot]小節中的Shell=Explorer.exe後面也要進行檢查。
5)批處理檔案
如果你使用的是WIN 9X系統,C盤根目錄下“AUTOEXEC.BAT”和WINDOWS目錄下的“WinStart.bat”兩個批處理檔案也要看一下,裡面的命令一般由安裝的軟體自動生成,在系統預設會將它們自動載入。在批處理檔案語句前加上“echo off”,啟動時就只顯示命令的執行結果,而不顯示命令的本身;如果再在前面加一個“@”字元就不會出現任何提示,以前的很多木馬都通過此方法執行。
2、通過檔案對比查木馬
最近新出現的一種木馬。它的主程式成功載入後,會將自身做為執行緒插入到系統程式SPOOLSV.EXE中,然後刪除系統目錄中的病毒檔案和病毒在登錄檔中的啟動項,以使反病毒軟體和使用者難以查覺,然後它會監視使用者是否在進行關機和重啟等操作,如果有,它就在系統關閉之前重新建立病毒檔案和登錄檔啟動項。下面的幾招可以讓它現出原形(下面均以Win XP系統為例):
1)對照備份的常用程式
大家平時可以先備份一份程式列表,以便隨時進行對比查詢可疑程式。方法如下:開機後在進行其他操作之前即開始備份,這樣可以防止其他程式載入程式。在執行中輸入“cmd”,然後輸入“tasklist /svc >X:\processlist.txt”(提示:不包括引號,引數前要留空格,後面為檔案儲存路徑)回車。這個命令可以顯示應用程式和本地或遠端系統上執行的相關任務/程式的列表。輸入“tasklist /?”可以顯示該命令的其它引數。
2)對照備份的系統DLL檔案列表
對於沒有獨立程式的DLL木馬怎麼辦嗎?既然木馬打的是DLL檔案的主意,我們可以從這些檔案下手,一般系統DLL檔案都儲存在system32資料夾下,我們可以對該目錄下的DLL檔名等資訊作一個列表,開啟命令列視窗,利用CD命令進入system32目錄,然後輸入“dir *.dll>X:\listdll.txt”敲回車,這樣所有的DLL檔名都被記錄到listdll.txt檔案中。日後如果懷疑有木馬侵入,可以再利用上面的方法備份一份檔案列表“listdll2.txt”,然後利用“UltraEdit”等文字編輯工具進行對比;或者在命令列視窗進入檔案儲存目錄,輸入“fc listdll.txt listdll2.txt”,這樣就可以輕鬆發現那些發生更改和新增的DLL檔案,進而判斷是否為木馬檔案。
3)對照已載入模組
頻繁安裝軟體會使system32目錄中的檔案發生較大變化,這時可以利用對照已載入模組的方法來縮小查詢範圍。在“開始/執行”中輸入“msinfo32.exe”開啟 “系統資訊”,展開“軟體環境/載入的模組”,然後選擇“檔案/匯出”把它備份成文字檔案,需要時再備份一個進行對比即可。
4)檢視可疑埠
所有的木馬只要進行連線,接收/傳送資料則必然會開啟埠,DLL木馬也不例外,這裡我們使用netstat命令檢視開啟的埠。我們在命令列視窗中輸入“netstat -an”顯示出顯示所有的連線和偵聽埠。Proto是指連線使用的協議名稱,Local Address是本地計算機的IP地址和連線正在使用的埠號,Foreign Address是連線該埠的遠端計算機的IP地址和埠號,State則是表明TCP連線的狀態。Windows XP所帶的netstat命令比以前的版本多了一個-O引數,使用這個引數就可以把埠與程式對應起來。輸入“netstat /?”可以顯示該命令的其它引數。
接著我們可以通過分析所開啟的埠,將範圍縮小到具體的程式上,然後使用程式分析軟體,例如《Windows優化大師》目錄下的WinProcess.exe程式,來查詢嵌入其中的木馬程式。有些木馬會通過埠劫持或者埠重用的方法來進行通訊的,一般它們會選擇139、80等常用埠,所以大家分析時要多加註意。也可以利用網路嗅探軟體(如:Commview)來了解開啟的埠到底在傳輸些什麼資料
本文轉自 goldwinner 51CTO部落格,原文連結:http://blog.51cto.com/355665/88317,如需轉載請自行聯絡原作者
相關文章
- 關於執行緒插入函式如何用的問題執行緒函式
- 突破常規限制執行asp木馬(轉)
- 乾貨:教你如何監控 Java 執行緒池執行狀態Java執行緒
- springboot配置執行緒池使用多執行緒插入資料Spring Boot執行緒
- 釋放並執行病毒及風險程式的木馬(轉)
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- 黑馬程式猿——12,多執行緒(2)執行緒
- 如何理解執行緒執行緒
- 多執行緒併發篇——如何停止執行緒執行緒
- top命令找到佔用CPU最高的java執行緒Java執行緒
- python多執行緒中:如何關閉執行緒?Python執行緒
- 教你幾招識別和防禦Web網頁木馬Web網頁
- 多執行緒常用函式執行緒函式
- BetaBot 木馬分析
- 木馬逆向分析
- 木馬學習
- 木牛流馬
- 執行緒池中多餘的執行緒是如何回收的?執行緒
- pyqt5 子執行緒如何操作主執行緒GUIQT執行緒GUI
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 如何插入關聯表資料,或插入資料的時候執行,根據某欄位執行一個函式函式
- 重走JAVA之路(五):面試又被問執行緒池原理?教你如何反擊Java面試執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- Java 執行緒池中的執行緒複用是如何實現的?Java執行緒
- 什麼是Python執行緒?Python執行緒如何建立?Python執行緒
- 教你如何在Golang中執行JavaScriptGolangJavaScript
- VUE:教你如何執行vue專案Vue
- 教你如何用鐵威馬NAS進行遠端下載?
- 多執行緒-執行緒控制之守護執行緒執行緒
- 最全java多執行緒總結2--如何進行執行緒同步Java執行緒
- Control的Invoke和BeginInvoke 是相對於支線執行緒(因為一般在支線執行緒中呼叫,用來更新主執行緒ui)Invoke立即插入主執行緒中執行,而BeginInvoke 要等主執行緒結束才執行執行緒UI
- 執行緒和執行緒池執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒