■河南 劉京義
不法程序要開啟后門,必須打開對應的網絡端口。因此在CMD窗口執行“netstart-ano”命令,不僅可以查看端口使用情況,還可以在“PID”列中顯示使用該端口的進程標識符。
在CMD窗口中執行“wmic”命令,在隨后的“wmic:rootcli>”欄中輸入“Process”命令,就會顯示進程和實際程序之間的關系列表。據此不難找到目標程序具體位置。
不過“netstat”命令應對基于UDP協議的后門程序就有些力不從心了,因此,還必須借助于專業的端口查看工具(例如TCPEye、Antiyports、Fport等)。
對于來歷不明的網絡連接,在其右鍵菜單上點擊“Close Connection”項(或者按下“Ctrl+K”鍵),即可關閉該網絡連接。點擊“End Process”項,可以直接中止相關進程的運行。
一些不法程序會偽裝成系統服務來隱蔽的開啟后門。運行“msconfig.exe”,在“服務”面板中勾選“隱藏所有Microsoft服務”項,找到和“狀態”列中顯示為“正在運行”對應的服務,經細致分析,可以很快找到后門服務。在服務列中取消選擇并重啟系統,即令其失去活力。
在CMD窗口執行“wmic”“service”命令,在服務統計信息中的“Caption”列中找到后門服務名稱,在“Pathname”列中可以定位其服務程序,然后刪除即可。此外,還可使用Comodo Cleaning Essentials(CCE)安全軟件來偵測其真偽。
一些狡猾的惡意程序會替換正常服務來明目張膽開啟后門。可使用超級巡警工具箱、Unlocker等安全工具進行檢測和清除。還有些不法程序會使用RootKit等高級技術創建隱身型服務。使用Knlsc軟件即可輕松清除。如發現有隱藏服務(假設服務名是“Newsrv”),運行“knlsc13.exe-cd Newsrv”即可禁用。
將自身隱藏于注冊表眾多的啟動項目并跟隨系統自動運行,也是后門程序常用的招數。使用AutoRuns安全軟件就可以將啟動項一網打盡,包括系統登錄、網絡服務、打印監控、安全認證、網絡連接等十多個和啟動項緊密相關的類型。在每個類型中包含了相應的啟動項目。
打開“所有項目”面板,不管后門程序在注冊表啟動項隱藏多深,都會在該軟件面前暴露,選擇和后門程序相關的啟動項,在其右鍵菜單中可以執行刪除、定位注冊表具體路徑、打開目標文件夾等操作。
當然,狡猾后門程序絕不會藏身在顯眼的啟動項位置,在注冊表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows”的“ AppInit_DLLs”鍵值是其常用藏身地,該位置是很容易被大家忽視。“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerRun”分支也應引起我們的關注。
后門程序還常會在注冊表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”分支下的“userinit”和“shell”鍵值中添加惡意程序,悄無聲息的跟隨系統啟動自動激活。利用ActivcX技術自啟動的后門程序會在注冊表中的“HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled Components”分支下對應子健的“StubPath”鍵值中藏身。
不管后門程序采用哪一種啟動方式,最終必然會成為活動進程。使用任務管理器、Process Explorer、TaskPatrol、AnVir Task Manager、PCHunter等工具,都可以幫助查看和定位可疑進程。
例如,使用TaskPatrol進程管理工具,可以徹底“看穿”進程的來龍去脈,并準確分析安全等級,迅速清除有害進程。
有些后門程序會采取雙進程守護方式,當您在任務管理器中關閉一個進程后,另外一個會自動將其激活。其實,使用記事本就可以輕松對付雙進程守護型后門程序。假設某種后門程序侵入本機,在系統中創建了名稱為“a.exe”和“b.exe”的守護型進程,在“開始→運行”中執行“msinfo32.exe”程序,在系統信息窗口左側點擊“系統摘要→軟件環境→正在運行任務”項,在右側窗口中顯示詳細的進程信息。
在其中得知“a.exe”進程的主文件保存路徑為“c:windowssystem32”。接著打開“c:windowssystem32”文件夾,將“notepad.exe”文件復制到D盤根目錄下,并改名為“a.exe”。接著打開記事本程序,輸入“@echo off”“taskkill/f/im a.exe”“delete c:windowssystem32a.exe”“copy d:a.exe c:windowssystem32”行。之后保存為“qingchu.bat”文件。運行該批處理程序,其作用是先使用Taskkill命令結束a.exe病毒進程,之后將其刪除,接著將D盤中由記事本程序改名的“a.exe”來取代其位置。之后運行qingchu.bat”程序,系統即可中止真實的a.exe進程,同時將由記事本“冒充”的病毒程序復制到目標路徑中,當另一個病毒進程b.exe發現對方被關停后,即可自動將其激活,但是運行的卻是記事本程序。
接下來的工作就簡單了,直接使用命令“Taskkill/f/im a.exe”,將再生的a.exe中止,根據系統提示信息,可以看到激活a.exe進程的另一個進程的PID號碼,在任務管理器中根據得到的PID號碼,就可以查詢到另一個與之關聯的病毒進程,也就是b.exe進程。之后在上述系統信息窗口中可以查到其路徑信息,接下來在任務管理器中中止b.exe進程,同時進入對應目錄將其刪除即可。這樣就很輕松的擊破了病毒的進程守護機制。
要想從進程列表中分辨出某個進程,首先必須熟悉每一個常用進程及其作用。例如,“system”進程是可以強制結束的,之后系統會自動加載,該進程實際只加載“C:WindowsSystem32”下的“ntoskrnl.exe”文件。“system Idle Process”進程用來分派CPU處理時間等。
上述進程都位于“C:WindowsSystem32”路徑中,只要強制關閉,系統就會自動關機。“smss.exe”進程是一個會話管理子系統,負責啟動用戶會話。“alg.exe”進程用來管理系統網絡連接共享和防火墻,應用程序網關服務,為Internet連接共享和Windows防火墻提供第三方協議插件支持。類似的進程還有很多,大家都應熟悉其具體功能。
在任務管理器中,有的進程的數量可能不止一個。例如,對于“svchost.exe”進程來說,后門程序就可以通過該進程來加載非法服務實現自啟動。對于系統服務來說,一種是共享進程服務,另一種是非共享進程服務。共享進程服務一般都是利用“svchost.exe”進程啟動的。
因此,如果有多個服務都通過該進程啟動,在進程列表中就會出現多個“svchost.exe”進程。如果該進程數量較多,就要警惕了。可在注冊表中打開“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,點擊“F3”鍵,在搜索窗口中輸入“%SystemRoot%system32svchost.exe”,可以查找到和該進程關聯的服務項目,在具體服務的子鍵下選擇“Parameters”項,在右側的“ServiceDll”鍵值中可以發現具體的動態庫路徑,定位到具體的DLL動態庫,就可以判斷其是否是后門程序,進而對其查殺。
目前流行的后門程序由于采用了進程插入技術,普通的查找技術很難發現其蹤跡。使用PowerTool工具就可看穿進程內部秘密。在主界面的“進程管理”中顯示所有的進程信息,選擇后門程序常用進程(如“explorer.exe”等),在窗口底部顯示其調用所有DLL模塊信息,包括模塊路徑、廠商名稱、校驗標志等。細致分析后就可讓后門程序露出原形。
對于確定的后門程序DLL模塊,可以右擊“普通卸載模塊”“強行卸載模塊”等項從系統中清除。因為后門通常會很好的隱蔽自己(例如使用HOOK技術等),想找到其文件不是件容易的事。其實,使用WinRAR這款常用的壓縮軟件就可讓隱藏的后門程序徹底現形。WinRAR雖然是一款壓縮軟件,不過其自帶了文件瀏覽功能,而且WinRAR調用的是非標準的API函數來顯示文件信息,這樣即使后門程序使用了HOOK技術,可以騙過資源管理器,卻逃不過WinRAR。當在WinRAR中發現后門程序文件后,如果直接點擊Delete鍵無法刪除,可以點擊工具欄上的添加按鈕,在創建壓縮包界面中勾選“壓縮后刪除原文件”項,就可以刪除了。
其實,利用系統自帶的安全工具同樣可以搞定后門程序。例如,在“C:Windowssystem32”文件夾中發現后門程序“Windll32.exe”,刪除后,為防止其繼續侵襲本機,可在該路徑下創建名稱 為“windll32.exe”的文件夾,之后在CMD窗口中進入該文件夾,執行“mkdir baohuwin..”命令,創建名稱為“baohuwin”的防刪文件夾。這樣,該后門程序就無法在系統路徑下容身了。
利用映像劫持技術,以毒攻毒,針對后門程序創建專用的映像劫持項目,來阻止其運行。如果您不想費力的修改注冊表來實現上述操作,可以利用映像劫持編輯器工具來快速創建特定的映像劫持項目。在其主窗口中點擊“新建”按鈕,在彈出窗口的“進程名稱”欄中輸入后門程序程序名稱,在“映像路徑”欄中輸入其他程序(例如記事本)或根本不存在的程序名稱,點擊“確定”,就成功的將后門程序“劫持”了。當該后門程序試圖啟動時,要么啟動無關程序要么根本無法啟動。
利用權限設置,可以巧妙的讓后門程序失去活力。例如,在系統路徑中發現無法刪除的可疑文件“svch0st.dll”后,可在“屬性→安全→組或用戶名”中選擇當前使用的賬戶名,在該賬戶權限列表中的“拒絕”列選擇所有項目,徹底禁止該后門程序的活力。利用系統內置的Taskkill工具,可以快速清理后門進程。在CMD中執行“tasklist/svc”,可以查看當前所有進程的信息。
這樣,可清楚地看到后門進程的PID號。之后執行“taskkill/PID xxxx”命令,就可以關閉PID為“xxxx”的進程。如果執行“taskkill/PID 進程ID/f/t”命令,可以強制關閉指定的進程,同時終止其啟用的所有子進程。Taskkill命令有一項絕活就是可以同時關閉多個進程,例如,當需要清除ID號分別為3690、6900、7890等多個進程時,可以執行“Taskkill/f/PID 3690/PID 6900/PID 7890”命令,將其一并清除。
當然,也可以按照進程名稱來執行關閉操作。執行“tasklist/im winserver32.exe/f”命令,就可以關閉名為“winserver32.exe”的進程。利用Taskkill命令,可以順藤摸瓜發現多進程守護型后門程序。例如執行“taskkill/im daemon.exe/t”命令,根據返回信息顯示該進程是屬于PID為736的子進程,該進程的名稱為“syswd.exe”,執行“taskkill/im syswd.exe/t”命令,發現是PID為1560進程的子進程,經查PID為1560的進程名為“sersec.exe”。這些進程相互守護,無法逐個關閉。
執行“taskkill/im daemon.exe/im syswd.exe/im sersec.exe/f”命令,就可以將其一網打盡。使用Taskkill命令,還可以快速清除所有失去相應的進程,執行“taskkill/fi " status eq not responding"”即可。有時,當發現了某個后門程序后,卻無法將其對應的DLL文件刪除,究其原因,在于該DLL文件插入到了某個合法進程中。對此,可以執行“taskkill/fi "modules eq xxx.dll"”命令,來關閉所有調用“xxx.dll”的進程即可。
對于頑固的后門進程,可以利用系統內置的SYSTEM帳戶將其清除。例如在命令提示符窗口中執行“sc Create SuperCMD binPath="cmd/K start" type=own type=interact”命令,建立一個名為“SuperCMD”的交互服務。執行“sc start SuperCMD”命令,來啟動該交互進程。之后系統會彈出交互式服務檢測窗口。點擊其中的“查看消息”按鈕,可以以SYTEM賬戶身份打開命令提示符窗口。在其中執行“taskmgr.exe”程序,就會以SYSTEM賬戶身份啟動任務管理器,這樣,就可以有效關停頑固進程了。操作完畢后,在交互式服務檢測窗口中點擊“立即返回”按鈕,回到正常操作界面。
對于一些很狡猾的后門進程,使用上述方法未必有效。使用ntsd命令可以將其輕松清除。首先確定需要清除的后門進程ID號,假設為“xxxx”,在命令行窗口中執行“ntsd-c q-p xxx”,就可以將其終結掉。其中的“-c”參數表示執行Debug級別的命令,“q”參數表示執行結束后退出,“-p”參數后面跟隨具體的進程ID。當然,也可以針對進程名稱進行操作,例如想關閉名為“windll.exe”的進程,可以執行“ntsd-c q-pn windll.exe”,就可以將其關停。