anirban2crypto/Detection
GitHub: anirban2crypto/Detection
基于Neo4j图数据库、Node2Vec机器学习和RAG+LLM的威胁检测管道,支持多源日志摄入、攻击模式识别和自动化分析报告生成。
Stars: 0 | Forks: 0
# 🛡️ 通过 Graph + RAG + LLM 进行威胁检测
本项目演示了一个全栈安全分析管道,使用**基于图的建模**、**合成攻击注入**,以及结合 **LLM** 的**检索增强生成 (RAG)**。它利用真实数据和合成数据检测并解释横向移动、凭证填充和数据渗漏等威胁。
## 🚀 功能特性
- 针对用户、设备、IP、恶意软件、MITRE ATT&CK 技术和活动的图模式 (Graph schema)
- 用于 LANL 数据集、**Azure AD 登录日志**(多租户)和 **MalwareBazaar** 威胁情报的 ETL 管道
- 合成攻击注入(不可能的移动、凭证填充、横向移动、数据渗漏)
- **MITRE ATT&CK 丰富化** — 将攻击映射到真实的技术 ID(T1078, T1110, T1021, T1041 等)
- 基于 Cypher 的图异常检测查询
- **图算法** — PageRank、社区发现、中介中心性、最短路径攻击追踪、度异常评分
- **Graph ML (Node2Vec)** — 节点嵌入 + 无监督异常检测以发现可疑实体
- **活动聚类** — 将相关攻击分组为活动,杀伤链覆盖分析,威胁归因,基础设施重叠检测
- RAG 管道:图检索 → LLM 提示词 → 面向分析师的报告
- 带有查询选择、交互式图可视化、高级分析选项卡和 AI 生成分析的 Streamlit 仪表板
- **Docker Compose** — 一键启动全栈
- **Pytest 测试套件** — 59+ 项测试,覆盖连接、攻击、MITRE、算法、ML、活动、数据摄取和 RAG
- **Jupyter notebook** — 带有可视化的分步演练
## 🧱 架构概览
```
graph TD
A[Raw Logs & Threat Feeds] --> B[Graph Database - Neo4j]
B --> C[Retrieval Module - Cypher]
C --> D[LLM Prompt Builder]
D --> E[LLM - OpenAI GPT-4o-mini / GPT-4]
E --> F[Analyst Report]
F --> G[Streamlit Dashboard]
```
## 📦 数据源
| 数据源 | 用途 | 状态 |
|---|---|---|
| LANL Dataset | 认证日志、进程活动、网络流 | ✅ 已实现 |
| Azure AD Sign-In Logs | 身份事件、风险等级、MFA、条件访问 | ✅ 已实现 |
| MalwareBazaar | 恶意软件哈希、家族、IOC | ✅ 已实现 |
| MITRE ATT&CK | TTP 映射和丰富化 | ✅ 已实现 |
| Synthetic Injection | 使用 Faker/Mimesis 生成的攻击场景 | ✅ 已实现 |
| CICIDS2017 | 网络流量(良性 + 攻击) | 🔜 计划中 |
## 🧪 合成攻击注入
使用 Faker 和 Mimesis 模拟攻击场景:
| 攻击类型 | 描述 |
|---|---|
| **Impossible Travel** | 同一用户在几分钟内从相距甚远的位置登录 |
| **Credential Stuffing** | 来自同一 IP 的多次失败登录尝试 |
| **Lateral Movement** | 跨网络的顺序设备访问 |
| **Data Exfiltration** | 发往可疑 IP 的大量出站流量 |
## 🔍 检测查询 (Cypher)
### 不可能的移动
```
MATCH (u:User)-[r:AUTHENTICATED_TO]->(d:Device)
WITH u, collect(r.location) AS locations, collect(datetime(r.timestamp)) AS times
WHERE size(apoc.coll.toSet(locations)) > 1
AND duration.inMinutes(min(times), max(times)) < 30
RETURN u.user_id, locations, times;
```
## 🧠 RAG 管道
RAG 模块通过 Cypher 查询检索图上下文,并为 LLM 构建提示词:
1. **Retrieve (检索)** — 针对 Neo4j 运行检测查询以收集可疑子图
2. **Augment (增强)** — 将实体和关系格式化为结构化的提示词上下文
3. **Generate (生成)** — 将增强后的提示词发送给 LLM(GPT-4o-mini / GPT-4)进行分析
### 提示词模板
```
[Retrieved Graph Context]
Entities: Users, Devices, IPs, Malware, Techniques, Campaigns
Relationships: AUTHENTICATED_TO, COMMUNICATED_WITH, MATCHES_MALWARE, ...
[Task]
1. Summarize suspicious activity
2. Map to MITRE ATT&CK techniques
3. Suggest attacker goals
4. Recommend response actions
```
## 📊 仪表板
使用 **Streamlit** 构建,仪表板包含:
- **侧边栏** — 查询选择和过滤器
- **中央面板** — 交互式图可视化(PyVis + NetworkX)
- **右侧面板** — LLM 生成的分析师报告
### 运行
```
streamlit run dashboard/dashboard.py
```
## 📁 项目结构
```
graphdetection/
├── config/
│ ├── neo4j_connection.py # Neo4j driver & session manager
│ └── schema_setup.py # Constraints, indexes, schema verification
├── data_ingestion/
│ ├── lanl_etl.py # LANL auth + network flow ETL
│ ├── azure_ad_etl.py # Azure AD sign-in logs (multi-tenant)
│ ├── malwarebazaar_etl.py # MalwareBazaar threat feed ingestion
│ └── mitre_enrichment.py # MITRE ATT&CK technique mapping
├── synthetic_injection/
│ └── inject_attacks.py # 4 attack scenario generators + cleanup
├── detection/
│ ├── cypher_queries.py # Cypher detection queries + graph summary
│ ├── graph_algorithms.py # PageRank, community, centrality, attack paths
│ ├── graph_ml.py # Node2Vec embeddings + anomaly detection
│ └── campaign_clustering.py # Campaign clustering + attribution
├── rag_pipeline/
│ └── generate_report.py # Retrieve → Augment → Generate pipeline
├── dashboard/
│ └── dashboard.py # Streamlit UI with graph viz + AI reports
├── tests/
│ ├── conftest.py # Pytest fixtures & test isolation
│ ├── test_connection.py # Neo4j connection & schema tests
│ ├── test_attacks.py # Attack injection tests
│ ├── test_mitre.py # MITRE ATT&CK mapping tests
│ ├── test_graph_algorithms.py # Graph algorithm tests
│ ├── test_graph_ml.py # Node2Vec + anomaly detection tests
│ ├── test_campaigns.py # Campaign clustering tests
│ ├── test_data_ingestion.py # Azure AD + MalwareBazaar tests
│ └── test_rag_pipeline.py # RAG prompt construction tests
├── notebooks/
│ └── walkthrough.ipynb # Interactive demo notebook
├── docs/
│ └── methodology.md # Research methodology write-up
├── data/
│ ├── raw/lanl/ # Place LANL dataset files here
│ └── processed/
├── .env.example # Environment variable template
├── .gitignore
├── Dockerfile
├── docker-compose.yml # Full stack: Neo4j + pipeline + dashboard
├── requirements.txt
├── run.sh # Full pipeline runner script
├── plan.txt
└── README.md
```
## 🚀 快速开始
### 选项 A: Docker Compose(推荐)
```
# 设置你的 API key
cp .env.example ~/.env
# 编辑 ~/.env,填入你的 OPENAI_API_KEY 和 Neo4j password
# 启动所有服务:Neo4j + pipeline + dashboard
docker compose up --build
# Dashboard 位于 http://localhost:8501
# Neo4j Browser 位于 http://localhost:7474
```
### 选项 B: 本地设置
```
# 1. 安装依赖
pip install -r requirements.txt
# 2. 设置环境变量
cp .env.example ~/.env
# 编辑 ~/.env,填入你的 Neo4j password 和 OpenAI API key
# 3. 运行完整 pipeline (Neo4j → Schema → Inject → MITRE → Detect → Report → Dashboard)
./run.sh
# 或者运行单独步骤:
./run.sh --skip-neo4j # Neo4j already running
./run.sh --step 4 # Start from MITRE enrichment
./run.sh --dashboard # Jump to dashboard
./run.sh --clean # Remove synthetic data & stop Neo4j
```
## 🧪 测试
```
pytest tests/ -v
```
测试覆盖:
- Neo4j 连接性和模式验证
- 攻击注入图结构
- MITRE ATT&CK 数据完整性和摄取
- RAG 提示词模板构建
## 📓 Notebook
[notebooks/walkthrough.ipynb](notebooks/walkthrough.ipynb) 提供了交互式演练,通过内联可视化覆盖了完整管道。
## 📌 环境要求
- Python 3.9+
- Neo4j(本地或云端)
- OpenAI API key
- Streamlit
### 安装
```
pip install -r requirements.txt
```
### 主要依赖
- `neo4j` — 图数据库驱动
- `openai` — LLM 集成
- `streamlit` — 仪表板 UI
- `networkx` / `pyvis` — 图可视化
- `pandas` — 数据处理
- `faker` / `mimesis` — 合成数据生成
- `loguru` — 结构化日志
- `pytest` — 测试框架
## 📄 许可证
本项目用于教育和作品集演示目的。
标签:AMSI绕过, Apex, Azure AD, Cloudflare, Cypher查询, DLL 劫持, Docker, HTTP/HTTPS抓包, Kubernetes, LLM, MITRE ATT&CK, Neo4j, Node2Vec, PageRank, Petitpotam, PE 加载器, Python, RAG, Streamlit, Unmanaged PE, 只读文件系统, 图算法, 大语言模型, 威胁情报, 威胁检测, 安全规则引擎, 安全防御评估, 开发者工具, 异常检测, 态势感知, 撞库, 攻击归因, 数据渗出, 无后门, 智能安防, 机器学习, 检索增强生成, 横向移动, 版权保护, 特权检测, 编程规范, 网络安全, 访问控制, 逆向工具, 隐私保护