目前網絡上最猖獗的病毒估計非木馬程序莫數了,現在的木馬攻擊性越來越強,在進程隱藏方面,很少采用獨立的EXE可執行文件形式,而是改為內核嵌入方式、遠程線程插入技術、掛接PSAPI等,這些木馬也是目前最難對付的。現在教你查找和清除線程插入式木馬。
一、通過自動運行機制查木馬
一說到查找木馬,許多人馬上就會想到通過木馬的啟動項來尋找“蛛絲馬跡”,具體的地方一般有以下幾處:
(1)注冊表啟動項
在“開始/運行”中輸入“regedit.exe”打開注冊表編輯器,依次展開[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion]和[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion]查看下面所有以Run開頭的項,其下是否有新增的和可疑的鍵值, 也可以通過鍵值所指向的文件路徑來判斷,是新安裝的軟件還是木馬程序。另外[HKEY_LOCAL_MACHINESoftwareclassesexefileshellopencommand]鍵值也可能用來加載木馬,比如把鍵值修改為“X:windowssystemABC.exe %1%”。
(2)系統服務
有些木馬是通過添加服務項來實現自啟動的,大家可以打開注冊表編輯器,在[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunservices]下查找可疑鍵值,並在[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices]下查看的可疑主鍵。然後禁用或刪除木馬添加的服務項:在“運行”中輸入“Services.msc”打開服務設置窗口,裡面顯示了系統中所有的服務項及其狀態、啟動類型和登錄性質等信息。找到木馬所啟動的服務,雙擊打開它,把啟動類型改為“已禁用”,確定後退出。也可以通過注冊表進行修改,依次展開“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices服務顯示名稱”鍵,在右邊窗格中找到二進制值“Start”,修改它的數值數,“2”表示自動,“3”表示手動,而“4”表示已禁用。當然最好直接刪除整個主鍵,平時可以通過注冊表導出功能,備份這些鍵值以便隨時對照。
(3)開始菜單啟動組
現在的木馬大多不再通過啟動菜單進行隨機啟動,但是也不可掉以輕心。如果發現在“開始/程序/啟動”中有新增的項,可以右擊它選擇“查找目標”到文件的目錄下查看一下,如果文件路徑為系統目錄就要多加小心了。也可以在注冊表中直接查看,它的位置為[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell 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)批處理文件
如果你使用的是Win9X系統,C盤根目錄下“AUTOEXEC.BAT”和WINDOWS目錄下的“WinStart.bat”兩個批處理文件也要看一下,裡面的命令一般由安裝的軟件自動生成,在系統默認會將它們自動加載。在批處理文件語句前加上“echo off”,啟動時就只顯示命令的執行結果,而不顯示命令的本身;如果再在前面加一個“@”字符就不會出現任何提示,以前的很多木馬都通過此方法運行。
二、通過文件對比查木馬
新出現的木馬主程序成功加載後,會將自身作為線程插入到系統進程中,然後刪除系統目錄中的病毒文件和病毒在注冊表中的啟動項,以使反病毒軟件和用戶難以查覺,然後它會監視用戶是否在進行關機和重啟等操作,如果有,它就在系統關閉之前重新創建病毒文件和注冊表啟動項。下面的幾招可以讓它現出原形(下面均以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 /?”可以顯示該命令的其它參數。接著我們可以通過分析所打開的端口,將范圍縮小到具體的進程上,然後使用進程分析軟件,例如卡卡助手和瑞星個人防火牆。