impacket 编程手册 2.3:从0开始实现windows通信接口与漏洞利用

· 2026-10-01 06:57 · 28 阅读

原创 侠盗鲁平 2026-10-01 06:57 日本

GitHub: https://github.com/lupingQAQ/impacket-programming-manual

Docs: https://lupingqaq.github.io/impacket-programming-manual/

WeChat: IndexSec

0x00 旧版复盘

2022 年,本公众号发过一篇《impacket 编程手册》(旧版传送门),全文 142 页。坦白讲,那一版问题不少:

旧版问题

具体表现

视角

入门笔记体,部分内容是边查边记

组织

没有阅读路线,章节之间依赖关系不清晰

案例缺位

协议模块讲完就结束,没有落地到已知漏洞的利用原理

语言

只有中文版,代码注释中英混杂

四年间 impacket 源码与域渗透生态变化很大,旧版内容已需要实质性更新。这次不是增量修补,而是推倒重写——保留"以 impacket 源码为线索"的定位,其余全部重构。当前版本 v2.3,约 5400 行,与修订后的中文第二版同步维护英文版。

0x01 为什么需要一本源码级手册

impacket 是事实上的域渗透工具包,其 examples 目录下的 secretsdump.py、psexec.py、wmiexec.py 等脚本基本覆盖了域渗透的常规需求。

但值得注意的是:很多 AD 域漏洞的公开 PoC 直接基于 impacket 模块开发或改写——

  • sam-the-admin

  • CVE-2022-33679(Kerberos RC4_PKINIT 降级)

  • noPac

  • Zerologon 工具链

  • PetitPotam 类中继攻击

  • BadSuccessor(CVE-2025-53779,滥用 Windows Server 2025 的 dMSA 账户类型)

  • CVE-2025-33073(反射式中继,在未强制 SMB 签名的机器上直接拿到 SYSTEM)

而网上的文章几乎都集中在讲怎么运行这些示例脚本,怎么调参数;讲怎么基于 impacket 做二次开发、下次漏洞爆发时怎么快速写出自己的 PoC 的内容,长期是空白。

本手册填的就是这个空白:以 impacket 源码树为线索逐模块拆解,读到的是 getKerberosTGT/getKerberosTGS 的内部实现、ccache/keytab 的二进制布局、DCERPCTransportFactory 的分发逻辑、DCOMConnection/IRemUnknown 的对象模型——而不是又一篇参数速查。

0x02 手册结构:六部分九章

部分

章节

内容

前置知识

第一部分 预备与基础

第 1 章 impacket 总览与目录结构

各模块在源码树中的位置

无

第 2 章 structure.py 通用序列化基类

所有协议包结构的公共基类

无

第二部分 认证与目录服务

第 3 章 LDAP(ldap)

域内目录查询、ACL 结构、全局编录

第 2 章

第 4 章 Kerberos(krb5)

票据、ccache/keytab、PAC、GSS-API 与 SPNEGO

第 2 章

第三部分 DCE/RPC

第 5 章 dcerpc

RPC 基础(NDR、rpcrt、EPM、transport)+ 按功能分五组的 20+ 接口模块

第 2、4 章

第四部分 DCOM 与 WMI

第 6 章 MS-DCOM

COM/DCOM 编程、dcomrt、oaut/comev/scmp/vds/wmi 子模块

第 5 章

第五部分 基础库

第 7 章 common

SMB2/3、DPAPI、NTDS(ese)、TDS 等

按需

第六部分 新版接口与实战案例

第 8 章 0.12–0.14 新增接口与支持库

ICPR(AD CS 证书注册)、GKDI、NEGOEX、RAA、SCMR、acl.py、dpapi_ng.py

第 2、5 章

第 9 章 实战案例

BadSuccessor(CVE-2025-53779)与 CVE-2025-33073 的利用原理

第 3、5 章

第 2 章是全书地基:structure.py 的 Structure 基类定义了一种对标准 struct 格式扩充的数据格式描述语言,keytab、ccache、smb3structs 等文件中的每个协议包结构类都继承自它。读懂第 2 章,后面所有协议的组包/解包都是同一套模式。

推荐阅读路线:基础(第 1–2 章)→ Kerberos(第 4 章)→ 按功能组选读 RPC 接口模块(第 5 章)→ 需要横向到 WMI/DCOM 时读第 6 章。

0x03 dcerpc:20+ 接口模块按功能分五组

第三部分是全书篇幅最重的部分。impacket 的 dcerpc/v5 下有二十多个 MS 协议接口实现,逐个平铺直叙容易迷失,手册将其按功能分为五组:

功能组

模块

基础与传输

ndr、dtypes、rpcrt、enum、epm、transport

安全策略与域认证

