倍可親

回復: 1
列印 上一主題 下一主題

辨別亦真亦假的Svchost.exe

[複製鏈接]

1萬

主題

1萬

帖子

1萬

積分

八級貝殼核心

倍可親終生會員(廿一級)

Rank: 5Rank: 5

積分
18033
跳轉到指定樓層
樓主
kent 發表於 2006-8-8 10:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  本文主要包括以下內容:

  1、了解Svchost.exe的功能

  2、判斷真假Svchost.exe進程

  3、清除偽裝成Svchost.exe的病毒、木馬

  Svchost.exe、lsass.exe、wdfmgr.exe,打開進程列表后你會發現一大堆不知用途的進程,究竟是系統進程還是木馬病毒?如果打開系統文件夾,一大堆奇奇怪怪名稱的文件,更是會把你弄得暈頭轉向。很多朋友因此而始終抱有一種未知的恐懼,認為木馬、黑客無處不在,即使是高手,也不能把這些陌生的系統文件說個明明白白。為消除大家的疑惑,從這期開始為大家帶來一檔新的連載欄目——系統藍色檔案為大家曝光這些隱秘文件的秘密。兩位主人公,現在就來認識一下。

  主人公介紹

  小菜:剛接觸電腦不久的菜鳥,但對電腦知識有著非常濃厚的學習興趣,常說的一句話是「菜鳥先飛」。

  大嘴:樂於助人的老鳥,經常被別人冠以「大嘴高手」稱號,不過這並不是指他嘴特別大,而是一談到電腦知識就滔滔不絕。

  一、緊急狀況:系統發現嚴重病毒

  小菜剛剛學習了進程的概念和知識,於是就打開「任務管理器」觀察系統中的進程,這一看不要緊,還真發現了一個「病毒」Svchost.exe,這傢伙在系統進程列表中竟然有5個之多(見圖1),於是小菜就逐個結束這些進程,沒想到第二個進程結束后還會再生,而結束第四個進程時更離譜,系統提示「系統即將關機,離關機還有60秒」,進程再生、錯誤提示,這些典型的病毒「癥狀」更讓小菜相信「Svchost.exe」是病毒無疑,但無法結束進程,又該怎麼清除病毒呢?小菜只好請來了大嘴。

  

  圖1 數量眾多的SVCHOST進程

  大嘴過來后還沒看電腦,就先告訴小菜,系統中的Svchost.exe進程是正常系統進程,不是病毒,不僅僅是你,其他朋友一看到系統中這麼多的Svchost.exe進程,第一反應也感覺它是病毒,雖然系統中有多個Svchost.exe進程是正常的,但也不保證都是正常的。聽起來似乎有些矛盾?這讓小菜更有些迷糊,大嘴坐下后給小菜詳細講了起來。

  二、鬆了口氣:Svchost.exe是台「CD機」

  1.服務裝在「CD機」里

  Svchost.exe是NT內核操作系統(Windows 2000/XP/2003都屬於NT內核操作系統)獨有的進程,「Svchost」其實就是「Service Host」(服務宿主)的縮寫。微軟官方對它的定義是:Svchost.exe是從動態鏈接庫(DLL)中運行的服務的通用主機進程名稱,通俗講,它就是一個服務裝載器。大家可以把每個服務想象成一張音樂CD,而Svchost.exe就是用來播放這種CD的CD機。

  2.為什麼用「CD機」裝服務

  由於Windows 2000/XP系統服務越來越多,以EXE單獨進程的形式啟動所有服務會大大增加系統負擔,為節省系統資源,微軟將一些系統服務以動態鏈接庫(DLL)形式實現,而Svchost.exe就是用來裝載這些DLL文件以啟動系統服務的程序。沒有人會為了發行一張CD而製作一台專用播放此CD的CD機,微軟也一樣。

  3.系統里有幾台這樣的「CD機」

  那為什麼系統進程列表中的Svchost.exe會有多個呢?微軟為了讓系統能更好地進行服務控制,就允許多個Svchost.exe進程同時運行,每個Svchost.exe進程可以包含一組服務,想像一下可以同時容納3張甚至更多CD的多碟CD機。打開註冊表[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost]主鍵,在窗口右側可以看到許多鍵值,這裡的每個鍵值都代表一組服務,鍵值數據則包含了該組服務下面運行的服務名稱列表,每組服務啟動時都會通過單獨的Svchost.exe進程來裝載。Windows XP中默認共有六組服務(見圖2),其中imgsvc、NetworkService、rpcss、termsvcs四個組,它們都只有一個服務運行,這些服務啟動后的Svchost.exe進程用戶名為「SYSTEM」。而LocalService和netsvcs組都啟動了多個服務,它們的Svchost.exe進程用戶名分別為「LOCAL SERVICE」和「NETWORD SERVICE」,從圖1中可以看到這種區別。

  

  圖2 眾多svchost進程的區別

  當然了,這六組服務通常並不都是啟動狀態的,根據系統啟動的服務不同,反映在系統進程列表中的Svchost.exe進程數量也是不同的,Windows XP會有四個到六個Svchost.exe進程,而Windows 2000通常則會有兩個Svchost.exe進程。

  小提示:點擊「開始→運行」,在運行框中輸入「CMD」回車,然後在打開的命令行窗口中輸入「Tasklist /svc」(不含引號)命令,可以更直觀地看到每個Svchost.exe進程裝載的服務名稱列表(見圖3)。

  

  圖3 查看svchost進程裝載的服務名稱

  4.獲取每張「CD」的詳細信息

  如果想更進一步了解Svchost.exe裝載的這些服務都是什麼功能,可以記下鍵值數據中的服務名稱,例如「RpcSs」,接著打開註冊表的[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services],再打開下面的「RpcSs」子鍵,在右邊的「Description」鍵值中就可以看到該服務的描述,而在「ImagePath」鍵值數據中則可以看到這個服務的運行命令正是「%SystemRoot%\system32\svchost -k rpcss」(見圖4)。而在「RpcSs」子鍵下還有一個「Parameters」(參數)子鍵,其右邊的「ServiceDll」鍵值數據「%SystemRoot%\system32\rpcss.dll」則表明了RpcSs服務啟動時調用的是系統目錄下的「Rpcss.dll」文件,這就好像你原來只知道CD中歌曲的歌名,現在又讓你能夠查到這首歌的演唱者。

  

  圖4 查看svchost的具體功能

  如果覺得通過註冊表查詢服務名稱了解其屬性不太方便,也可以使用「全能助手用Windows服務管理專家」(以下簡稱「服務管理專家」)來查詢,運行軟體后單擊「All Win32 Services」分支,在右側服務列表中根據服務名稱索引即可快速找到要查詢的服務,單擊服務名稱,即可看到該服務的啟動命令以及調用的DLL文件等相關信息(見圖5)。同時軟體還專門設計了Svchost Group分支,可以快速查詢LocalService和netsvcs組中的服務詳細信息。

  

  圖5 用工具查看svchost的情況

  全能助手Windows服務管理專家 小檔案

   軟體名稱:

  全能助手Windows服務管理專家

   軟體版本:

  1.02

   軟體大小:

  67KB

   軟體授權:

  免費

   適用平台:

  Windows 2000/XP

   下載地址:

  點擊這裡下載

  三、危機仍在:小心病毒的騙局

  由於Svchost.exe進程的特殊性,它隱藏了真正運行的程序的名稱,在表面看到的只是Svchost.exe進程,這個特性同時也讓許多病毒、木馬有空可鑽,企圖以此迷惑用戶。那麼如何判斷系統中的多個Svchost.exe進程是否正常呢?下面針對這類病毒常用的幾種欺騙手法來進行分析。

  騙局1:利用假冒Svchost.exe名稱的病毒程序

  火眼金睛:這種方式運行的病毒並沒有直接利用真正的Svchost.exe進程,而是啟動了另外一個名稱同樣是Svchost.exe的病毒進程,由於這個假冒的病毒進程並沒有載入系統服務,它和真正的Svchost.exe進程是不同的,只需在命令行窗口中運行一下「Tasklist /svc」,如果看到哪個Svchost.exe進程後面提示的服務信息是「暫缺」(見圖6),而不是一個具體的服務名,那麼它就是病毒進程了,記下這個病毒進程對應的PID數值(進程標識符),即可在任務管理器的進程列表中找到它,結束進程后,在C盤搜索Svchost.exe文件,也可以用第三方進程工具直接查看該進程的路徑,正常的Svchost.exe文件是位於%systemroot%\System32目錄中的,而假冒的Svchost.exe病毒或木馬文件則會在其他目錄,例如「w32.welchina.worm」病毒假冒的Svchost.exe就隱藏在Windows\System32\Wins目錄中,將其刪除,並徹底清除病毒的其他數據即可。

  

  圖6 查看可疑svchost進程

  騙局2:一些高級病毒則採用類似系統服務啟動的方式,通過真正的Svchost.exe進程載入病毒程序,而Svchost.exe是通過註冊表數據來決定要裝載的服務列表的,所以病毒通常會在註冊表中採用以下方法進行載入:

  添加一個新的服務組,在組裡添加病毒服務名

  在現有的服務組裡直接添加病毒服務名

  修改現有服務組裡的現有服務屬性,修改其「ServiceDll」鍵值指向病毒程序

  判斷方法:病毒程序要通過真正的Svchost.exe進程載入,就必須要修改相關的註冊表數據,可以打開[HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost],觀察有沒有增加新的服務組,同時要留意服務組中的服務列表,觀察有沒有可疑的服務名稱,通常來說,病毒不會在只有一個服務名稱的組中添加,往往會選擇LocalService和netsvcs這兩個載入服務較多的組,以干擾分析,還有通過修改服務屬性指向病毒程序的,通過註冊表判斷起來都比較困難,這時可以利用前面介紹的服務管理專家,分別打開LocalService和netsvcs分支,逐個檢查右邊服務列表中的服務屬性,尤其要注意服務描述信息全部為英文的,很可能是第三方安裝的服務,同時要結合它的文件描述、版本、公司等相關信息,進行綜合判斷。例如這個名為PortLess BackDoor的木馬程序,在服務列表中可以看到它的服務描述為「Intranet Services」,而它的文件版本、公司、描述信息更全部為空(見圖7),如果是微軟的系統服務程序是絕對不可能出現這種現象的。從啟動信息「C:\WINDOWS\System32\svchost.exe -k netsvcs」中可以看出這是一款典型的利用Svchost.exe進程載入運行的木馬,知道了其原理,清除方法也很簡單了:先用服務管理專家停止該服務的運行,然後運行regedit.exe打開「註冊表編輯器」,刪除[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IPRIP]主鍵,重新啟動計算機,再刪除%systemroot%\System32目錄中的木馬源程序「svchostdll.dll」,通過按時間排序,又發現了時間完全相同的木馬安裝程序「PortlessInst.exe」,一併刪除即可。

  

  圖7 利用多項信息進行綜合判斷

3萬

主題

3萬

帖子

3萬

積分

版主

留學博士后(十二級)

Rank: 7Rank: 7Rank: 7

積分
33179
沙發
藍藍的天 發表於 2006-8-8 11:10 | 只看該作者
正常的Svchost.exe文件是位於%systemroot%\System32目錄中的,而假冒的Svchost.exe病毒或木馬文件則會在其他目錄


這一句才是重點。

至於載入到svchost中的病毒,只要刪除病毒文件就沒問題了。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-8-6 03:17

快速回復 返回頂部 返回列表