1.檢測木馬的存在
首先,查看system.ini、win.ini、啟動組中的啟動項目。由“開始->運行”,輸入msconfig,運行Windows自帶的“系統配置實用程序”。
a.查看system.ini文件
選中“System.ini”標簽,展開[boot]目錄,查看“shell=”這行,正常為“shell=Explorer.exe”,如果不是這樣,就可能中了木馬了。
b.查看win.ini文件
c.選中win.ini標簽,展開[windows]目錄項,查看“run=”和“load=”行,等號后面正常應該為空。
d.查看啟動組
再看看啟動標簽中的啟動項目,有沒有什么非正常項目?要是有象netbus、netspy、bo等關鍵詞,極有可能就是木馬了。本人一般都將啟動組中的項目保持在比較精簡的狀態,不需要或無大用途的項目都屏蔽掉了。如下圖,只是選中了與注冊表檢查、音量控制、輸入法和能源保護相關的啟動欄。到時要是有木馬出現,自是一目了然。
e.查看注冊表
由“開始->運行”,輸入regedit,確定就可以運行注冊表編輯器。再展開至:“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件項目,比如netbus、netspy、netserver等的單詞。注意,有的木馬程序生成的服務器程序文件很像系統自身的文件,想由此偽裝蒙混過關。比如Acid Battery木馬,它會在注冊表項“HKEY-LOCAL-MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”下加入
Explorer=“C:WINDOWSexpiorer.exe”,木馬服務器程序與系統自身的真正的Explorer之間只有一個字母的差別!
通過類似的方法對下列各個主鍵下面的鍵值進行檢查:
HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnceEx
HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices
HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
如果**作系統是Windows NT,還得注意HKEY-LOCAL-MACHINESoftwareSAM下面的內容,如果有項目,那極有可能就是木馬了。正常情況下,該主鍵下面是空的。
當然在注冊表中還有很多地方都可以隱藏木馬程序,上面這些主鍵是木馬比較常用的隱身之處。除此之外,象HKEY-CURRENT-USERSoftwareMicrosoftWindowsCurrentVersionRun、HKEY-USERS****SoftwareMicrosoftWindowsCurrentVersionRun的目錄下都有可能成為木馬的藏身之處。最好的辦法就是在HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun或其它主鍵下面找到木馬程序的文件名,再通過其文件名對整個注冊表進行全面搜索就知道它有幾個藏身的地方了。
如果有留意,注冊表各個主鍵下都會有個叫“(默認)”名稱的注冊項,而且數據顯示為“(未設置鍵值)”,也就是空的。這是正常現象。如果發現這個默認項被替換了,那么替換它的就是木馬了。
f.其它方法
上網過程中,在進行一些計算機正常使用**作時,發現計算機速度明顯起了變化、硬盤在不停的讀寫、鼠標不聽使喚、鍵盤無效、自己的一些窗口在未得到自己允許的情況下被關閉、新的窗口被莫名其妙地打開.....這一切的不正常現象都可以懷疑是木馬客戶端在遠程控制你的計算機。
如果懷疑你現在正在被木馬控制,那么不要慌張地去拔了網線或抽了Modem上的電話線。有可能的話,最好可以逮到“黑”你的那個家伙。下面就介紹一下相應的方法:
由“開始->運行”,輸入command,確定,開一個MS-DOS窗口。或者由“開始->程序->MS-DOS”來打開它。在MS-DOS窗口的命令行鍵入“netstat”查看目前已與本計算機建立的連接。
顯示出來的結果表示為四列,其意思分別為Proto:協議,Local Address:本地地址,Foreign Address:遠程地址,State:狀態。在地址欄中冒號的后面就是端口號。如果發現端口號碼異常(比如大于5000),而Foreign Address中的地址又不為正常網絡瀏覽的地址,那么可以判斷你的機器正被Foreign Address中表示的遠程計算機所窺視著。在對應行的Foreign Address中顯示的IP地址就是目前非法連接你計算機的木馬客戶端。
當網絡處于非活動狀態,也就是目前沒什么活動網絡連接時,在MS-DOS窗口中用netstat命令將看不到什么東西。此時可以使用“netstat -a”,加了常數“-a”表示顯示計算機中目前處于監聽狀態的端口。對于Windows98來說,正常情況下,會出現如下的一些處于監聽狀態的端口(安裝有NETBEUI協議):
如果出現有不明端口處于監聽(LISTENING)狀態,而目前又沒有進行任何網絡服務**作,那么在監聽該端口的就是特洛伊木馬了!如下圖所示的23456和23457端口都處于監聽狀態,很明顯是木馬造成的。
注意,使用此方法查詢處于監聽狀態的端口,一定要保證在短時間內(最好5分鐘以上)沒有運行任何網絡沖浪軟件,也沒有進行過任何網絡**作,比如瀏覽網頁,收、發信等。不然容易混淆對結果的判斷。
2.刪除木馬
好了,用上面的一些方法發現自己的計算機中了木馬,那怎么辦?當然要將木馬刪除了,難道還要保留它!首先要將網絡斷開,以排除來自網絡的影響,再選擇相應的方法來刪除它。
a.由木馬的客戶端程序
由先前在win.ini、system.ini和注冊表中查找到的可疑文件名判斷木馬的名字和版本。比如“netbus”、“netspy”等,很顯然對應的木馬就是NETBUS和NETSPY。從網上找到其相應的客戶端程序,下載并運行該程序,在客戶程序對應位置填入本地計算機地址:127.0.0.1和端口號,就可以與木馬程序建立連接。再由客戶端的卸除木馬服務器的功能來卸除木馬。端口號可由“netstat -a”命令查出來。
這是最容易,相對來說也比較徹底載除木馬的方法。不過也存在一些弊端,如果木馬文件名給另外改了名字,就無法通過這些特征來判斷到底是什么木馬。如果木馬被設置了密碼,既使客戶端程序可以連接的上,沒有密碼也登陸不進本地計算機。當然要是你知道該木馬的通用密碼,那就另當別論了。還有,要是該木馬的客戶端程序沒有提供卸載木馬的功能,那么該方法就沒什么用了。當然,現在多數木馬客戶端程序都是有這個功能的。
b.手工
不知道中的是什么木馬、無登陸的密碼、找不到其相應的客戶端程序、......,那我們就手工慢慢來刪除這該死的木馬吧。
用msconfig打開系統配置實用程序,對win.ini、system.ini和啟動項目進行編輯。屏蔽掉非法啟動項。如在win.ini文件中,將將[WINDOWS]下面的“run=xxx”或“load=xxx”更改為“run=”和“load=”;編輯system.ini文件,將[BOOT]下面的“shell=xxx”,更改為:“shell=Explorer.exe”。
用regedit打開注冊表編輯器,對注冊表進行編輯。先由上面的方法找到木馬的程序名,再在整個注冊表中搜索,并刪除所有木馬項目。由查找到的木馬程序注冊項,分析木馬文件在硬盤中的位置(多在C:WINDOWS和C:WINDOWSCOMMAND目錄下)。啟動到純MS-DOS狀態(而不是在Windows環境中開個MS-DOS窗口),用del命令將木馬文件刪除。如果木馬文件是系統、隱藏或只讀文件,還得通過“attrib -s -h -r”將對應文件的屬性改變,才可以刪除。
為保險起見,重新啟動以后再由上面各種檢測木馬的方法對系統進行檢查,以確保木馬的確被刪除了。
目前也有一些木馬是將自身的程序與Windows的系統程序進行了綁定(也就是感染了系統文件)。比如常用到的Explorer.exe,只要Explorer.exe一得到運行,木馬也就啟動了。這種木馬可以感染可執行文件,那就更象病毒了。由手工刪除文件的方法處理木馬后,一運行Explorer.exe,木馬又得以復生!這時要刪除木馬就得連Explorer.exe文件也給刪除掉,再從別人相同**作系統版本的計算機中將該文件Copy過來就可以了