YoussefMami/CVE2026_21509
GitHub: YoussefMami/CVE2026_21509
一个 Python 编写的 DOCX 安全测试文档生成器,用于验证 EDR/AV 对 OLE 对象嵌入的检测能力。
Stars: 0 | Forks: 0
# CVE2026_21509
📄 DOCX 安全测试生成器
https://img.shields.io/badge/python-3.7+-blue.svg
https://img.shields.io/badge/license-MIT-green.svg
https://img.shields.io/badge/purpose-EDR%2520Testing-orange.svg
⚠️ 警告:仅供专业使用的安全测试工具。请仅在受控和隔离的环境中使用。
📋 目录
描述
功能
技术架构
前置条件
安装
用法
生成文档结构
用例
局限性
安全注意事项
故障排除
许可证
描述
DOCX 安全测试生成器是一个 Python 工具,旨在生成包含安全测试工件 (artifacts) 的 Microsoft Word 文档 (DOCX)。这些工件允许安全专业人员评估安全解决方案(EDR, AV)针对 OLE 对象嵌入和 VBA 宏技术的检测能力。
该工具适用于需要在受控环境中验证检测规则的安全专业人员、SOC 团队和研究人员。
🎯 教育目标
理解 OOXML 文档结构
分析 OLE 对象嵌入机制
测试 EDR/AV 检测规则
模拟入侵指标 (IoCs) 而无需执行恶意代码
功能
功能 描述
📄 DOCX 生成 创建符合 OOXML 标准的有效 Word 文档
🔌 OLE 对象 嵌入具有可配置 CLSID 的虚拟 OLE 对象
🎨 VML 回退 为 OLE 对象添加视觉回退渲染
📝 嵌入说明 在文档中包含测试说明
⚙️ 可配置 IP/端口 可自定义 reverse shell 测试参数
✅ 自动验证 生成后验证包完整性
技术架构
生成的 OOXML 结构
text
document.docx (ZIP 归档)
├── [Content_Types].xml # MIME 类型定义
├── _rels/
│ └── .rels # 根关系
└── word/
├── document.xml # 主文档内容
├── _rels/
│ └── document.xml.rels # 文档关系
├── embeddings/
│ └── oleDummy.bin # 虚拟 OLE 对象
├── media/
│ └── icon.png # 回退图标
└── TEST_INSTRUCTIONS.txt # 嵌入的测试说明
技术组件
1. OLE 对象结构
python
生成的 OLE 二进制结构:
- Header: 0x01050000 (OLE 对象标记)
- Version: 0x02000000
- Flags: 0x0C000000
- CLSID: EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B (Package Object)
- Padding: 1024 bytes total
2. XML 关系
关系遵循 OOXML 标准格式:
rIdOle1 → 链接到嵌入的 OLE 对象
rIdImage1 → 链接到回退图标图像
3. MIME 类型定义
扩展名 Content-Type
.rels application/vnd.openxmlformats-package.relationships+xml
.xml application/xml
.png image/png
.bin application/vnd.ms-office.oleObject
代码架构
text
docx_generator.py
├── 配置 (LHOST, LPORT, TMP)
├── 结构函数
│ ├── prepare_structure() # 创建目录布局
│ └── generate_ole_dummy() # 创建虚拟 OLE 二进制
├── XML 生成函数
│ ├── write_root_rels() # 包关系
│ ├── write_document_xml() # 主文档内容
│ ├── write_document_rels() # 文档关系
│ └── write_content_types() # MIME 类型定义
├── 资产函数
│ ├── generate_icon() # 创建回退图标
│ └── create_test_instructions() # 嵌入测试说明
└── 打包函数
├── build_docx() # ZIP 压缩
└── check_package() # 完整性验证
前置条件
操作系统
Windows 10/11
Linux (Ubuntu 20.04+)
macOS 11+
Python 依赖
bash
pip install -r requirements.txt
requirements.txt:
text
lxml>=4.9.0
Pillow>=9.0.0
推荐的测试环境
text
┌─────────────────────────────────────────────────────────────┐
│ 安全测试环境 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🔵 攻击机 🔴 目标机 │
│ (Kali Linux) (Windows 10/11 VM) │
│ │ │ │
│ ├── Netcat 监听器 ├── Microsoft Word │
│ └── Python 3.7+ └── 启用调试模式 │
│ │
│ └────── 隔离网络 (Host-Only) ──────┘ │
└─────────────────────────────────────────────────────────────┘
安装
1. 克隆仓库
bash
git clone https://github.com/yourusername/docx-security-test-generator.git
cd docx-security-test-generator
2. 安装依赖
bash
pip install -r requirements.txt
3. 验证安装
bash
python docx_generator.py --help
用法
基本配置
根据您的测试环境修改脚本中的配置变量:
python
# 配置
LHOST = "192.168.1.100" # Your listening machine IP
LPORT = "4444" # Netcat listening port
命令行执行
bash
# 使用自定义文件名生成文档
python docx_generator.py my_test_document.docx
# 使用默认文件名生成文档
# python docx_generator.py
示例会话
bash
$ python docx_generator.py security_test.docx
# DOCX 安全测试生成器
Test Configuration:
LHOST: 192.168.1.100
LPORT: 4444
Output: security_test.docx
⚠️ SECURITY WARNING ⚠️
This document contains TEST INDICATORS
No malicious code is included
Use ONLY in isolated environments
Continue? (yes/no): yes
[+] Folder structure created
[+] Test instructions added
[+] Dummy OLE written: _pkg_docx/word/embeddings/oleDummy.bin
[+] Icon created: _pkg_docx/word/media/icon.png
[+] _rels/.rels written.
[+] word/document.xml written.
[+] word/_rels/document.xml.rels written.
[+] [Content_Types].xml written.
[+] DOCX generated: security_test.docx
[+] DOCX size: 12345 bytes.
============================================================
[✓] Test document successfully created!
File: security_test.docx
📋 TEST INSTRUCTIONS:
1. On attacker machine: nc -lnvp 4444
2. Open document in isolated Windows VM
3. Check embedded instructions in document
4. For actual testing, manually add VBA code
# ⚠️ 注意:本文档不包含活动宏
It is a test artifact for validating EDR detection
完整测试流程
步骤 1:准备环境
bash
# 测试前拍摄 VM 快照
# 确保网络隔离 (Host-Only 模式)
# 验证 VM 之间的连通性
ping 192.168.1.100
步骤 2:生成测试文档
bash
python docx_generator.py edr_test.docx
步骤 3:启动 Netcat 监听器(攻击机)
bash
nc -lnvp 4444
步骤 4:分析文档(目标机)
bash
# 解压并检查结构
unzip -d extracted_doc edr_test.docx
tree extracted_doc/
# 分析 OLE 对象
olevba edr_test.docx
生成文档结构
OLE 对象详情
生成的 OLE 对象使用 CLSID EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B,对应于 Package Object —— 一种良性的、不可执行的 OLE 类型。
python
# OLE 二进制结构(hexdump 表示)
00000000 01 05 00 00 02 00 00 00 0C 00 00 00 C3 22 AC EA |............."..|
00000010 C1 30 CF 11 A7 EB 00 00 C0 5B AE 0B 00 00 00 00 |.0.......[......|
...
VML 回退渲染
Vector Markup Language (VML) 用于跨版本兼容性:
xml
用例
1. EDR 检测验证
测试安全解决方案是否检测:
具有可疑 CLSID 的嵌入 OLE 对象
DOCX 文件中的 OLE 对象结构
入侵指标 (IoC) 模式
2. 安全研究
分析 OOXML 结构解析
研究 OLE 对象嵌入技术
研究检测绕过方法
3. SOC 培训
为分析师提供真实的测试工件
培训 IoC 识别
练习事件响应流程
4. 蓝队演练
验证监控规则
测试告警机制
评估检测覆盖率
局限性
技术限制
局限性 描述
无活动宏 文档以纯文本形式包含宏代码,而非活动的 VBA 项目
仅限良性 CLSID 使用不可执行的 Package Object CLSID
手动宏激活 VBA 代码需要手动插入才能进行实际测试
无自动执行 无自动触发器或嵌入漏洞利用
环境限制
需要隔离的测试环境
不适用于生产系统
需要手动验证实际的 reverse shell 测试
安全注意事项
⚠️ 重要安全提示
仅在隔离环境中使用
切勿在生产系统上打开生成的文档
使用带有快照的专用 VM
确保网络隔离(Host-Only 模式)
无恶意代码
此工具仅生成测试工件
不包含活动的漏洞利用或 payload
所有代码都是透明且可审计的
法律合规
测试前确保已获得授权
遵守组织安全策略
记录所有测试活动
负责任披露
通过正规渠道报告任何真实漏洞
请勿用于未经授权的测试
故障排除
常见问题及解决方案
问题 解决方案
ImportError: No module named lxml pip install lxml
ImportError: No module named PIL pip install Pillow
Windows 上权限被拒绝 以管理员身份运行或使用不同的输出目录
文档在 Word 中无法打开 验证文件扩展名是否为 .docx,检查 ZIP 完整性
OLE 对象不可见 Word 可能出于安全原因阻止 OLE 对象;启用编辑
调试模式
python
# 通过修改 print 语句启用详细输出
# 添加日志记录以进行详细调试:
import logging
logging.basicConfig(level=logging.DEBUG)
文档验证
bash
# 验证 ZIP 完整性
unzip -t generated_document.docx
# 检查 OOXML 结构有效性
# 使用 Microsoft Office Open XML 验证器
许可证
本项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
text
MIT License
Copyright (c) 2024 Security Research
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
贡献
欢迎贡献!请确保:
代码遵循 Python PEP 8 标准
文档已相应更新
测试在隔离环境中进行
保持安全注意事项
致谢
Microsoft 的 OOXML 规范
Python lxml 和 Pillow 库
安全社区的测试方法论
联系方式
如有问题、疑问或安全研究咨询:
在 GitHub 上开启 issue
联系:info@creasitetn.ovh
最后更新:2025 年 3 月
版本:1.0.0
标签:CVE-2026-21509, DNS 反向解析, DNS枚举, DOCX生成器, EDR测试, Maven, OLE对象嵌入, OOXML结构, PoC生成, Python, SOC分析, URL发现, VBA宏, 云资产清单, 威胁情报, 安全检测, 开发者工具, 攻击模拟, 无后门, 杀毒软件测试, 漏洞验证, 网络安全工具, 逆向工程, 驱动签名利用