svchost|dllhost系統進程與系統安全——“其實我們很無辜”

記得很早前個別木馬橫行的時候,就不斷聽到有人抱怨,“我的機器中了木馬!svhost dllhost!”很清晰地記得在江民論壇上見有人說它是病毒,說它是木馬,說出現多個就代表機器中標,有人還建議刪之。。。

一、svhost.exe

  在基於NT內核的Windows操作系統家族中,Svchost.exe是一個非常重要的進程。很多病毒、木馬駐留系統與這個進程密切相關,因此深入瞭解該進程是非常有必要的。本文主要介紹Svchost進程的功能,以及與該進程相關的知識。

 

 Svchost進程概述

 微軟對“Svchost進程”的定義是:Svchost.exe是從動態鏈接庫(DLL)中運行的服務的通用主機進程名稱。Svchost.exe文件位於“%SystemRoot%/System32”文件夾中。當系統啓動時,Svchost將檢查註冊表中的服務部分,以構建需要加載的服務列表。Svchost的多個實例可以同時運行。每個Svchost會話可以包含一組服務,以便根據Svchost的啓動方式和位置的不同運行不同的服務,這樣可以更好地進行控制且更加便於調試。

 

 Svchost組是由註冊表[HKEY_LOCAL_MACHINE/ Software/Microsoft/Windows NT/CurrentVersion/Svchost]項來識別的。在這個註冊表項下的每個值都代表單獨的Svchost組,並在我們查看活動進程時作爲單獨的實例顯示。這裏的鍵值均爲REG_MULTI_SZ類型的值,並且包含該Svchost組裏運行的服務名稱(如圖1)。

 

 

 實際上,Svchost只是作爲服務的宿主,本身並不實現什麼功能。如果需要使用Svchost來啓動某個DLL形式實現的服務,該DLL的載體Loader指向Svchost,在啓動服務的時候由Svchost調用該服務的DLL來實現啓動的目的。使用Svchost啓動某個服務的DLL文件是由註冊表中的參數來決定的,在需要啓動服務的註冊表項下都有一個“Parameters”子項,其中的“ServiceDll”鍵值表明該服務由哪個DLL文件負責,並且這個DLL文件必須導出一個ServiceMain()函數,爲處理服務任務提供支持。

 

 提示:不同版本的Windows系統,存在不同數量的Svchost進程。一般來說,Windows 2000有兩個Svchost進程,而Windows XP則有四個或四個以上的Svchost進程。

 

 Svchost進程實例講解

 要想查看在Svchost中運行服務的列表,可以在Windows XP命令提示符窗口中輸入“Tasklist /svc”命令後,回車執行(如果使用的是Windows 2000,可用Support Tools提供的Tlist工具查看,命令爲“Tlist -s”)。Tasklist命令顯示活動進程的列表,/svc命令開關指定顯示每個進程中活動服務的列表。從圖中可以看到,Svchost進程啓動很多系統服務,如:RpcSs(Remote Procedure Call)、Dhcp(DHCP Client)、Netman(Network Connections)服務等等(如圖2)。

 

 

 這裏我們以RpcSs服務爲例,來具體瞭解一下Svchost進程與服務的關係。運行Regedit,打開註冊表編輯器,依次展開[HKEY_LOCAL_MACHINE/SYSTEM

 CurrentControlSet/Services/RpcSs ]分支,在“Parameters”子項中有個名爲“ServiceDll”的鍵,其值爲“%SystemRoot%/system32/rpcss.dll”。這表示系統啓動RpcSs服務時,調用“%SystemRoot%/system32”目錄下的Rpcss.dll動態鏈接庫文件。

 

 接下來,從控制面板中依次雙擊“管理工具→服務”,打開服務控制檯。在右側窗格中雙擊“Remote Procedure Call(RPC)”服務項,打開其屬性對話框,可以看到RpcSs服務的可執行文件的路徑爲“C:/Windows/system32/svchost -k rpcss”,這說明RpcSs服務是依靠Svchost啓動的,“-k rpcss”表示此服務包含在Svchost的Rpcss服務組中。

 

 Svchost進程木馬淺析

 從前面的介紹我們已經知道,在註冊表[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/Current- Version/Svchost]分支中,存放着Svchost啓動的組和組內的各項服務,很多木馬和病毒正是利用這一點來實現自動加載的。它們通常的方法有:

 

 • 添加一個新的組,在組裏添加服務名;

 

 • 在現有的組裏添加服務名或者利用現有組一個未安裝的服務;

 

 • 修改現有組裏的服務,將它的ServiceDll指向自己的DLL文件。

 

 例如PortLess BackDoor就是一款典型的利用Svchost進程加載的後門工具。那麼對於像PortLess BackDoor這樣的木馬、病毒,該如何檢測並清除呢?以Windows XP爲例,首先我們可以利用“進程間諜”這樣的進程工具查看Svchost進程中的模塊信息(如圖3),並與之前的模塊信息比較,可以發現Svchost進程中有一個可疑的DLL文件“SvchostDLL.dll”。同時,在“管理工具→服務”列表中會看到一項新的服務“Intranet Services”(顯示名稱),此服務名稱爲:Iprip,由Svchost啓動,“-k netsvcs”表示此服務包含在Netsvcs服務組中。

 

 提示:在Windows 2000中,系統的Iprip服務偵聽由使用Routing Information協議版本1(RIPv1)的路由器發送的路由更新信息,在服務列表中顯示的名稱爲“RIP Listener”。

 

 運行Regedit,打開註冊表編輯器,展開[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet

 Services/IPRIP]分支,查看其“Parameters”子項,其中“ServiceDll”鍵值指向調用的DLL文件路徑和全稱,這正是後門的DLL文件。知道了這些,就可以動手清除了:在服務列表用右鍵單擊“Intranet Services”服務,從菜單中選擇“停止”,然後在上述註冊表分支中刪除“Iprip”項。重新啓動計算機,再按照“ServiceDll”鍵值提示的位置刪除後門程序主文件即可。最後需要提醒讀者的是,對註冊表進行修改前,應做好備份工作,以便出現錯誤時能夠及時還原。

