後門的Loader把SvchostDLL.dll插入Svchost進程當中,所以,我們先打開Windows優化大師中的Windows進程管理2.5,查看Svchost進程中的模塊信息,SvchostDLL.dll已經插入到Svchost進程中了,在根據"直接使用現有組裡的一個服務名,但是本機沒有安裝的服務"的提示,我們可以斷定,在"管理工具"—"服務"中會有一項新的服務。此服務名稱為:IPRIP,由Svchost啟動,-k netsvcs表示此服務包含在netsvcs服務組中。
我們把該服務停掉,然後打開註冊表編輯器(開始—運行--regedit),來到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPRIP下,查看其Parameters子鍵。Program鍵的鍵值SvcHostDLL.exe為後門的Loader;ServiceDll的鍵值C:\WINNT\system32\svchostdll.dll為調用的DLL文件,這正是後門的DLL文件。現在我們刪除IPRIP子鍵(或者用SC來刪除),然後在來到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost下,編輯netsvcs服務組,把49 00 70 00 72 00 69 00 70 00 00 00刪除,這裡對應的就是IPRIP的服務名,具體如圖6所示。然後退出,重啟。重啟之後刪除WINNT\system32目錄下的後門文件即可。
2,BITS.dll
這是榕哥的作品,也是DLL後門,和SvchostDLL.dll原理基本一樣,不過這裡使用的是上邊介紹的第四種方法,即"修改現有組裡的現有服務,把它的ServiceDll指向自己的DLL後門"。換句話說,該後門修改現有的某一個服務,把其原有服務的DLL指向自己(也就是BITS.dll),這樣就達到了自動加載的目的;其次,該後門沒有自己的Loader,而是使用系統自帶的Rundll32.exe來加載。我們還是用Windows 進程管理2.5來查看,從圖7中,我們可以看到bits.dll已經插入到Svchost進程當中。
好,現在我們來看看具體的清除方法,由於該後門是修改現有服務,而我們並不知道具體是修改了哪個服務,所以,在註冊表中搜索bits.dll,最後在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasAuto下搜索到了bits.dll,查看Parameters子鍵下的ServiceDll,其鍵值為C:\WINNT\system32\bits.dll。原來,該後門把RasAuto服務原來的DLL文件替換為bits.dll了,這樣來實現自動加載。知道了原因就好辦了,現在我們把ServiceDll的鍵值修改為RasAuto服務原有的DLL文件,即%SystemRoot%\System32\rasauto.dll,退出,重啟。之後刪除WINNT\system32目錄下的bits.dll即可。
3,NOIR--QUEEN
NOIR--QUEEN(守護者)是一個DLL後門&木馬程序,服務端以DLL文件的形式插入到系統的Lsass.exe進程裡,由於Lsass.exe是系統的關鍵進程,所以不能終止。在來介紹清除方法之前,我先介紹一下Lsass.exe進程:
這是一個本地的安全授權服務,並且它會為使用Winlogon服務的授權用戶生成一個進程,如果授權是成功的,Lsass就會產生用戶的進入令牌,令牌使用啟動初始 的Shell。其他的由用戶初始化的進程會繼承這個令牌。
從上邊的介紹我們就可以看出Lsass對系統的重要性,那具體怎麼清除呢?請看下文。
後門在安裝成功後,會在服務中添加一個名為QoSserver的服務,並把QoSserver.dll後門文件插入到Lsass進程當中,使其可以隱藏進程並自動啟動。現在我們打開註冊表,來到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\QoSserver,直接刪除QoSserver鍵,然後重啟。重啟之後,我們在來到服務列表中,會看到QoSserver服務還在,但沒有啟動,類別是自動,我們把他修改為"已禁用";然後往上看,會發現一個服務名為AppCPI的服務,其可執行程序指向QoSserver.exe(原因後邊我會說到)。我們再次打開註冊表,來到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AppCPI,刪除AppCPI鍵,重啟,再刪除QoSserver,最後刪除WINNT\system32目錄下的後門文件。
本人和這個後門"搏鬥"了3個多小時,重啟N次。原因在於即使刪除了QoSserver服務,後門還是在運行,而且服務列表中的QoSserver服務又"死灰復燃"。後來才知道原因:在我刪除了QoSserver服務並重啟之後,插入到Lsass進程當中的QoSserver.dll文件又恢復了QoSserver服務,並且生成了另外一個服務,即AppCPI,所以我們必須在到註冊表中刪除AppCPI服務才算是把該後門清除。由此可以看出,現在的後門的保護措施,真是一環扣環。
注意:在刪除QoSserver服務並重啟之後,恢復的QoSserver的啟動類別要修改為"已禁用",否則即便刪除了AppCPI服務,QoSserver服務又運行了。
三、DLL的防範
看了上邊的例子,我想大家對清除DLL後門的方法有了一定的瞭解,但在現實中,DLL後門並不會使用默認的文件名,所以你也就不能肯定是否中了DLL後門。對於DLL後門,system32目錄下是個好地方,大多數後門也是如此,所以這裡要非常注意。下面我來具體介紹一下怎麼發現DLL後門,希望對大家有所幫助。
1,安裝好系統和所有的應用程序之後,備份system32目錄下的EXE和DLL文件:打開CMD,來到WINNT\system32目錄下,執行:dir *.exe>exe.txt & dir *.dll>dll.txt,這樣,就會把所有的EXE和DLL文件備份到exe.txt和dll.txt文件中;日後,如發現異常,可以使用相同的命令再次備份EXE和DLL文件(這裡我們假設是exe0.txt和dll0.txt),並使用:fc exe.txt exe0.txt>exedll.txt & fc dll.txt dll0.txt>exedll.txt,其意思為使用FC命令比較兩次的EXE文件和DLL文件,並將比較結果保存到exedll.txt文件中。通過這種方法,我們就可以發現多出來的EXE和DLL文件,並通過文件大小,創建時間來判斷是否是DLL後門。
2,使用內存/模塊工具來查看進程調用的DLL文件,比如Windows優化大師中的Windows 進程管理 2.5。這樣,可以發現進程到底調用了什麼DLL文件,在結合上邊用FC命令比較出來的結果,又能進一步來確定是否中了DLL後門。如果沒有優化大師,可以使用TaskList,這個小工具也可以顯示進程調用的DLL文件,而且還有源代碼,方便修改。
3,普通後門連接需要打開特定的端口,DLL後門也不例外,不管它怎麼隱藏,連接的時候都需要打開端口。我們可以用netstat -an來查看所有TCP/UDP端口的連接,以發現非法連接。大家平時要對自己打開的端口心中有數,並對netstat -an中的state屬性有所瞭解。當然,也可以使用Fport來顯示端口對應的進程,這樣,系統有什麼不明的連接和端口,都可以盡收眼底。
4,定期檢查系統自動加載的地方,比如:註冊表,Winstart.bat,Autoexec.bat,win.ini,system.ini,wininit.ini,Autorun.inf,Config.sys等。其次是對服務進行管理,對系統默認的服務要有所瞭解,在發現有問題的服務時,可以使用Windows 2000 Server Resource Kit中的SC來刪除。以上這些地方都可以用來加載DLL後門的Loader,如果我們把DLL後門Loader刪除了,試問?DLL後門還怎麼運行?!
通過使用上邊的方法,我想大多數DLL後門都可以"現形",如果我們平時多做一些備份,那對查找DLL後門會啟到事半功倍的效果。