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绕过, 网络测绘, 自动化攻击, 请求拦截