二、dllhost.exe

進程文件: dllhost or dllhost.exe

 

進程名稱: DCOM DLL Host進程

 

描  述: DCOM DLL Host進程支持基於COM對象支持DLL以運行Windows程序。

 

介  紹:com代理,系統附加的dll組件越多,則dllhost佔用的cpu資源和內存資源就越多,而8月的“衝擊波殺手”大概讓大家對它比較熟悉吧。

 

解決Web服務器出現的dllhost.exe錯誤

 

我的Web服務器出了問題。一個彈出話框顯示“dllhost.exe出現錯誤”。當我查看應用事件日誌時發現有很多Active Server Pages Event 5這樣的錯誤。它們在錯誤信息中顯示爲“line 0內存溢出”。這種錯誤以前每隔幾天就發生一次,但現在是每隔幾小時就發生一次。重啓後也只能維持一陣子。你對此有什麼看法嗎?

 

我還沒碰到過這種問題,但我在微軟的參考信息中看到Exchange Outlook Web Access使用過程中描述過這樣的錯誤。(http://support.microsoft.com/?kbid=224327)

 

該鏈接建議你安裝最新的Exchange升級版。如果你在使用Exchange,不妨嘗試一下。如果沒有,我就要給你一些建議,它們同那些存在ASP 3.0方面問題的人的建議一樣:

 

確保你有所有最新升級版和服務包。

 

在每個Web應用中允許進程隔離。

 

將應用程序升級到ASP.NET。

 

將Web 服務器升級到Windows Server 2003。

 

瞭解真相 dllhost.exe是病毒嗎?

 

dllhost.exe 解釋

 

dllhost.exe是什麼?

 

dllhost.exe是運行COM+的組件,即COM代理,運行Windows中的Web和FTP服務器必須有這個東西。

 

什麼時候會出現dllhost.exe?

 

運行COM+組件程序的時候就會出現。例如江民KV2004

 

衝擊波殺手又是怎麼一回事?

 

衝擊波殺手借用了dllhost.exe作爲進程名,但是由於Windows不允許同一個目錄下有同名文件的存在,因此,衝擊波殺手把病毒體:dllhost.exe放到了C:/Windows/System32/Wins目錄裏面(Windows 2000是C:/WINNT/System32/Wins,全部假設系統安裝在C盤),但是真正的dllhost.exe應該放 在C:/Windows/System32(Windows 2000是C:/WINNT/System32)

 

換句話說就是:衝擊波(Worm.WelChia)爲了迷惑用戶,避免病毒的執行體被進程管理器終止,採用了dllhost.e xe這個和Windows組件一樣的名字,但是並不是說進程裏面出現dllhost.exe就等於感染了worm.welchi a

 

再看看這裏的FAQ吧

 

第一個誤區————進程出現Dllhost.exe就等於中了病毒

Dllhost.exe是系統文件,但是進程裏面出現Dllhost.exe進程不等於中了病毒

 

第二個誤區————一見Dllhost.exe進程就殺死

其實這樣做是不好的。很多程序都需要Dllhost.exe,例如KV2004實時監控運行的時候或IIS在解析一些ASP文件 的時候,進程中都會出現Dllhost.exe

 

之所以大家恐懼Dllhost.exe進程,恐怕是由於衝擊波(殺手)的問題。

其實衝擊波(殺手)只不過採取了一個偷樑換柱的方法。因爲任務管理器裏面無法看出進程中exe文件的路徑,所以讓大家在分析問題 的時候出現一些偏差。

 

感染衝擊波(殺手)的典型特徵不是進程中出現Dllhost.exe,而是RPC服務出現問題(衝擊波)和System32/w ins目錄裏面出現svchost.exe和dllhost.exe文件(衝擊波殺手)。注意路徑!!

 

那麼,Dllhost.exe是什麼呢?Dllhost.exe是 COM+ 的主進程。正常下應該位於system32目錄裏面和system32/dllcache目錄裏面。而system32/win s目錄裏面是不會有dllhost.exe文件的。

發佈了6 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章