hejun789/CyberSentinel

GitHub: hejun789/CyberSentinel

一款基于 AI 智能体驱动的自主网络安全威胁情报分析平台,能够自动编排多种安全工具对目标进行多步骤调查并生成结构化报告。

Stars: 0 | Forks: 0

# CyberSentinel — 自主网络安全威胁情报智能体 [![Python](https://img.shields.io/badge/Python-3.11+-blue?logo=python)](https://python.org) [![Flask](https://img.shields.io/badge/Flask-3.0+-green?logo=flask)](https://flask.palletsprojects.com) [![Gemini](https://img.shields.io/badge/Gemini-2.5--flash--lite-orange?logo=google)](https://aistudio.google.com) [![Anthropic](https://img.shields.io/badge/Claude-claude--sonnet--4--6-purple?logo=anthropic)](https://anthropic.com) [![License](https://img.shields.io/badge/License-MIT-blue)](LICENSE) ## 功能简介 您只需为 CyberSentinel 提供一个目标 —— 域名、IP 地址、CVE ID、可疑 URL 或原始电子邮件 —— 该智能体便会自主执行以下操作: 1. **记忆** —— 在开始调查之前,搜索过去的调查记录以查找相关的目标、IOC 或 CVE 2. **规划与执行** —— 运行多步骤工具调用循环(WHOIS、DNS、端口扫描、CVE 查询、网页搜索、电子邮件分析、VirusTotal) 3. **推理** —— AI 会根据其发现,自主决定调用哪些工具、调用顺序及调用次数 4. **报告** —— 生成结构化的威胁情报报告,包含严重等级、发现详情、风险指标和建议措施 5. **提取 IOC** —— 自动提取结构化的失陷指标(IP、域名、CVE、攻击技术、威胁行为者) 6. **对话** —— 允许您使用完整的报告作为上下文,对任何调查提出后续问题 ## AI 功能 ### 自主调查引擎 核心智能体循环使用原生的 `tool_use` —— 而非提示词链。AI 可以按照任意顺序、根据需要多次调用工具,直到收集到足够的证据来撰写报告。同时支持 **Google Gemini**(免费)和 **Anthropic Claude**(付费)。 ### 跨调查记忆 在每次调查之前,CyberSentinel 会搜索您的历史记录以查找相关的发现 —— 按域名、IP 重叠、CVE ID、共享 IOC 和可疑 TLD 进行匹配。相关的上下文会被注入到智能体的提示词中,以便在之前的情报基础上进行构建。 ### IOC 提取器 每次调查结束后,会通过一个独立的、使用 JSON 模式输出的 AI 调用,从完整报告中提取 8 个结构化的 IOC 类别:恶意 IP、域名、URL、CVE ID、可疑电子邮件、攻击技术、威胁行为者和基础设施备注。结果会存储在历史记录中,并以颜色编码的网格形式展示。 ### 后续对话 任何调查完成后,都会打开一个聊天面板。您可以就报告提出任何问题 —— 完整的调查文本和 IOC 会作为上下文注入。支持带历史记录的多轮对话。也适用于过去的调查(点击任何历史记录条目即可)。 ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ BROWSER (Dark UI) │ │ Target Input → POST /api/investigate → GET /api/stream/{id} │ │ IOC Grid ← POST /api/chat → Follow-up Chat Panel │ └──────────────────────────┬──────────────────────────────────────┘ │ HTTP / SSE ┌──────────────────────────▼──────────────────────────────────────┐ │ Flask App (app.py) │ │ /api/investigate → Start background thread │ │ /api/stream/{id} → SSE event stream (real-time progress) │ │ /api/chat → Follow-up Q&A with report context │ │ /api/history → Past investigations (JSON file) │ │ /api/investigation/ → Full detail with raw report + IOCs │ └──────────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────────┐ │ CyberSentinelAgent (agent/core.py) │ │ │ │ 1. search_memory(target) → inject related past findings │ │ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ AGENTIC LOOP (max 10 iterations) │ │ │ │ │ │ │ │ messages → Gemini / Claude API │ │ │ │ ↓ │ │ │ │ tool_use? → execute_tool(name, input) → result │ │ │ │ ↓ │ │ │ │ append tool result → call AI again │ │ │ │ ↓ │ │ │ │ end_turn → return final report │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ │ 2. extract_iocs(report, steps) → structured JSON IOCs │ └──────────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────────┐ │ Tools (agent/tools.py) │ │ │ │ whois_lookup → python-whois → domain age, registrar │ │ dns_lookup → dnspython → A/MX/NS/TXT/DMARC/SPF │ │ url_feature_analysis → built-in → 24 phishing features │ │ web_search → DuckDuckGo → open-source threat intel │ │ cve_lookup → NIST NVD API→ CVSS score, description │ │ port_scan → socket → 20 common ports │ │ email_header_analysis→ email lib → spoofing, phishing │ │ virustotal_lookup → VT API v3 → 70+ engine detections │ └─────────────────────────────────────────────────────────────────┘ ``` ## 技术栈 | 层级 | 技术 | |-------|------------| | AI(免费) | Google Gemini 2.5 Flash Lite — `google-genai` SDK | | AI(付费) | Anthropic Claude `claude-sonnet-4-6` — 原生 `tool_use` | | 后端 | Python 3.11+, Flask 3.0 | | 流式传输 | Server-Sent Events (SSE) | | WHOIS | python-whois | | DNS | dnspython | | 搜索 | DuckDuckGo Search (`ddgs`) | | CVE 数据 | NIST NVD API v2.0(免费,无需密钥) | | 端口扫描 | Python socket 库 | | 前端 | 原生 HTML/CSS/JS — 暗色赛博朋克主题 | | 字体 | Orbitron, Share Tech Mono (Google Fonts) | ## 设置 ### 前置条件 - Python 3.11+ - 免费的 [Google AI Studio 密钥](https://aistudio.google.com/app/apikey) **或** 付费的 [Anthropic API 密钥](https://console.anthropic.com) ### 安装 ``` # 克隆 repository git clone https://github.com/yourusername/CyberSentinel.git cd CyberSentinel # 创建 virtual environment python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS/Linux # 安装 dependencies pip install -r requirements.txt # 配置 environment cp .env.example .env # 编辑 .env — 添加您的 API key(见下文) ``` ### 配置 编辑 `.env` 文件: ``` # FREE — Google Gemini (每天 20 次请求,无需 billing) GEMINI_API_KEY=AIzaSy...your_key_here # OR PAID — Anthropic Claude (质量更好,pay-per-use) # ANTHROPIC_API_KEY=sk-ant-...your_key_here # Optional — VirusTotal (free tier,如不存在则跳过) # VIRUSTOTAL_API_KEY=... ``` ### 运行 ``` python app.py ``` 在浏览器中打开 `http://localhost:5000` **重要提示:** 在更改任何 `.env` 配置后请重启服务器 —— API 密钥在启动时加载。 ## 使用方法 ### 调查目标 1. 在调查输入框中输入目标: - **域名**:`suspicious-site.tk` - **IP**:`45.33.32.156` - **CVE**:`CVE-2024-3094` - **URL**:`http://secure-paypal-login.ml/verify` - **电子邮件**:粘贴带有邮件头的原始电子邮件文本 2. UI 会自动检测输入类型 3. 点击 **Investigate** 或按 `Ctrl+Enter` 4. 观看实时调查动态 5. 阅读结构化的威胁报告和 IOC 网格 6. 在下方的聊天面板中提出后续问题 ### API 接口 | 方法 | 接口 | 描述 | |--------|----------|-------------| | `POST` | `/api/investigate` | 开始调查,返回 `{"id": "..."}` | | `GET` | `/api/stream/{id}` | 调查进度的 SSE 流 | | `POST` | `/api/chat` | 带有报告上下文的后续对话 | | `GET` | `/api/history` | 列出过去的调查(不含原始报告) | | `GET` | `/api/investigation/{id}` | 包含原始报告和 IOC 的完整详情 | | `DELETE` | `/api/history` | 清除所有历史记录 | | `GET` | `/api/health` | 提供者状态和配置检查 | **发起调查:** ``` POST /api/investigate Content-Type: application/json {"target": "suspicious-domain.tk"} ``` **后续对话:** ``` POST /api/chat Content-Type: application/json { "investigation_id": "abc123", "message": "What immediate actions should I take?", "history": [] } ``` ## 报告结构 | 字段 | 描述 | |-------|-------------| | **威胁等级** | CRITICAL / HIGH / MEDIUM / LOW / INFORMATIONAL | | **摘要** | 2-3 句话的核心发现概述 | | **发现详情** | 来源于所有工具的、有证据支持的观察结果 | | **风险指标** | 带有支持数据的具体危险信号 | | **建议措施** | 具体的、按优先级排序的安全步骤 | | **置信度** | HIGH / MEDIUM / LOW,附带数据质量说明 | | **调查时间线** | 每一个被调用的工具,包括输入和结果 | | **IOC** | 8 个结构化类别:IP、域名、URL、CVE、电子邮件、技术、行为者、基础设施 | ## 工具参考 | 工具 | 输入 | 返回内容 | |------|-------|-----------------| | `whois_lookup` | 域名 | 注册商、创建日期、年限、国家 | | `dns_lookup` | 域名 | A/AAAA/MX/NS/TXT 记录;SPF/DMARC 是否存在 | | `url_feature_analysis` | URL | 24 项钓鱼特征,0-100 的风险评分 | | `web_search` | 查询语句 | 用于威胁情报的 DuckDuckGo 结果 | | `cve_lookup` | CVE ID | CVSS 评分、严重程度、描述、受影响的产品 | | `port_scan` | 域名/IP | 开放端口、服务名称、高风险标志 | | `email_header_analysis` | 电子邮件文本 | 欺骗指标、认证结果、嵌入的 URL | | `virustotal_lookup` | 域名/IP/URL | 跨 70 多个安全引擎的检测率 | ## 项目结构 ``` CyberSentinel/ ├── agent/ │ ├── core.py # Agentic loop — dual-provider (Gemini + Claude) │ ├── memory.py # Cross-investigation memory search │ ├── ioc_extractor.py # Structured IOC extraction via AI JSON mode │ ├── tools.py # 8 tools: JSON schemas + Python implementations │ ├── prompts.py # CyberSentinel system prompt │ ├── report.py # Report text parser → structured dict │ └── __init__.py ├── templates/ │ └── index.html # Single-page dark cyberpunk UI ├── static/ │ ├── css/style.css # Cyberpunk design system │ └── js/app.js # SSE client, report renderer, IOC grid, chat ├── data/ │ └── history.json # Auto-generated, gitignored ├── app.py # Flask app — routes, SSE streaming, chat ├── config.py # Environment variable loader ├── requirements.txt ├── .env.example └── .gitignore ``` ## 调查示例 | 目标 | 预期结果 | |--------|----------------| | `free-bitcoin-winner.tk` | HIGH/CRITICAL — 新域名,可疑 TLD,钓鱼关键字 | | `CVE-2021-44228` | CRITICAL — Log4Shell,CVSS 10.0,RCE | | `CVE-2024-3094` | CRITICAL — XZ Utils 供应链后门 | | `google.com` | INFORMATIONAL — 老牌域名,信誉良好 | | `http://secure-paypal-login.ml/verify` | HIGH/CRITICAL — 钓鱼 URL 特征 | ## 核心设计决策 - **原生工具调用,而非提示词链** —— 工具是传递给 AI 的真实 JSON schema;由模型决定调查策略 - **双 AI 提供商** —— Gemini 用于免费访问,Claude 用于更高质量;两者使用相同的工具 schema - **SSE 流式传输** —— 通过 `EventSource` 实时显示进度,无需轮询 - **跨会话记忆** —— 历史记录持久化到 JSON,并在每次新调查前按相关性进行评分 - **IOC 提取为独立的 AI 调用** —— 利用 Gemini 的 `response_mime_type="application/json"` 获取可靠的结构化输出 ## 未来改进方向 - [ ] 集成 Shodan API 以获取高级端口/服务情报 - [ ] AlienVault OTX 威胁源查询 - [ ] 威胁报告导出为 PDF - [ ] 用于告警的 Webhook 支持(Slack、Discord) - [ ] 针对多目标的批量调查模式 - [ ] Docker 容器化 - [ ] STIX/TAXII 威胁情报格式导出 ## 截图 Screenshot 2026-05-08 111048 Screenshot 2026-05-08 111106 Screenshot 2026-05-08 111117 Screenshot 2026-05-08 111144 ## 道德使用声明 本工具适用于: - 对您拥有或已获授权测试的系统进行**授权的安全测试** - **教育目的**及学习网络安全概念 - **威胁情报研究**与防御性安全工作 请勿在未获授权的情况下调查目标。 ## 作者 本项目是作为一个作品集项目构建的,旨在探索 AI 与网络安全的交叉领域。 *支持 [Google Gemini](https://aistudio.google.com)(免费)和 [Anthropic Claude](https://anthropic.com)(付费)*
标签:AI安全, Ask搜索, Chat Copilot, Claude Sonnet, CVE漏洞查询, DLL 劫持, DNS分析, ESC4, Flask, GitHub, HTTP/HTTPS抓包, IOC提取, LLM工具调用, OSINT, Python, VirusTotal, WHOIS查询, 协议探测, 大语言模型, 威胁情报, 安全报告生成, 安全智能体, 实时处理, 密码管理, 开发者工具, 态势感知, 攻击指标, 数据泄露, 数据统计, 无后门, 端口扫描, 综合交叉分析, 网络安全, 网络空间安全, 自主智能体, 自动化调查, 跨调查记忆, 逆向工具, 邮件分析, 隐私保护, 风险分析