我們輸入或者運行命令的時候一般都是用CMD來做到的,可以通過它進入注冊表或者系統裡一些隱秘的地方,這樣一來如果病毒通過cmd的話,那後果就不堪設想了,怎麼守住cmd這一關呢?
一 前言
翻開網絡上的入侵資料看看吧!大多數的入侵都是在cmd下完成的,比較典型的有溢出得到一個system權限的cmdshell,然後種植一個Tcmd之類綁定了cmd.exe的後門。也有利用web程序的漏洞得到一個webshell然後利用低權限的cmdshell來提升權限,最後再種植後門……各種各樣的攻擊都說明入侵和cmd.exe是相關的,因為一個cmd.exe就是一個用戶與系統交互的一個接口,是入侵者進入系統的首要目標。當然,我們不能在這裡坐以待斃,如何防止別人通過溢出得到你的cmdshell,如何知道別人已經進入系統並且獲得cmdshell,如何在人家登陸到我們機器的時候抓住入侵者呢?現在就讓我們打造一個cmd下的終極防線吧。
二 原理
網絡上談得比較多的一種防范的方法是將cmd.exe設置權限,這樣的確可以起到很大的作用,但是權限比較難以確定,並且如果別人自己上傳cmd.exe的話還是可以突破的,然後用nc綁定cmd.exe到一個端口還是可以得到cmdshell。今天我給大家介紹一種新的方法,不用設置cmd的權限哦!首先說說原理,還是打開你的cmd命令窗口,運行命令cmd /?,看看得到了什麼吧!如圖一。
注意以下內容:
如果 /D 未在命令行上被指定,當 CMD.EXE 開始時,它會尋找以下 REG_SZ/REG_EXPAND_SZ 注冊表變量。如果其中一個或兩個都存在,這兩個變量會先被執行。
HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun
和/或
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun
也就是說如果存在HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun和HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun這兩個鍵值並且你不是用cmd.exe /D啟動cmd進程的話會在啟動cmd.exe之前先去執行這兩個鍵值指定的程序。嘿嘿,想到什麼了,既然可以先於cmd.exe之前執行自己的程序或者腳本,我們就完全可以控制cmd.exe的動作了。