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, 只读文件系统, 图算法, 大语言模型, 威胁情报, 威胁检测, 安全规则引擎, 安全防御评估, 开发者工具, 异常检测, 态势感知, 撞库, 攻击归因, 数据渗出, 无后门, 智能安防, 机器学习, 检索增强生成, 横向移动, 版权保护, 特权检测, 编程规范, 网络安全, 访问控制, 逆向工具, 隐私保护