PhantomStream 是一个通过红蓝对抗演练实战验证的 PDF 文档动态追踪与防护工具。本项目在真实的攻防对抗环境中不断迭代优化,最终形成了一套具有实战价值的多锚点防御体系。
- ✅ 实战验证:经过真实红蓝对抗演练测试,抵御了多轮清洗攻击
- ✅ 多锚点防御:采用 4 层独立锚点策略,任一锚点存活即可追踪
- ✅ 明文震慑:Visual 水印直接展示追踪信息,产生心理威慑效果
- ✅ 极致轻量:采用图像栅格化技术支持 Unicode 水印,无需内嵌大字体,二进制体积骤减
- ✅ 完整 Unicode 支持:支持全球语言字符(中日韩等),自动适配最佳渲染策略
-
多锚点嵌入(4 层独立防御)
- Attachment 锚点:伪装为合法 PDF 附件
- SMask 锚点:隐藏在图像软蒙版数据中
- Content 锚点:嵌入页面内容流的不可见字符
- Visual 锚点:可见水印,明文展示追踪信息
-
加密与验证
- AES-256-GCM 加密保护追踪信息
- 支持自定义加密密钥(32 字节)
- 自动验证与解密提取
-
跨平台支持
- macOS / Linux / Windows 完全兼容
- 不依赖系统字体(字体已内嵌)
- 单一二进制文件,开箱即用
-
灵活的验证模式
- Auto 模式:首个成功锚点即停止(快速验证)
- All 模式:逐一验证所有锚点(完整诊断)
-
PDF 规范依赖
- 仅支持标准 PDF 格式文件
- 需要 PDF 包含可嵌入内容(页面、图像等)
-
清洗抵抗边界
- 可抵御常规清洗工具(PDFtk、Ghostscript 等)
- 无法抵御彻底重建 PDF 结构的深度清洗
-
Visual 水印特性
- 水印可见,用户可感知
- 适用于震慑场景,不适合完全隐蔽追踪
| 评估维度 | 等级 | 说明 |
|---|---|---|
| 隐蔽性 | ⭐⭐⭐⭐ | 3 个隐藏锚点 + 1 个可见锚点,综合隐蔽性强 |
| 抗清洗能力 | ⭐⭐⭐⭐ | 经实战验证,抵御常规清洗攻击 |
| 震慑效果 | ⭐⭐⭐⭐⭐ | Visual 水印直接展示追踪信息,心理威慑显著 |
| 可移植性 | ⭐⭐⭐⭐⭐ | 跨平台支持,无外部依赖 |
| 易用性 | ⭐⭐⭐⭐ | CLI 工具,简单易用 |
| 完整性 | ⭐⭐⭐⭐⭐ | 多锚点冗余,容错性强 |
综合评分:4.7/5.0
- 📘 攻防演练联合报告 - 红蓝对抗全过程记录与技术分析
- 📗 Defender 技术文档 - 防护工具技术实现与架构说明
- 📙 用户使用手册 - 工具安装、使用与常见问题
详细的技术方案文档位于 defender/docs/ 目录:
- Phase 1-9 各阶段技术演进文档
- 多锚点防御策略设计
- 加密与验证流程说明
phantom-stream/
├── README.md # 本文件 - 项目总览
├── docs/
│ └── PHANTOM_STREAM_JOINT_REPORT.md # 红蓝对抗联合报告
├── defender/ # 🛡️ 防护工具(核心)
│ ├── README.md # Defender 技术文档
│ ├── USER_MANUAL.md # 用户手册
│ ├── bin/
│ │ └── phantom-guard # 编译后的可执行文件
│ ├── injector/ # 锚点注入与提取逻辑
│ │ ├── anchor_*.go # 各锚点实现
│ │ ├── assets/ # 嵌入资源(字体文件)
│ │ └── font_embed.go # 字体嵌入逻辑
│ ├── docs/ # 技术方案文档
│ └── Makefile # 构建脚本
└── attacker/ # ⚔️ 攻击脚本(实验用途)
├── clean_*.sh # PDF 清洗脚本
└── test_*.py # 测试脚本
attacker/ 目录包含一些实验性的反抗脚本,用于:
- 模拟红队清洗攻击
- 测试防护工具的鲁棒性
- 研究 PDF 处理工具的行为特征
重要说明:
⚠️ 这些脚本不是工具的正式功能,仅供研究与测试⚠️ 使用这些脚本需要遵守相关法律法规⚠️ 请勿将这些脚本用于非授权的攻击行为
cd defender
make build./bin/phantom-guard sign \
-f document.pdf \
-m "UserID:12345" \
-k "your-32-byte-encryption-key!!"./bin/phantom-guard verify \
-f document_signed.pdf \
-k "your-32-byte-encryption-key!!" \
--mode=all详细使用说明请参考 用户手册。
本项目经历了 9 个阶段的红蓝对抗迭代:
- Phase 1-3:基础附件锚点 → 被清洗 → 优化伪装
- Phase 4-6:引入 SMask 锚点 → 多锚点防御初见成效
- Phase 7-8:Content 锚点加入 → 三重保险体系
- Phase 9:Visual 明文水印 → 震慑效果显著提升
完整对抗过程详见 联合报告。
- 语言:Go 1.24+
- PDF 处理:pdfcpu v0.11.1
- 加密:AES-256-GCM (crypto/aes)
- 图像处理:golang.org/x/image (用于水印栅格化)
- CLI 框架:Cobra
本项目(PhantomStream)是一个学术研究项目,仅用于以下合法目的:
✅ 合法用途:
- 安全研究与技术学习
- 网络安全教育与培训
- 在明确授权的红蓝对抗演练中使用
- 合法的文档版权保护与追溯
- 企业内部合规的文档管理
❌ 严格禁止:
- 未经授权对他人文档进行追踪或监控
- 侵犯他人隐私或违反数据保护法规
- 用于非法目的或恶意活动
- 在未获得明确许可的情况下部署于生产环境
- 任何可能违反所在地区法律法规的行为
-
用户责任:
- 使用者必须遵守所在国家/地区的所有适用法律法规
- 使用者对使用本工具的一切行为及后果承担全部法律责任
- 使用者应自行评估使用本工具的合法性和合规性
-
开发者免责:
- 本项目作者和贡献者不对任何直接或间接损失承担责任
- 本项目作者和贡献者不对任何滥用或非法使用行为负责
- 本项目按"现状"提供,不提供任何明示或暗示的担保
-
数据隐私:
- 使用本工具处理包含个人信息的文档时,必须遵守 GDPR、CCPA 等数据保护法规
- 在使用 Visual 水印功能时,需告知文档接收者相关追踪机制
- 建议在使用前咨询法律顾问,确保合规使用
本项目采用 MIT License 开源协议,但使用者仍需遵守上述免责声明。
使用本软件即表示您已阅读、理解并同意上述所有条款。如不同意,请立即停止使用。
📜 详细免责声明: 请阅读 LEGAL_DISCLAIMER.md 了解完整的法律条款和合规指导。
如有技术问题或建议,请通过以下方式联系:
- 提交 Issue 或 Pull Request
- 参考文档中的技术说明自行排查
最后更新:2025-12-13
项目状态:✅ 稳定版本(已通过红蓝对抗验证)