Windows進程系列(2) — Svchost進程

來源:互聯網
上載者:User

在基於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”索引值提示的位置刪除後門程式主檔案即可。最後需要提醒讀者的是,對註冊表進行修改前,應做好備份工作,以便出現錯誤時能夠及時還原

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.