josapton/OmniGuard

GitHub: josapton/OmniGuard

OmniGuard 是一个基于 Python FastAPI 和 React 构建的 AI 驱动威胁情报与攻击面测绘平台,可自动化完成 Web 域名的安全评估、漏洞检测和风险报告。

Stars: 1 | Forks: 0

# OmniGuard ### 自动化威胁情报与攻击面测绘平台 ## *本项目是 [ThreatLens](https://github.com/Ritvik-Indupuri/ThreatLens) 的一个分支,经过深度重构,采用了 Python FastAPI 后端和完全容器化的 Docker 生态系统。* OmniGuard 是一个 AI 驱动的网络安全平台,可自动化进行 Web 域名的威胁情报收集和攻击面测绘。它将通过 Firecrawl API 进行的自动化 Web 爬取与由 Google 的 Gemini 3 Flash Preview 提供支持的 AI 分析相结合,提供全面的安全评估——包括漏洞检测、安全标头分析、技术指纹识别以及可操作的修复指南。该平台配备了一个可防止滥用的 AI 域名策略 agent、一个用于深度调查的交互式 AI 分析师聊天机器人,以及一个包含 PDF 导出功能的完整报告套件。 ## 核心功能 - **自动化域名扫描** — 通过 Firecrawl API 一键进行侦察,支持 URL 发现(最多 500 个 endpoint)、HTML 解析和技术指纹识别 - **AI 域名策略 Agent** — 由 Gemini 3 Flash Preview 驱动的白名单/黑名单系统,可自动批准安全网站、拦截敏感目标(.mil、关键基础设施),并标记模糊域名以供审查 - **交互式 AI 分析师** — 在每个扫描详情页面上提供具有上下文感知的聊天机器人,包含三种分析模式(攻击面、发现结果、原始数据)以及建议问题 - **攻击面分析** — 发现的 endpoint、客户端脚本、输入向量、外部依赖项以及带有交互式提示的安全标头评估 - **漏洞检测** — 缺失的安全标头、暴露的管理面板、可疑的查询参数、XSS 输入点、过时的库以及供应链风险 - **风险评分** — 根据加权严重性发现结果计算的 0–100 综合评分(严重:25分,高危:15分,中危:8分,低危:3分,信息:1分) - **AI 威胁报告** — 一键生成包含执行摘要、漏洞分析和修复路线图的全面报告 - **PDF 导出** — 专业的品牌报告,包含封面、发现结果摘要、AI 见解和机密水印 - **扫描对比** — 对任意两次扫描之间的风险评分、漏洞、技术和 endpoint 进行并排的差异分析 - **身份验证** — 带有基于配置文件的注册门控和受保护路由的 Google OAuth - **定时/周期性扫描** — 从设置页面配置每日、每周、每两周或每月的自动化扫描。后端 cron job 每小时检查到期的计划并自动触发扫描。 - **REST API 与编程式访问** — 生成 API 密钥以从脚本、CI/CD pipeline、SIEM 或任何 HTTP 客户端触发扫描、检索结果和提取发现结果 — 无需 UI。 - **真实 CVE 漏洞扫描** — 检测到的技术将与 NIST NVD 2.0 数据库进行匹配,以显示带有严重性评分和参考链接的已知 CVE。 - **用户级速率限制** — 可配置的每日扫描配额(默认 10次/天),防止 Firecrawl 额度耗尽并实施公平使用。 - **实时 WHOIS 与地理位置 enrichment** — 实时的 RDAP 查询和 ip-api.com 地理定位用实时的注册、托管和网络详细信息取代了所有模拟数据。 - **Elasticsearch 集成** — 已完成的扫描会自动同步到 Elastic Cloud 的三个索引(scans、findings、audit)中。支持企业级的全文搜索、Kibana 仪表板和威胁分析。 - **全局搜索 (⌘K)** — 由 Elasticsearch 提供支持的命令面板搜索栏,具有模糊匹配、严重性/类别过滤、结果高亮和聚合摘要功能。 ## REST API(编程式访问) OmniGuard REST API 允许您将安全扫描集成到现有的工作流中 — CI/CD pipeline、自动化脚本、SIEM 或自定义仪表板。从 **Settings → API Keys** 标签页生成 API 密钥,然后使用它来触发扫描并检索结果,而无需 Web UI。 ### 应用场景 - **DevOps pipeline** 在每次部署后自动扫描您的生产域名 - **Python 脚本**将扫描发现结果提取到 Slack 频道或 SIEM 中 - **第三方工具**通过 HTTP 触发扫描并读取结果 ### Endpoint | 方法 | 路径 | 描述 | |--------|------|-------------| | `POST` | `/functions/v1/api-gateway/scan` | 开始新的扫描 | | `GET` | `/functions/v1/api-gateway/scan/:id` | 获取扫描详情(状态、风险评分、技术) | | `GET` | `/functions/v1/api-gateway/scan/:id/findings` | 列出所有发现结果(CVE、配置错误) | | `GET` | `/functions/v1/api-gateway/scans` | 列出最近的扫描 (`?limit=20`) | ### 示例 ``` # 开始扫描 curl -X POST https://your-url/functions/v1/api-gateway/scan \ -H "Content-Type: application/json" \ -H "x-api-key: tl_your_key_here" \ -d '{"domain": "example.com"}' # 获取结果 curl -H "x-api-key: tl_your_key_here" \ https://your-url/functions/v1/api-gateway/scan/SCAN_ID # 获取 findings curl -H "x-api-key: tl_your_key_here" \ https://your-url/functions/v1/api-gateway/scan/SCAN_ID/findings ``` 所有密钥均使用 SHA-256 进行哈希处理 — OmniGuard 绝不会存储原始密钥。默认情况下,每个密钥都会被授予 `scan:create`、`scan:read` 和 `findings:read` 权限。 ## 系统架构 ``` graph TB subgraph Client["CLIENT - React + Vite"] Dashboard["Dashboard\n(Index)"] ScanDetail["Scan\nDetail"] History["History\nCompare"] Policies["Policies\nAudit Log"] GlobalSearch["Global Search\n(Cmd+K)"] Dashboard --> SBClient ScanDetail --> SBClient History --> SBClient Policies --> SBClient GlobalSearch --> SBClient SBClient["Supabase JS Client"] end SBClient --> Backend subgraph Backend["DOCKER ECOSYSTEM"] DB["PostgreSQL\nscans | findings | profiles\npolicies | audit_log | quotas"] API["FastAPI Server\nPython Backend"] API --> DB end subgraph External["EXTERNAL SERVICES"] Firecrawl["Firecrawl API\nWeb Scraping"] AI["Lovable AI Gateway\nGemini 3 Flash Preview"] Google["Google OAuth\nIdentity Provider"] Elastic["Elastic Cloud\nSearch and Analytics"] end API --> Firecrawl API --> AI API --> Elastic ```

