androcoderr/GRAPH-BASED-INSTRUSION-AND-THREAT-HUNTING
GitHub: androcoderr/GRAPH-BASED-INSTRUSION-AND-THREAT-HUNTING
GraphSec是一个基于Neo4j图数据库和AI算法的网络安全威胁狩猎平台,通过将网络流量和拓扑关系化,快速揭示传统日志审查难以发现的隐蔽攻击路径和横向移动行为。
Stars: 0 | Forks: 0
# GraphSec: 基于图的入侵检测与威胁狩猎
**GraphSec** 是一个创新的威胁狩猎平台,使用图形数据库(Neo4j)和基于算法的分析来解决现代网络安全问题(横向移动、僵尸网络、数据泄露)。
该项目不采用传统的基于行的日志审查,而是以网络拓扑和设备间关系为基础,旨在揭示“不可见”的攻击路径。
## 🚀 项目演示策略(向讲师展示用)
在向您的讲师进行演示时,强调以下 3 个关键点将使您脱颖而出:
1. **关系分析:** “传统的基于 SQL 的系统只能逐表查看。而我将网络流量建模为一种‘关系’。因此,我能够在几毫秒内看到攻击者采取的路径。”
2. **算法安全:** “我不仅在进行列表展示;我还使用 PageRank 算法找出网络中最关键的机器,并使用 Louvain(社区检测)算法发现可疑的群组流量。”
3. **主动威胁狩猎:** “我是在攻击发生时自动捕获网络中的异常连接(例如夜间的高数据量传输)以提供早期预警,而不是在事后才发现。”
## 🛠️ 快速安装说明
### 前置条件
- **Node.js 18+**:[下载](https://nodejs.org/)
- **Docker Desktop**:[下载](https://www.docker.com/products/docker-desktop/)
### 1. 启动 Docker Desktop
打开 Docker Desktop 并确保其正在运行(系统托盘中的鲸鱼图标)。
### 2. 启动 Neo4j 数据库
```
# Windows
docker-compose up -d
# VEYA
start-neo4j.bat
```
### 3. 安装依赖
```
npm install
```
### 4. 启动应用程序
```
npm run dev
```
在浏览器中打开:`http://localhost:3001`
### 5. 加载数据
当 Dashboard 打开时,点击 **“Seed Data”** 按钮。
## 📖 详细安装说明
有关详细的安装指南,请参阅 [SETUP.md](SETUP.md) 文件。
## 🎯 使用说明
### 分析页面
| 页面 | 描述 |
|-------|----------|
| **Dashboard** | 网络统计信息和节点列表 |
| **Lateral Movement** | 发现攻击者采取的路径 |
| **PageRank** | 检测最关键的节点 |
| **Communities** | 部门之间的可疑流量 |
| **Botnet Detection** | 检测 C&C 服务器 |
| **Anomaly Detection** | 异常数据传输 |
| **AI Agent** | 自主安全代理 |
| **AI Report** | 自动威胁报告 |
## 🤖 AI 功能
### OpenRouter 免费模型
本项目完全使用 **OpenRouter 免费 API**:
| 功能 | 模型 | 描述 |
|---------|-------|----------|
| **CypherQA** | `google/gemma-3-1b-it:free` | 自然语言 → Cypher 查询 |
| **Agent** | `qwen/qwen-2.5-vl-72b-instruct:free` | 自主安全代理 |
| **报告** | `google/gemma-3-4b-it:free` | 生成威胁报告 |
**限制:**
- 每分钟约 60 个请求
- 每日限制不定
- 详情请见:https://openrouter.ai/docs
## 🧪 测试
### 运行所有测试
```
# Windows
run-tests.bat
# Linux/Mac
npm run test:all
```
### 组件测试
```
# 测试 Neo4j 连接
npm run test:neo4j
# 测试 OpenRouter API
npm run test:openrouter
# Unit testler
npm run test:unit
```
## 📂 文件结构
```
graph-sec/
├── app.js # Ana uygulama
├── docker-compose.yml # Neo4j Docker config
├── .env # Ortam değişkenleri
├── package.json # Bağımlılıklar
├── start-neo4j.bat # Neo4j başlatma scripti
├── stop-neo4j.bat # Neo4j durdurma scripti
├── run-tests.bat # Test scripti
├── SETUP.md # Detaylı kurulum rehberi
│
├── controller/ # Route handler'lar
│ ├── dashboardController.js
│ ├── analysisController.js
│ ├── reportController.js
│ └── agentController.js
│
├── models/ # Veri katmanı
│ ├── neo4jDriver.js # Neo4j bağlantı
│ ├── graphModel.js # Graph sorguları
│ ├── cypherQAModel.js # AI Cypher üretimi
│ ├── agentModel.js # Otonom ajan
│ └── geminiModel.js # Rapor üretimi
│
├── view/ # EJS şablonları
│ ├── layout.ejs
│ ├── dashboard.ejs
│ ├── agent.ejs
│ └── report.ejs
│
├── utils/ # Yardımcı fonksiyonlar
│ ├── logger.js
│ └── validation.js
│
└── tests/ # Test dosyaları
├── test-neo4j.js
├── test-openrouter.js
├── unit/
└── integration/
```
## 🔧 命令
```
# 启动应用程序
npm start # Production
npm run dev # Development (nodemon)
# Docker 操作
npm run docker:up # Neo4j başlat
npm run docker:down # Neo4j durdur
npm run docker:logs # Logları göster
# Neo4j 操作
npm run neo4j:start # Neo4j başlat + test et
npm run neo4j:stop # Neo4j durdur
# 测试
npm test # Tüm testler
npm run test:neo4j # Neo4j testi
npm run test:openrouter # OpenRouter testi
npm run test:all # Neo4j + OpenRouter + Test
```
## 🛠️ 故障排除
### Docker 未运行
```
Error: docker is not recognized
```
**解决方案:**
1. 安装 Docker Desktop:https://docker.com/
2. 启动 Docker Desktop
3. 确保已安装 WSL 2:`wsl --install`
### 无法连接到 Neo4j
```
Error: Neo4j connection failed
```
**解决方案:**
```
# 启动 Container
docker-compose up -d
# 检查状态
docker ps
# 检查 Log
docker logs graphsec-neo4j
```
### OpenRouter 错误
```
Error: API key not configured
```
**解决方案:**
1. 检查 `.env` 文件
2. 设置 `OPENROUTER_API_KEY` 的值
3. 从 https://openrouter.ai/keys 获取您的 API 密钥
## 📊 数据模型
### 节点
- **Host**: IP, MAC, 主机名, 部门
- **User**: 用户名, 角色
- **Service**: 服务名, 端口, 协议
- **Location**: 城市, 国家
### 关系
- `(:User)-[:LOGGED_IN_TO]->(:Host)`
- `(:Host)-[:CONNECTED_TO]->(:Host)`
- `(:Host)-[:ACCESSED]->(:Service)`
- `(:Host)-[:LOCATED_IN]->(:Location)`
- `(:Host)-[:EXPOSES]->(:Service)`
## 🔐 安全
- **Helmet**: 安全 HTTP 头
- **Rate Limiting**: API 速率限制
- **Input Validation**: express-validator
- **Logging**: 使用 Winston 进行详细的日志记录
## 📝 许可证
本项目专为教育目的而开发。
## 🙋♂️ 联系方式
如有任何疑问:
- README.md
- SETUP.md
- GitHub Issues
*本项目在“基于图的入侵检测”范围内开发。*
标签:Docker, GNU通用公共许可证, IP 地址批量处理, Louvain社区发现, MITM代理, Neo4j, Node.js, PageRank算法, PE 加载器, 僵尸网络检测, 入侵检测系统, 关系分析, 图数据分析, 图数据库安全, 图算法, 安全可视化, 安全数据湖, 安全防御评估, 异常连接检测, 攻击路径发现, 数据泄露防护, 数据窃取检测, 横向移动检测, 社区检测算法, 算法安全, 网络安全, 网络安全监控, 网络拓扑分析, 网络探测, 请求拦截, 隐私保护, 驱动开发