大家對Windows操作系統一定不陌生,但你是否注意到系統中“svchost.exe這個文件呢?細心的朋友會發現windows中存在多個 “svchost進程(通過“ctrl+alt+del鍵打開任務管理器,這裡的“進程標簽中就可看到了),為什麼會這樣呢?下面就來揭開它神秘的面紗。
發現
在基於nt內核的windows操作系統家族中,不同版本的windows系統,存在不同數量的“svchost進程,用戶使用“任務管理器可查看其進程數目。一般來說,win2000有兩個svchost進程,winxp中則有四個或四個以上的svchost進程(以後看到系統中有多個這種進程,千萬別立即判定系統有病毒了喲),而win2003 server中則更多。這些svchost進程提供很多系統服務,如:rpCSS服務(remote procedure call)、dmserver服務(logical disk manager)、dhcp服務(dhcp clIEnt)等。
如果要了解每個svchost進程到底提供了多少系統服務,可以在win2000的命令提示符窗口中輸入“tlist -s命令來查看,該命令是win2000 support tools提供的。在winxp則使用“tasklist /svc命令。
svchost中可以包含多個服務
深入
windows系統進程分為獨立進程和共享進程兩種,“svchost.exe文件存在於“%systemroot% system32目錄下,它屬於共享進程。隨著windows系統服務不斷增多,為了節省系統資源,微軟把很多服務做成共享方式,交由 svchost.exe進程來啟動。但svchost進程只作為服務宿主,並不能實現任何服務功能,即它只能提供條件讓其他服務在這裡被啟動,而它自己卻不能給用戶提供任何服務。那這些服務是如何實現的呢?
原來這些系統服務是以動態鏈接庫(dll)形式實現的,它們把可執行程序指向 svchost,由svchost調用相應服務的動態鏈接庫來啟動服務。那svchost又怎麼知道某個系統服務該調用哪個動態鏈接庫呢?這是通過系統服務在注冊表中設置的參數來實現。下面就以rpcss(remote procedure call)服務為例,進行講解。
從啟動參數中可見服務是靠svchost來啟動的
實例
以Windows XP為例,點擊“開始/“運行,輸入“services.msc命令,彈出服務對話框,然後打開“remote procedure call屬性對話框,可以看到rpcss服務的可執行文件的路徑為“c:/windows/system32/svchost -k rpcss,這說明rpcss服務是依靠svchost調用“rpcss參數來實現的,而參數的內容則是存放在系統注冊表中的。
在運行對話框中輸入“regedit.exe後回車,打開注冊表編輯器,找到[hkey_local_Machine systemcurrentcontrolsetservicesrpcss]項,找到類型為“reg_expand_sz的鍵“magepath,其鍵值為“%systemroot%system32svchost -k rpcss(這就是在服務窗口中看到的服務啟動命令),另外在“parameters子項中有個名為“servicedll的鍵,其值為“% systemroot%system32rpcss.dll,其中“rpcss.dll就是rpcss服務要使用的動態鏈接庫文件。這樣 svchost進程通過讀取“rpcss服務注冊表信息,就能啟動該服務了。
解惑
因為svchost進程啟動各種服務,所以病毒、木馬也想盡辦法來利用它,企圖利用它的特性來迷惑用戶,達到感染、入侵、破壞的目的(如沖擊波變種病毒“w32.welchia.worm)。但windows系統存在多個svchost進程是很正常的,在受感染的機器中到底哪個是病毒進程呢?這裡僅舉一例來說明。
假設windows xp系統被“w32.welchia.worm感染了。正常的svchost文件存在於“c:/windows/system32目錄下,如果發現該文件出現在其他目錄下就要小心了。“w32.welchia.worm病毒存在於“c:/windows/system32wins目錄中,因此使用進程管理器查看svchost進程的執行文件路徑就很容易發現系統是否感染了病毒。windows系統自帶的任務管理器不能夠查看進程的路徑,可以使用第三方進程管理軟件,如“windows優化大師進程管理器,通過這些工具就可很容易地查看到所有的svchost進程的執行文件路徑,一旦發現其執行路徑為不平常的位置就應該馬上進行檢測和處理。
很多對安全知識了解不多的菜鳥們,在計算機中了“木馬之後就束手無策了。雖然現在市面上有很多新版殺毒軟件都可以自動清除大部分“木馬,但它們並不能防范新出現的“木馬程序。因此,查殺木馬,最關鍵的還是要知道“木馬的工作原理。相信你看了這篇文章之後,就會 成為一名查殺“木馬的高手了。
1、“木馬萬能查殺法
“木馬程序會想盡一切辦法隱藏自己,主要途徑有:在任務欄中隱藏自己,這是最基本的辦法。只要把Form的Visible屬性設為False,ShowInTaskBar設為False,程序運行時就不會出現在任務欄中了。在任務管理器中隱形:將程序設為“系統服務可以很輕松地偽裝自己。當然它也會悄無聲息地啟動,黑客當然不會指望用戶每次啟動後點擊“木馬圖標來運行服務端,“木馬會在每次用戶啟動時自動裝載。Windows系統啟動時自動加載應用程序的方法,“木馬都會用上,如:啟動組、Win.ini、System.ini、注冊表等都是“木馬藏身的好地方。
下面具體談談“木馬是怎樣自動加載的。在Win.ini文件中,在[WINDOWS]下面,“run=和 “load=是可能加載“木馬程序的途徑,必須仔細留心它們。一般情況下,它們的等號後面應該什麼都沒有,如果發現後面跟有路徑與文件名不是你熟悉的啟動文件,你的計算機就可能中“木馬了。當然你也得看清楚,因為好多“木馬,如“AOL Trojan木馬,它把自身偽裝成 command.exe(真正的系統文件為command.com)文件,如果不注意可能不會發現它不是真正的系統啟動文件(特別是在Windows窗口下)。
在System.ini文件中,在[BOOT]下面有個“shell=文件名。正確的文件名應該是“explorer.exe,如果不是“explorer.exe,而是“shell= explorer.exe程序名,那麼後面跟著的那個程序就是“木馬程序,就是說你已經中“木馬了。注冊表中的情況最復雜,通過regedit命令打開注冊表編輯器,在點擊至:“HKEY-LOCAL-MacHINESoftwareMicrosoftWindowsCurrentVersionRun目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴展名為EXE,這裡切記:有的“木馬程序生成的文件很像系統自身文件,想通過偽裝蒙混過關,如“Acid Battery v1.0木馬,它將注冊表“HKEY-LOCAL-MACHINESO FTWAREMicrosoftWindowsCurrentVersionRun下的Explorer鍵值改為Explorer= “C:WINDOWSexpiorer.exe,“木馬程序與真正的Explorer之間只有“i與“l的差別。當然在注冊表中還有很多地方都可以隱藏“木馬程序,如:“HKEY-CURRENTUSERSoftwareMicrosoftWindowsCurrentVersionRun、“HKEY-USERS****SoftwareMicrosoftWindowsCurrentVersionRun的目錄下都有可能,最好的辦法就是在“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun下找到“木馬程序的文件名,再在整個注冊表中搜索即可。
知道了“木馬的工作原理,查殺“木馬就變得很容易,如果發現有“木馬存在,最有效的方法就是馬上將計算機與網絡斷開,防止黑客通過網絡對你進行攻擊。然後編輯win.ini文件,將[WINDOWS]下面,“run=“木馬程序或“load=“木馬程序更改為“run=和“load=;編輯system.ini文件,將[BOOT]下面的“shell=‘木馬’文件,更改為:“shell=explorer.exe;在注冊表中,用regedit對注冊表進行編輯,先在“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun下找到“木馬程序的文件名,再在整個注冊表中搜索並替換掉“木馬程序,有時候還需注意的是:有的“木馬程序並不是直接 將“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun下的“木馬鍵值刪除就行了,因為有的“木馬如:BladeRunner“木馬,如果你刪除它,“木馬會立即自動加上,你需要的是記下“木馬的名字與目錄,然後退回到MS-Dos下,找到此“木馬文件並刪除掉。重新啟動計算機,然後再到注冊表中將所有“木馬文件的鍵值刪除。至此,我們就大功告成了。