命令提示字元(cmd.exe)是駭客入侵後取得互動式 Shell 的首選目標:緩衝區溢位彈回 Shell、Web Shell 提權、nc 綁定 cmd.exe 等手法皆依賴 cmd.exe。利用 cmd.exe 的 AutoRun 登錄機制,在 cmd.exe 啟動之前執行自訂腳本,可實現:阻斷惡意 Shell(執行 exit)、記錄入侵時間/網路連線/攻擊者 IP、告警通知,構建 CMD 層面的主動防禦線。
cmd.exe 啟動時(若非 cmd /D)會檢查兩個登錄鍵值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRunHKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun若存在,會優先執行指定的命令/腳本/批次檔,然後才進入 cmd 互動環境。這意味著我們可以在攻擊者取得 Shell 之前,先行掌控執行流程。
C:\Windows\System32\cmd_guard.bat 內容(範例):@echo off
REM 阻斷模式:直接退出,攻擊者獲得即失去
exit
REM 記錄模式(建議):記錄入侵證據再退出
@echo off
netstat -an >> C:\Windows\System32\net.log
date /t >> C:\Windows\System32\date.log
time /t >> C:\Windows\System32\time.log
whoami >> C:\Windows\System32\user.log
exit
HKCU 限制當前使用者,HKLM 影響所有使用者):regedit → HKEY_CURRENT_USER\Software\Microsoft\Command Processor → 右側新建/修改 AutoRun (REG_SZ/REG_EXPAND_SZ) → 值:C:\Windows\System32\cmd_guard.bat。exit,正常使用者開啟 CMD 不受影響。%CMDCMDLINE%、%PROMPT%、父進程名稱(wmic process get ParentProcessId),合法啟動放行。blat.exe/sendEmail.exe 發送郵件/簡訊通知管理員。cmd /D 忽略 AutoRun → 需配合 HKLM\...\AutoRun 系統層級設定(攻擊者無權修改)或應用程式白名單(AppLocker/軟體限制原則)限制 cmd.exe 僅允許受信任路徑/簽章執行。cmd.exe 副本 → 檔案完整性監控(FIM)/應用程式白名單阻擋未授權二進位執行。powershell.exe(HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\AutoRun)、python.exe(PYTHONSTARTUP 環境變數)等所有 Shell 入口。此技巧屬「單點防禦」,現代企業環境建議部署:
理解 AutoRun 機制與 Shell 入口防禦邏輯,有助於建立纏繞防禦體系。但單一技巧無法對抗成熟威脅,請採用現代端點防護平台構建系統性防禦。