查看單個文章
舊 2006-07-15, 02:56 PM   #12 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

透析Svchost工作行程清除後門

網上有很多關於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」後Enter鍵,打開註冊表編輯器,找到「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"。



通過這裡,我們就可以找到PortLess,將它使用的服務禁止掉,然後將對應的DLL文件刪除,並將註冊表中這些多出來的鍵值幹掉,三下五除二就將Portless弄得一乾二淨!現在大家知道怎麼清理掉用Svchost載入的後門了吧?!
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次