2011年11月27日 星期日

SVCHOST是病毒嗎?

某天在裕誠上課時, 教室內此起彼落充斥著卡車司機尖銳刺耳的緊急煞車聲...
有隻可惡的病毒在班上四處流竄...

"svchost.exe應用程式錯誤..."的訊息一出現, 立刻聽老師指示火速移除我的外接硬碟...
老師說...如果回家以後還有看到它...要快點密老師幫忙處理...
可是...這到底是什麼東東啊! 後來在線上查了一下...

在電腦上按Ctrl+Alt+Del打開工作管理員,你有發現你的電腦中也有好幾個正在進行式的"svchost.exe"處理程序嗎?

[發現]

在基于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”命令。

[深入]
Windows系統進程分為獨立進程和共享進程兩種,“SVCHOST.EXE”文件存在于“%SystemRoot%\system32\”目錄下,它屬于共享進程。隨著Windows系統服務不斷增多,為了節省系統資源,微軟把很多服務做成共享方式,交由SVCHOST.EXE進程來啟動。但SVCHOST進程只作為服務宿主,並不能實現任何服務功能,即它只能提供條件讓其他服務在這里被啟動,而它自己卻不能給用戶提供任何服務。那這些服務是如何實現的呢?

原來這些系統服務是以動態鏈接庫(DLL)形式實現的,它們把可執行程序指向SVCHOST,由SVCHOST調用相應服務的動態鏈接庫來啟動服務。那SVCHOST又怎麼知道某個系統服務該調用哪個動態鏈接庫呢?這是通過系統服務在注冊表中設置的參數來實現。下面就以RpcSs(Remote Procedure Call)服務為例,進行講解。

實例:以Windows XP為例,點擊“開始”/“運行”,輸入“services.msc”命令,彈出服務對話框,然后打開“Remote Procedure Call”屬性對話框,可以看到RpcSs服務的可執行文件的路徑為“C:\WINDOWS\system32\svchost -k rpcss”,這說明RpcSs服務是依靠SVCHOST調用“rpcss”參數來實現的,而參數的內容則是存放在系統註冊表中的。

在運行對話框中輸入“regedit.exe”后回車,打開注冊表編輯器,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs]項,找到類型為“REG_EXPAND_SZ”的鍵“magePath”,其鍵值為“%SystemRoot%\system32\svchost -k rpcss”(這就是在服務窗口中看到的服務啟動命令),另外在“Parameters”子項中有個名為“ServiceDll”的鍵,其值為“%SystemRoot%\system32\rpcss.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\system32\wins”目錄中,因此使用進程管理器查看SVCHOST進程的執行文件路徑就很容易發現系統是否感染了病毒。Windows系統自帶的任務管理器不能夠查看進程的路徑,可以使用第三方進程管理軟件,如“Windows優化大師”進程管理器,通過這些工具就可很容易地查看到所有的SVCHOST進程的執行文件路徑,一旦發現其執行路徑為不平常的位置就應該馬上進行檢測和處理。

由于篇幅的關系,不能對SVCHOST全部功能進行詳細介紹,這是一個Windows中的一個特殊進程,有興趣的朋友可參考有關技術資料進一步去了解它。

更多關於svchost.exe的資訊
希望以上資訊對大家也有幫助...

沒有留言:

張貼留言