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 加载器, 僵尸网络检测, 入侵检测系统, 关系分析, 图数据分析, 图数据库安全, 图算法, 安全可视化, 安全数据湖, 安全防御评估, 异常连接检测, 攻击路径发现, 数据泄露防护, 数据窃取检测, 横向移动检测, 社区检测算法, 算法安全, 网络安全, 网络安全监控, 网络拓扑分析, 网络探测, 请求拦截, 隐私保护, 驱动开发