lsad、lsat、mgmt、mimilib、nrpc(Zerologon)、samr

系统与运维

even6、iphlp、rrp(注册表)、rprn/par(打印)、srvs(共享)、wkst、tsts、TSCH(计划任务)、dhcpm

Exchange 相关

nspi、oxabref、rpch

凭据与目录复制

bkrp、drsuapi(DCSync)、dssp

每组内部先讲协议交互流程,再进入源码关键函数。

此外,新增的第六部分补齐了 impacket 0.12–0.14 引入的新接口——ICPR(AD CS 证书注册)、GKDI(组密钥分发)、NEGOEX(SPNEGO 扩展协商)、RAA(远程授权)与 SCMR(服务控制管理器),以及 acl.py、dpapi_ng.py 两个支持库。

0x04 贯穿全书的实战案例

协议模块不讲完就翻篇,而是落到已知漏洞的利用原理上:

案例

所在模块

手册章节

Zerologon(CVE-2020-1472)

nrpc

第 5 章

PrinterBug / PrintNightmare

rprn / par

第 5 章

CVE-2019-1040 NTLM MIC 绕过

gssapi

第 4 章

Exchange RPC over HTTP 中继(rpcmap / ProxyRelay)

rpch

第 5 章

RPC 安全回调缓存滥用(Cold Hard Cache,Akamai 报告)

dcomrt

第 6 章

WMI 事件持久化(wmipersist)

wmi

第 6 章

黄金 PAC 构造

krb5 / pac

第 4 章

BadSuccessor(CVE-2025-53779,dMSA 滥用)

ldap / krb5

第 9 章

CVE-2025-33073(反射式中继 → SYSTEM)

smb / ntlmrelayx

第 9 章

读完对应模块再看案例,能明确看到"协议特性 → 缺陷 → 利用"的完整链条——这也是下一批域漏洞 PoC 的写作套路。

0x05 v1 → v2 升级对照

维度

v1(2022)

v2.x(当前)

篇幅与形态

142 页笔记体

约 5400 行、六部分九章、双 PDF 与在线文档站

组织

平铺无路线

阅读指南表格 + 章节依赖标注

协议覆盖

部分 examples 脚本讲解

LDAP / Kerberos / GSS-API / DCE/RPC / 20+ MS 接口 / DCOM / WMI / common

案例落地

无

9 类已知漏洞案例贯穿对应模块

代码引用

未系统核对

与 fortra/impacket master 逐条核对(以发布时 master 为基准)

语言

中文单语

中英双语 + 双 PDF

0x06 编写方法论

新版在写作方法上做了三件事来保证质量:

引用代码与上游逐条核对。全部代码引用已与 fortra/impacket master 比对(以发布时 master 为基准);如 par.py 的 opnum 39 元组、hept_map、MimiUnbind/MiniUnbind 等上游未统一之处,均按源码原样保留并加注说明——读者拿手册对照源码时不会对不上。

步骤编号注释。长代码段压缩为关键路径 + 步骤编号注释(中文版 ①②③、英文版 (1)(2)(3)),一眼看清调用链,而不是在数百行样板代码里来回翻。

描述性目录。每个模块标题带内容摘要(如 ### nrpc.py — Netlogon 认证与 Zerologon(CVE-2020-1472)),而非裸文件名,目录本身即可当索引用。

与 impacket 版本同步。第六部分覆盖 impacket 0.12–0.14 新增的接口与支持库(ICPR、GKDI、NEGOEX、RAA、SCMR、acl.py、dpapi_ng.py),并对上游尚无独立示例的接口在 example/ 目录补齐可运行 PoC;同时整体修复了英文版 RPC 接口说明中残留的机器翻译乱码。

0x07 获取方式

git clone https://github.com/lupingQAQ/impacket-programming-manual.git
  • 在线阅读:仓库内 impacket编程手册.md(中文)/ impacket_programming_manual_EN.md(English)

  • 文档站:https://lupingqaq.github.io/impacket-programming-manual/

  • 离线阅读:Releases 页下载 impacket编程手册.pdf 或 impacket_programming_manual_EN.pdf

  • 实验环境:两台虚拟机搭一套 Windows AD 实验 + pip install impacket,跟着案例逐模块复现

  • 可运行 PoC:example/ 目录(ICPR 证书注册、GKDI 取密钥、NEGOEX 解析、RAA 权限枚举)

欢迎通过 GitHub Issues 或 PR 纠错——尤其是对照 impacket / 微软协议文档的技术审校(函数名、认证流程、加解密描述)。

0x08 免责声明

本手册仅用于合法的安全研究、教学以及获得明确授权的渗透测试。

跳转微信打开

本文转载自微信公众号「Security丨Art」,查看原文。版权归原作者所有,如有侵权请联系删除。