图 1 — OmniGuard 系统架构概述

- **客户端层** — 由 Nginx 提供服务的 React SPA(使用 Vite + TypeScript 构建)。全局搜索命令面板 (⌘K) 查询 Elasticsearch 以进行跨扫描的全文搜索。 - **Docker 生态系统** — Python FastAPI 后端处理所有计算:扫描编排、AI 威胁报告、交互式 AI 聊天、域名策略评估和 Elasticsearch 同步。PostgreSQL 将所有持久数据存储在本地。 - **外部服务** — 使用了三个外部平台:用于 Web 抓取的 Firecrawl、用于 AI 推理的 Google Gemini/Groq,以及用于企业级全文搜索的 Elastic Cloud。 - **数据流** — 用户输入域名 → 策略 agent 对其进行评估 → Firecrawl 抓取并映射网站 → 解析数据并生成发现结果 → 计算风险评分 → 结果存储在 PostgreSQL 中 → 自动同步到 Elasticsearch。 有关涵盖每个系统流程、数据库 schema、AI 集成和安全架构的详细全面技术文档,请参阅 **[TECHNICAL_DOCS.md](./TECHNICAL_DOCS.md)**。 ## 技术栈 | 层级 | 技术 | |-------|-----------| | **前端** | React 18, TypeScript, Vite | | **样式** | Tailwind CSS, shadcn/ui, Framer Motion | | **状态** | React hooks, TanStack React Query | | **路由** | React Router v6 | | **后端** | Python 3.11, FastAPI, Uvicorn | | **数据库** | PostgreSQL 15 | | **基础设施** | Docker, Docker Compose, Nginx | | **AI 模型** | Google Gemini / Groq LLMs | | **Web 抓取** | Firecrawl API(抓取 + 映射 endpoint) | | **PDF 导出** | jsPDF | | **图表** | Recharts | | **搜索与分析** | Elastic Cloud (Elasticsearch + Kibana) | ## 在线演示 在此处查看在线应用程序:**[https://threatintellig.netlify.app/](https://threatintellig.netlify.app/)** ## 设置与安装 ### 前置条件 - 您的系统上已安装 Docker 和 Docker Compose。 - Firecrawl、Supabase、Groq/Gemini 和 Google Cloud 的 API 密钥(取决于活动模块)。 ### 步骤 1. **克隆仓库** git clone https://github.com/josapton/OmniGuard.git cd OmniGuard 2. **配置环境变量** 复制示例环境文件: cp .env.example .env 在 `.env` 文件中填入您的实际 API 密钥。 3. **启动 Docker 生态系统** docker-compose up --build -d 4. **访问应用程序** - 前端:`http://localhost` - 后端 API:`http://localhost:8000/api`
标签:AV绕过, FastAPI, LNA, 人工智能, 威胁情报, 实时处理, 密码管理, 开发者工具, 攻击面测绘, 测试用例, 用户模式Hook绕过, 网络测绘, 自动化攻击, 请求拦截