一款功能强大的独立命令行工具,利用具有高级结构化输出能力的大语言模型从文档中提取网络威胁情报(CTI)。
# 克隆或下载 standalone-tdo 文件夹
cd standalone-tdo
# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate # 在 Windows 上: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
本工具使用通过 .env 文件加载的环境变量进行配置:
# 复制示例配置文件
cp env.example .env
# 用您的设置编辑 .env
# 必需变量:
GEMINI_API_KEY=your-google-ai-api-key-here
GEMINI_MODEL=gemini-2.5-flash
获取 Gemini API 密钥:
.env 文件中可用模型:
gemini-2.5-flash-preview-05-20(推荐 - 快速且经济实惠)gemini-2.5-pro-preview-06-05(更强大,较慢)# 处理单个文件并启用所有功能
python tdo_bulk.py report.pdf --flow --opps
# 处理多个文件
python tdo_bulk.py file1.pdf file2.docx file3.txt
# 使用并行工作进程处理目录中的所有文件
python tdo_bulk.py reports/ -j 4
# 生成包含评估的综合分析
python tdo_bulk.py report.pdf --flow --opps --eval-opps
usage: tdo_bulk.py [options] FILE [FILE ...]
位置参数:
FILE 一个或多个要处理的文件或目录
核心选项:
-o, --output DIR 输出目录(默认:./extracted_data)
--csv FILE 将摘要导出为 CSV 文件
-j, --jobs N 并行工作进程数(默认:1)
--retries N LLM 重试次数(默认:2)
--backoff SEC 指数退避基数(默认:1.5)
分析功能:
--flow 生成攻击流 JSON
--opps 生成威胁检测机会
--eval-opps 评估检测机会的质量
--debug-opps 显示机会生成的调试信息
输出控制:
-q, --quiet 最小化控制台输出
-v, --verbose 调试级别日志
-h, --help 显示帮助信息并退出
# 基本 CTI 提取
python tdo_bulk.py threat_report.pdf
# 启用所有功能的全面分析
python tdo_bulk.py apt_report.pdf --flow --opps --eval-opps
# 使用并行工作进程进行批处理
python tdo_bulk.py reports_folder/ -j 8 --flow --opps
# 将结果导出到 CSV
python tdo_bulk.py *.pdf --csv results.csv
# 用于自动化的静默模式
python tdo_bulk.py reports/ -q -o /var/soc/cti --opps
对于每个处理的文件,工具会生成:
{filename}_extracted.json:包含全面模式的结构化 CTI 数据{filename}_{timestamp}.md:包含所有分析的可读 Markdown 报告--flow)--opps)归因与行为体关系:
USES_TOOL, USES_TECHNIQUE, CONDUCTS, ATTRIBUTED_TO, TARGETS技术关系:
TOOL_IMPLEMENTS_TECHNIQUE, HOSTS_ON, COMMUNICATES_WITH, VARIANT_OFDROPS, DOWNLOADS, INDICATES, OBSERVED_ON, EXPLOITS高级关系:
MITIGATES, DETECTS, IS_SUBTECHNIQUE_OF, FLOW_CONTAINS_STEPFLOW_USED_BY_ACTOR, OBSERVES, SOURCED_FROM所有关系均支持 confidence、source、first_seen、last_seen 等属性。
工具生成基于证据的检测机会,具有以下特点:
{
"id": "opp-001",
"name": "Detect PowerShell Process Injection",
"technique_id": "T1055",
"artefacts": ["powershell.exe with WriteProcessMemory calls"],
"behaviours": ["Process injection into legitimate processes"],
"rationale": "APT groups commonly use PowerShell for process injection",
"confidence": 0.8,
"source": "PowerShell used for process injection (T1055)",
"evidence": [
"• PowerShell executes WriteProcessMemory calls (line 45)",
"• Relationship: ThreatActor USES_TECHNIQUE T1055"
]
}
增强的攻击流提供了:
{
"flow": {
"label": "AttackFlow",
"pk": "attack-flow--uuid",
"properties": {
"name": "APT29 Multi-stage Attack",
"description": "Sophisticated spear-phishing to data exfiltration flow"
}
},
"steps": [
{
"order": 1,
"entity": {"label": "Technique", "pk": "T1566.001"},
"description": "Spear-phishing attachment delivery",
"reason": "Initial access method cited in report section 2.1"
}
]
}
tdo_bulk.py)python-dotenv 加载 .env 配置tdo_bulk_runner.py)tdo_core/extractors/report_processor.py)tdo_core/detection/opportunity_generator.py)tdo_core/flows/attack_flow_synthesizer.py)tdo_core/report/md_export.py)tdo_core/llm/prompts.py)文档输入 → 文本提取 → LLM 处理 → 结构化输出
↓ ↓ ↓ ↓
PDF/DOCX 清洗文本 Gemini API JSON + 回退
↓ ↓ ↓ ↓
多格式 预处理 Pydantic 模式 验证
↓ ↓ ↓ ↓
文件支持 文本清洗 结构化数据 CTI 图
↓
后处理
↓ ↓
攻击流 检测机会
↓ ↓
Markdown 报告导出
| 变量 | 必需 | 描述 | 示例 |
|---|---|---|---|
GEMINI_API_KEY | ✅ | Google AI API 密钥 | AIza... |
| 模型 |
|---|
Error: Required environment variables missing: GEMINI_API_KEY, GEMINI_MODEL
解决方案: 创建包含两个必需变量的 .env 文件
Skipping unsupported file: document.rtf
解决方案: 转换为 PDF、DOCX、TXT 或 MD 格式
Structured Gemini API error: ...
可能的解决方案:
--verbose 获取详细错误日志工具通过以下方式自动处理 JSON 解析问题:
-j 标志处理多个文件-q# 启用详细日志记录
python tdo_bulk.py report.pdf -v
# 调试检测机会
python tdo_bulk.py report.pdf --opps --debug-opps
# 导出详细日志
python tdo_bulk.py report.pdf -v > processing.log 2>&1
该工具需要 Python 3.9+ 和以下关键包:
google-generativeai:Google AI (Gemini) API 客户端,支持结构化输出PyMuPDF:高性能 PDF 文本提取python-docx:Microsoft Word 文档处理pandas:数据操作和 CSV 导出pydantic:模式验证和结构化输出python-dotenv:环境变量管理cleantext:文本预处理工具此独立版本:
然而,它包含了大多数用例所需的所有核心 CTI 提取和分析能力。
.env 文件管理.env 文件 — 它已被 .gitignore 排除GEMINI_API_KEY提取的 JSON 和 Markdown 文件可能包含:
在公开共享之前,请务必审查输出内容。
请负责任地报告安全漏洞。详情请参阅 SECURITY.md。
本项目采用 MIT 许可证 — 详情请参阅 LICENSE。
欢迎贡献!请阅读 CONTRIBUTING.md 了解指南。
需要帮助? 运行 python tdo_bulk.py --help 快速参考,或查看上面的故障排除部分。
| 实体类型 | 描述 | 关键属性 |
|---|
| ThreatActor | 网络威胁组织 | aliases, primary_motivation, first_seen |
| Tool | 合法软件 | family, capabilities, kill_chain_phases |
| Malware | 恶意软件 | family, capabilities, first_seen, last_seen |
| Technique | MITRE ATT&CK 技术 | id (T1234), description, kill_chain_phases |
| Tactic | MITRE ATT&CK 战术 | id (TA0001), description |
| Infrastructure | IP 地址、域名、URL | type, tags, first_seen, last_seen |
| Indicator | 文件哈希、模式 | value, pattern, valid_from, valid_until |
| Vulnerability | CVE 条目 | id, cvss_score, affected_software |
| Campaign | 命名攻击活动 | objective, status, first_seen |
| Identity | 目标组织 | type, description |
| CourseOfAction | 缓解措施、补丁 | type, description |
| Source | 文档来源 | filename, document_title, file_size_mb |
GEMINI_MODEL | ✅ | 使用的 Gemini 模型 | gemini-2.5-flash-preview-05-20 |
| 速度 |
|---|
| 质量 |
|---|
| 成本 |
|---|
| 使用场景 |
|---|
gemini-2.5-flash-preview-05-20 | ⚡ 快速 | 🎯 良好 | 💰 低 | 生产环境、批量处理 |
gemini-2.5-pro-preview-06-05 | 🐌 慢速 | 🏆 优秀 | 💸 高 | 复杂分析、研究 |