redhatlad/graphintel
GitHub: redhatlad/graphintel
基于知识图谱和大语言模型的网络威胁情报相关性评估系统,能从非结构化报告中提取结构化 CTI 并通过图推理判断威胁与组织的关联程度。
Stars: 0 | Forks: 0
# GraphIntel
基于知识图谱和 LLM 的上下文网络威胁情报相关性评估系统。
GraphIntel 从非结构化报告中提取结构化 CTI,将其导入 Neo4j,并执行基于图的推理,以识别与特定组织相关的报告。
## 功能特性
- 基于大语言模型 (LLM) 的原始文本 CTI 提取
- 符合 STIX 标准的图谱导入至 Neo4j
- 威胁与组织之间的多跳路径发现
- 基于 LLM 的路径相关性分类
- Flask REST API
- 容器化 (Docker) 部署
- 可选的 PostgreSQL 持久化,用于报告跟踪和分析
# 仓库结构
```
system/
├── app/
│ ├── routes.py # API endpoints
│ ├── services/ # extraction, graph, reasoning services
│ └── ...
├── docker-compose.yml # Flask + Neo4j + PostgreSQL stack
├── uml/ # architecture diagrams
└── ...
docker/
└── docker-compose.yml # standalone OpenCTI stack
```
# 快速入门
启动 API 服务栈:
```
cd system
docker compose up --build
```
服务:
| Service | URL |
|---|---|
| API | http://localhost:8000 |
| Neo4j Browser | http://localhost:7474 |
# 请求示例
```
curl -X POST http://localhost:8000/threat_reports \
-H "Content-Type: application/json" \
-d '{
"text": "Example incident report text",
"url": "https://example.com/report",
"credibility": 80
}'
```
## 威胁报告导入
`POST /threat_reports`
- 创建持久化的报告记录
- 提取 CTI 并导入至 Neo4j
- 存储推导出的路径和相关性分析
当需要对报告进行生命周期跟踪并输出推理结果时使用。
# 核心概念
## 文本导入
`POST /ingest/text`
- 从文本中提取实体和关系
- 将它们导入至 Neo4j
- 不创建被跟踪的报告记录
仅在需要进行图谱扩充时使用。
# 处理流水线
```
Raw Report
↓
LLM Extraction
↓
Structured CTI Subgraph
↓
Neo4j Graph Merge
↓
Path Discovery
↓
LLM Path Classification
↓
Relevant Threat Paths
```
# 文档
API 参考 `API.md`
标签:C2, DLL 劫持, Docker, Flask, IP 地址批量处理, LLM, Neo4j, OpenCTI, PostgreSQL, Python, REST API, STIX, Unmanaged PE, 图推理, 多跳路径发现, 大语言模型, 威胁情报, 安全架构, 安全防御评估, 实体关系抽取, 容器化部署, 密码管理, 开发者工具, 情报生命周期管理, 情报相关性评估, 插件系统, 无后门, 无线安全, 测试用例, 网络威胁情报, 网络安全, 网络测绘, 自动化情报处理, 请求拦截, 逆向工具, 隐私保护