網上有很多關於Svchost.exe的討論,我們今天首先來看一下Svchost.exe的原理,工作方法,然後結合著名DLL木馬,實戰瞭解一下使用Svchost.exe進行啟動的木馬的清除,希望大家能夠有所收穫。

Svchost.exe是NT核心系統非常重要的檔,對於Windows 2000/XP來說,不可或缺。Svchost進程提供很多系統服務,如:logical disk manager、remote procedure call(RPC)、dhcp client、Automatic Updates、Background Intelligent Transfer Service、COM+ Event System、Internet Connection Sharing、Network Connections、Portable Media Serial Number Service、Remote Access Auto Connection Manager、Remote Access Connection Manager、Removable Storage、Routing and Remote Access、System Event Notification、Telephony、Wireless Configuration等等。

對於服務中使用Svchost.exe載入了哪些動態連結程式庫,我們可以在服務中點擊上面列出的某個服務來看看。比如我們要看Automatic Updates服務,就可以在在它上麵點擊滑鼠右鍵,看它的屬性。

同樣情況下,如果讀者還想進一步瞭解其他的那些服務是怎樣使用Svchost.exe的,可以使用與上面相同的方法來觀察一下。

聰明的讀者一眼就可以看出,Svchost.exe對於系統來說是多麼的重要了。也正是因為Svchost.exe的重要性,所以病毒、木馬也想盡辦法來利用它,企圖利用它的特性來迷惑用戶,達到感染、入侵、破壞的目的。那麼應該如何判斷到底哪個是病毒進程呢?正常的Svchost.exe檔應該存在於“C:\Windows\system32”目錄下,如果發現該檔出現在其他目錄下就要小心了。另外,駭客們為了使用Svchost.exe達到進程欺騙的目的,有可能使用一些迷惑性的名字,如將字母o變成數位0(零),這樣程式的名稱就變成了svch0st.exe了,如果不注意觀察,很容易逃過普通用戶的眼睛。

通常情況下,為了確定我們的電腦中正在運行的Svchost.exe是不是真正的系統的Svchost.exe,我們可以使用如下方法來查看。Svchost.exe檔的調用路徑可以通過“電腦管理→系統工具→系統資訊→軟體環境→正在運行任務”來查看。

這裏僅舉一例來說明。假設Windows XP系統被“w32.welchia.worm”感染了。正常的Svchost文件存在於“c:\Windows\system32”目錄下,如果發現該檔出現在其他目錄下就要小心了。“w32.welchia.worm”病毒存在於“c:\Windows\system32wins”目錄中,通過使用上面說的方法就可很容易地查看到所有的Svchost進程的執行檔路徑,一旦發現其執行路徑為不平常的位置就應該馬上進行檢測和處理。

現在我們已經搞清楚了一部分疑問,但是,我們還不知道哪個服務調用了哪個動態連結程式庫檔,是不是沒有辦法呢?如果沒有地方可以找到,那麼Windows自己又是如何知道調用哪一個呢?大家知道,Windows將所有的系統資訊和應用程式資訊都保存在了系統註冊表中,所以,我們可以在註冊表中找找看。

下面以Remote Procedure Call(RPC)服務為例,來看看Svchost進程是如何調用DLL檔的。在Windiws中,打開服務,然後打開“Remote Procedure Call(RPC)”屬性對話方塊,可以看到Remote Procedure Call(RPC)服務的可執行檔的路徑為“C:\WINNT\system32\Svchost -k rpcss”,這說明Remote Procedure Call(RPC)服務是依靠Svchost調用“rpcss”參數來實現的,而參數的內容則是存放在系統註冊表中的。

在運行對話方塊中輸入“regedit.exe”後回車,打開註冊表編輯器,找到“HKEY_LOCAL_MACHINE\System\currentcontrolset\services\ rpcss”項。然後,再在裏面找到類型為“reg_expand_sz”的“Imagepath”項,其鍵值為“%SystemRoot%\system32\Svchost -k rpcss”(這就是在服務視窗中看到的服務啟動命令),另外在“parameters”子項中有個名為“ServiceDll”的鍵,其值為“%SystemRoot%\system32\rpcss.dll”,其中“rpcss.dll”就是Remote Procedure Call(RPC)服務要使用的動態連結程式庫檔。這樣Svchost進程通過讀取“rpcss”服務註冊表資訊,就能啟動該服務了。

同樣情況下,如果有程式試圖蠻天過海,假借Svchost.exe來啟動自己的動態連結程式庫檔(如將木馬作成動態連結程式庫檔),那麼我們就可以從這裏找到DLL木馬的路徑,將它大白於天下。

