萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

批腳本實現 CMD 密碼保護:防止溢出攻擊獲取命令行權限的實戰代碼詳解

設計目標

  • 在 CMD 啟動時強制進行密碼驗證,防止攻擊者通過緩衝區溢出、提權漏洞直接獲得命令行控制權。
  • 記錄所有登入嘗試、操作日誌、用戶留言,事後可審計追蹤。
  • 三次錯誤鎖定,支援留言聯繫管理員。

核心文件結構

  • lock.bat:主邏輯腳本(密碼驗證、日誌記錄、鎖定機制)。
  • setup.bat:安裝腳本(複製 lock.bat 到系統目錄、導入註冊表自啟動)。
  • unlock.bat:卸載腳本(刪除文件、清理註冊表)。
  • lock.reg / unlock.reg:註冊表啟動項註冊/反註冊。

lock.bat 核心邏輯逐行解析

@echo off
title 密碼驗證
SETLOCAL
set pwd=0
set times=3
:: 介面提示與日誌記錄
echo ... 歡迎/警告信息 ...
echo ####################################################################### >> e:\CMD\mylog.txt
echo 操作:激活密碼驗證 時間:%time% 日期:%date% >> e:\CMD\mylog.txt
echo 狀態:等待驗證…… >> e:\CMD\mylog.txt

:password
set /p pwd= 請輸入您的密碼:
set /A times=%times%-1
if %pwd%==fangzi goto pass   :: 密碼正確跳轉
echo ***** 密碼驗證錯誤,剩餘 %times% 次機會 *****
echo 狀態:用戶輸入密碼 驗證失敗 時間:%time% >> e:\CMD\mylog.txt
if %times%==0 goto close
goto password

:close
echo 狀態:用戶3次輸入錯誤 程序鎖定 時間:%time% >> e:\CMD\mylog.txt
title 對不起,您無法使用 CMD
echo ... 鎖定提示與留言功能 ...
set /p msg= 請輸入您的留言:
echo 留言寫入 e:\CMD\mymsg.txt
goto message  :: 循環留言

:pass
echo 狀態:程序已開放,歡迎使用 時間:%time% >> e:\CMD\mylog.txt
title [Angle]的CMD
ENDLOCAL

關鍵安全細節

  • 密碼硬編碼:`fangzi` 明文存儲在腳本中,**極不安全**,僅供演示。生產環境必須:
    • 將密碼哈希存儲(如 SHA-256),驗證時比對哈希值。
    • 或調用系統 API(如 `net user` / SAM 驗證)而非自建認證。
  • 日誌/留言路徑硬編碼:`E:\CMD\` 目錄需預先創建且具寫入權限,建議改用 `%APPDATA%\CMDGuard\`。
  • 繞過風險:攻擊者可通過安全模式、WinPE、LiveCD、修改註冊表啟動項繞過此保護。此方案僅能阻擋「已獲有限 Shell 但無系統級權限」的攻擊者。
  • 註冊表持久化:`setup.bat` 將 `lock.bat` 複製到 `%windir%` 並寫入 `HKLM\...\Run` 或 `Winlogon\Userinit`,實現開機自動彈出驗證框。

改進方向(生產級)

  1. 改用 **C/C++/C#/Go** 編寫原生服務/驅動,掛載在 `Winlogon`/`LSASS` 早期啟動階段。
  2. 集成 **Windows Hello / 智能卡 / TPM** 多因子認證。
  3. 接入 **SIEM/日誌審計平台**,實時告警異常登入嘗試。
  4. 結合 **AppLocker / WDAC** 白名單機制,從根源禁止未授權可執行文件運行。

安裝與卸載

  • 雙擊 `setup.bat` 安裝(需管理員權限)。
  • 雙擊 `unlock.bat` 卸載(需管理員權限)。
  • 默認密碼:`fangzi`(區分大小寫),請立即修改 `lock.bat` 中對應行。

此腳本展示了「在用戶空間為 CMD 加鎖」的基本思路,**不具備生產環境防禦能力**,僅供安全原理學習、CTF 題目、教學演示參考。真正的終端防護請部署 EDR/XDR/EDR 方案。

copyright © 萬盛學電腦網 all rights reserved