MystCryptBust344/Agentic-Threat-Intelligence
GitHub: MystCryptBust344/Agentic-Threat-Intelligence
面向 Agentic 威胁情报的时序知识图谱摄取管道,结合不确定性量化与双层存储实现 CTI 数据的自动抽取、置信度筛选和持久化。
Stars: 0 | Forks: 0
# 第一阶段 — 时序知识图谱 (TKG) 摄取管道
实现行动计划(第 1–4 周)中定义的 **Agentic 威胁情报** 系统的核心数据层。
## 架构
```
Stream Source (TIRE samples / CTI reports)
↓
TripletExtractor → (subject, relation, object, c_NLP)
↓
DualLayerTKG.ingest_triplet()
├── Threshold filter → ACCEPTED / FLAGGED / REJECTED
├── Bounded metrics:
│ effective_confidence = c_NLP × exp(−λ × Δt) ∈ [0,1]
│ threat_reliability = (ec + source_reputation) / 2 ∈ [0,1]
└── InMemoryGraphStore (NetworkX/PyG)
↓ auto-flush every 30s
PersistentGraphStore
├── Neo4jGraphStore (live DB — Cypher-native)
└── JSONLGraphStore (fallback — append-only log)
```
## 文件说明
| 文件 | 用途 |
|---|---|
| `tkg_store.py` | 双层 TKG:InMemoryGraphStore + Neo4j/JSONL 后端 |
| `train_relation_extractor.py` | 在 TIRE 上微调 BERT 进行关系分类 |
| `triplet_extractor.py` | 基于 UQ 阈值的运行时抽取 |
| `ingestion_pipeline.py` | 带有 Rich 遥测数据的流式模拟驱动程序 |
| `test_phase1.py` | 完整测试套件:存储、模型、端到端 |
## 快速开始 (VS Code)
### 第 0 步 — 运行测试(数据库 + 抽取器层,无需下载模型)
```
cd phase1
python -X utf8 test_phase1.py --test-db --test-model
```
### 第 1 步 — 运行端到端摄取模拟(50 个 TIRE 样本)
```
python -X utf8 ingestion_pipeline.py --samples 50
```
### 第 2 步 — 结合 MITRE ATT&CK 预填充运行(推荐用于完整的 TKG)
```
python -X utf8 ingestion_pipeline.py --samples 100 --seed-mitre
```
### 第 3 步 — 导出用于第二阶段 TGN 训练的 PyG 图
```
python -X utf8 ingestion_pipeline.py --samples 200 --export-pyg
```
输出:`phase1_output/tkg_pyg_snapshot.pt`
### 第 4 步 — 训练关系抽取器(推荐使用 GPU)
```
# 快速验证(200 个样本,1 个 epoch)
python -X utf8 train_relation_extractor.py --quick-check
# 完整训练(7947 个样本,5 个 epochs,在 CPU 上约需数小时)
python -X utf8 train_relation_extractor.py --epochs 5
```
## 置信度阈值策略
| c_NLP 范围 | 权重 | 状态 | 操作 |
|---|---|---|---|
| ≥ 0.90 | 1.0 | ACCEPTED | 立即摄取 |
| 0.70–0.90 | c | ACCEPTED | 部分权重 |
| 0.50–0.70 | 0.3 | FLAGGED | 路由至审核队列 |
| < 0.50 | — | REJECTED | 记录日志,排除在 TKG 之外 |
## 有界公式(根据可行性研究)
```
effective_confidence = c_NLP × exp(−λ × Δt) λ = 0.01
threat_reliability = (effective_confidence + reputation) / 2.0
```
所有值严格属于 [0, 1] 区间。
## 输出文件 (phase1_output/)
| 文件 | 描述 |
|---|---|
| `tkg_mutations.jsonl` | 记录所有节点/边写入的追加型结构化日志 |
| `tkg_node_index.json` | 快速的节点 ID → 记录查找表 |
| `tkg_pyg_snapshot.pt` | 用于第二阶段 TGN 的 PyG Data 对象 (如果使用 --export-pyg) |
| `models/relation_extractor.pt` | 已训练的模型检查点 |
| `models/label_map.json` | 关系索引 ↔ 标签映射 |
标签:时序数据库, 特权检测, 逆向工具