nlink-jp/cti-graph
GitHub: nlink-jp/cti-graph
一个本地优先的威胁情报攻击图分析平台,通过 STIX 2.1 数据构建加权攻击图并暴露安全分析结果。
Stars: 0 | Forks: 0
# cti-graph
本地优先的威胁情报攻击图分析平台。
灵感来自 [SAGE](https://github.com/sw33t-b1u/sage) —— 适配为
使用本地 SQLite 存储而非 Google Cloud Spanner。
## 概述
cti-graph 摄取 STIX 2.1 威胁情报数据,构建带有加权 TTP 转换的攻击图,并通过 REST API 暴露分析结果。
### 关键特性
- **STIX 2.1 摄取** — 解析数据包,使用 stix2 库验证,TLP 过滤
- **PIR 驱动的优先级** — 根据优先级情报需求过滤行为者并加权资产
- **FollowedBy 权重** — 四因素公式:基础概率 × 活动度 × 利用难易度 × 事件响应乘数
- ** choke-point 检测** — 通过关键性 × 行为者目标数量识别高风险资产
- **事件相似性** — 混合评分:Jaccard TTP 加上 BFS 转换覆盖
- **TTP→资产匹配** — 30+ ATT&CK 技术到资产标签的映射
- **REST API** — FastAPI 端点,支持 Bearer 令牌认证
- **外部集成** — OpenCTI、MITRE Caldera、Slack Webhooks
## 快速开始
```
# 安装
uv sync
# 初始化数据库
cti-graph init-db
# 摄取 STIX 数据
cti-graph etl --bundle path/to/bundle.json
cti-graph etl --bundle path/to/bundle.json --pir path/to/pir.json
# 启动 API 服务器
cti-graph serve
```
## CLI 命令
| 命令 | 描述 |
|------|------|
| `cti-graph init-db` | 创建带有图模式的 SQLite 数据库 |
| `cti-graph etl --bundle FILE` | 摄取单个 STIX 数据包 |
| `cti-graph etl --pir FILE` | 摄取并应用 PIR 过滤 |
| `cti-graph serve` | 启动 FastAPI 分析服务器 |
| `cti-graph version` | 显示版本信息 |
## API 端点
| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/attack-paths?asset_id=...` | 到达资产的攻击路径 |
| GET | `/choke-points?top_n=20` | 高风险 choke-point 资产 |
| GET | `/actor-ttps?actor_id=...` | 行为者的 TTP 攻击流程 |
| GET | `/asset-exposure` | 互联网暴露的资产风险 |
| GET | `/similar-incidents?incident_id=...` | 相似事件搜索 |
设置 `CTI_GRAPH_API_TOKEN` 以启用 Bearer 令牌认证。
## 配置
配置文件:`~/.config/cti-graph/config.toml`
(可通过 `CTI_GRAPH_CONFIG` 环境变量覆盖)
```
[database]
path = "" # default: ~/.local/share/cti-graph/graph.db
[stix]
landing_dir = "" # default: ~/.local/share/cti-graph/stix/
tlp_max = "amber" # red objects never stored
[opencti]
url = ""
token_env = "OPENCTI_TOKEN"
[caldera]
url = ""
api_key_env = "CALDERA_API_KEY"
[notification]
slack_webhook_env = "SLACK_WEBHOOK_URL"
choke_point_threshold = 0.1
[api]
host = "127.0.0.1"
port = 8080
token_env = "CTI_GRAPH_API_TOKEN"
```
## 图数据模型
**节点表(8 个):** ThreatActor、TTP、Vulnerability、MalwareTool、Observable、Incident、Asset、SecurityControl
**边表(17 个):** Uses、UsesTool、Exploits、MalwareUsesTTP、FollowedBy、IncidentUsesTTP、Targets、TargetsAsset、HasVulnerability、ConnectedTo、ProtectedBy、IndicatesTTP、IndicatesActor、PIR、PirPrioritizesActor、PirPrioritizesTTP、PirWeightsAsset
## 开发
```
make test # Run tests
make lint # Check linting
make format # Fix formatting
make build # Build distribution
```
## 许可证
Apache-2.0 —— 详情见 [LICENSE](LICENSE)。
本项目灵感来自 [SAGE](https://github.com/sw33t-b1u/sage),
根据 Apache-2.0 许可。
标签:AV绕过, Bearer Token, BFS, ETL, FastAPI, Jaccard, JavaCC, MITRE Caldera, OpenCTI, PIR, REST API, SEO词:STIX 2.1分析平台, SEO词:攻击图分析工具, SEO词:本地威胁情报平台, Slack Webhook, SQLite, STIX 2.1, TTP, TTP-Asset映射, 优先级情报需求, 关键节点检测, 外部集成, 威胁建模, 威胁情报, 安全分析平台, 安全可视化, 开发者工具, 攻击图分析, 攻击路径, 本地优先, 网络测绘, 逆向工具