cbev0x/PACMutator
GitHub: cbev0x/PACMutator
一款字段级 Kerberos PAC 变异工具,通过精准修改合法票据中的单个字段来研究域控制器的验证行为,而非用于票据伪造。
Stars: 0 | Forks: 0
# PACMutator
一个用于 fuzzing Kerberos PAC 验证器的字段级 PAC mutation 工具,而非用于伪造票据。
现有的每一个 PAC 工具都是从头开始或基于模板构建 PAC,并对结果进行签名。这对于 Golden 或 Silver 票据来说是正确的方式,但并不适合用来研究域控实际检查了什么。PACMutator 则反其道而行之:它获取一个合法签发的票据,仅修改其中一个 buffer、field 或 signature,保留其他所有内容的逐字节原样,从而让我观察到哪条验证路径会察觉到这一变化。它是一个用于表征验证器行为的研究工具,而不是一个 exploit。
## 功能
- 将 PAC 解析为 raw-container 模型,该模型永远不会通过 NDR re-encoder 来回转换 buffer 内容,因此未修改的票据会逐字节完整保留,并且任何修改都是精准的。
- 提供对四个 PAC signature(server、KDC、ticket、extended-KDC)的独立控制:保留、重新计算、置零、剥离或重新设定类型。
- 将修改后的 PAC 重新构建为重新加密的服务票据,并生成一个可用的 credential cache。
- 支持差异化方法:对仅验证 signature 的服务和执行完整验证的服务运行相同的 mutation,并比较两者的判定结果。
## 目录结构
```
core/ container model: parse, reflow, byte-identical round-trip gate
buffers/ typed views for individual PAC buffers
signing/ signature operations and the server-signature engine
structural/ buffer-table framing primitives
delivery/ ticket extract / re-encrypt / emit
oracle/ token builder + acceptor for the validation oracles
examples/ end-to-end research cells (enforcement matrix, field hunts)
cli.py command-line entry point
```
## 环境要求
- Python 3.11+
- [Impacket](https://github.com/fortra/impacket)
```
pip install impacket
```
## 使用说明
该工具作用于你已经持有的服务票据,需使用 service key 提取。一个最基础的往返检查如下:
```
python cli.py extract ticket.ccache --key --enctype 18 -o out.pac
python cli.py roundtrip out.pac # must PASS (byte-identical reflow)
python cli.py signtest out.pac --key --enctype 18 # must MATCH
```
有关完整的研究单元,包括 signature 强制执行矩阵和内容字段探测,请参阅 `examples/`。
## 范围与目的
PACMutator 需要目标 service key,这意味着它模拟的是攻击达成后的研究场景。其目的是映射出域控制器验证了哪些内容,其输出是对验证器行为的表征,而不是一种 bypass。请仅在你拥有或获得明确授权测试的系统上使用它。
## 背景
作为关于 Windows Server 2025 PAC 验证研究系列的一部分而编写。随附的文章涵盖了该工具的设计以及关于完整验证检查项的逐字段映射图。
## 许可证
MIT
标签:Python, 协议分析, 安全测试, 攻击性安全, 无后门, 权限提升, 模拟器, 逆向工具