如果要瞭解每個Svchost進程到底提供了多少系統服務,可以在Windows 2000的命令提示符視窗中輸入“tlist -s”命令來查看,該命令是Windows 2000 support tools提供的。不過,在這裏看到的效果跟服務裏面看到的是一樣的,只不過是DOS介面而已。

小知識:在Windows xp下則使用“tasklist /svc”命令會收到同樣的效果。

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

下面,我們通過一個實例來看一下木馬程式是如何利用Svchost.exe進行啟動的。這裏,我選擇了PortLess BackDoor V1.2來做演示,這是一個使用Svchost.exe去啟動,平時不開埠,可以進行反連接的後門程式(和小榕的BITS是同一類型的後門)。

為了看一下這個後門是如何利用Svchost.exe進行啟動的,我們在運行軟體之前,先給註冊表做一個快照,這裏我選擇了Regshot 1.61e5 final版本,並將初始快照命名為1.hiv。然後我們將Portlessinst.exe和Svchostdll.dll(不要改名)上傳到系統目錄(%winnt%\system32目錄中)。

接下來,進入命令行,使用“Portlessinst.exe -install ActiveString Password”進行安裝,這裏的ActiveString就是連接那系統打開的埠後輸入的驗證字串,這裏的密碼是使用正向連接你連接上後門打開的埠時需要輸入的密碼。比如,我輸入如下:
portlessinst.exe –install smiler wind_003
這樣就安裝上去了,我們來看一下註冊表裏的變化。將1.hiv裝載進Regshot中的1st shot,然後對當前的註冊表做2st shot的快照,然後使用compare進行比較,其比較的結果如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\PortLess\FdsnqbTsuni`: “tjnkbu”
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\PortLess\Wfttphuc: “tofiXdo”
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Security\Security: 01 00 14 80 A0 00 00 00 AC 00 00 00 14 00 00 00 30 00 00 00 02 00 1C 00 01 00 00 00 02 80 14 00 FF 01 0F 00 01 01 00 00 00 00 00 01 00 00 00 00 02 00 70 00 04 00 00 00 00 00 18 00 FD 01 02 00 01 01 00 00 00 00 00 05 12 00 00 00 63 00 6F 00 00 00 1C 00 FF 01 0F 00 01 02 00 00 00 00 00 05 20 00 00 00 20 02 00 00 6D 00 00 00 00 00 18 00 8D 01 02 00 01 01 00 00 00 00 00 05 0B 00 00 00 20 02 00 00 00 00 1C 00 FD 01 02 00 01 02 00 00 00 00 00 05 20 00 00 00 23 02 00 00 6D 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Parameters\ServiceDll: “C:\WINNT\system32\Svchostdll.dll”
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Parameters\program: “SvchostDLL.exe”
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Parameters\Interactive: 0x00000000
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Type: 0x00000020
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\Start: 0x00000002
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\ErrorControl: 0x00000001
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\ImagePath: “%SystemRoot%\System32\Svchost.exe -k netsvcs”
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\DisplayName: “Intranet Services”
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IPRIP\ObjectName: “LocalSystem”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Security\Security: 01 00 14 80 A0 00 00 00 AC 00 00 00 14 00 00 00 30 00 00 00 02 00 1C 00 01 00 00 00 02 80 14 00 FF 01 0F 00 01 01 00 00 00 00 00 01 00 00 00 00 02 00 70 00 04 00 00 00 00 00 18 00 FD 01 02 00 01 01 00 00 00 00 00 05 12 00 00 00 63 00 6F 00 00 00 1C 00 FF 01 0F 00 01 02 00 00 00 00 00 05 20 00 00 00 20 02 00 00 6D 00 00 00 00 00 18 00 8D 01 02 00 01 01 00 00 00 00 00 05 0B 00 00 00 20 02 00 00 00 00 1C 00 FD 01 02 00 01 02 00 00 00 00 00 05 20 00 00 00 23 02 00 00 6D 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00 01 01 00 00 00 00 00 05 12 00 00 00
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Parameters\ServiceDll: “C:\WINNT\system32\Svchostdll.dll”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Parameters\program: “SvchostDLL.exe”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Parameters\Interactive: 0x00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Type: 0x00000020
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\Start: 0x00000002
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\ErrorControl: 0x00000001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\ImagePath: “%SystemRoot%\System32\Svchost.exe -k netsvcs”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\DisplayName: “Intranet Services”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP\ObjectName: “LocalSystem”

可以看出,PortLess BackDoor V1.2將自己註冊為了服務IPRIP,它使用的啟動參數是”%SystemRoot%\System32\Svchost.exe -k netsvcs”,它使用的DLL檔是”C:\WINNT\system32\Svchostdll.dll”。通過這裏,我們就可以找到

文章來源: http://forum.icst.org.tw/phpBB2/viewtopic.php?t=9226