jemalSparklingWater/osint-dashboard

GitHub: jemalSparklingWater/osint-dashboard

一个基于 FastAPI 的 OSINT 威胁情报仪表板,将多来源公开侦察数据聚合为带风险评分和 AI 分析摘要的单页报告。

Stars: 0 | Forks: 0

# RECON — OSINT 表面情报仪表板 一款收集有关域名或 IP **公开侦察信息**的 Web 应用,并将其转化为简洁的单页威胁情报报告:子域名、DNS、WHOIS、开放端口与服务、可能的已知漏洞(CVE)、暴露的电子邮件、Cloudflare 源站发现以及 AI 评估的风险评分。 其收集的所有信息均来自**公开来源**(证书透明度日志、DNS、WHOIS、Shodan)。请仅扫描您拥有或已获授权测试的目标。 ## 功能说明 | 功能 | 来源 | 备注 | |---|---| | **子域名** | crt.sh → certspotter(后备) | 证书透明度日志 | | **DNS 记录** | 实时 DNS | A / AAAA / MX / NS / TXT | | **WHOIS** | WHOIS | 注册商、组织、创建/过期时间、国家 | | **开放端口与服务** | Shodan → InternetDB(后备) | 如果存在 key 则使用已认证的 Shodan | | **已知漏洞** | NVD | 版本匹配的 CVE,**AI 评级的置信度** | | **暴露的电子邮件** | 证书数据 | 证书中泄露的地址 | | **Cloudflare 源站发现** | 直连探测 | 找到绕过 CDN 的子域名,随后*验证*源站 | | **风险评分(0–100)** | `risk.py` | 确定性规则;当数据过少无法判断时显示 "Unknown" | | **AI 分析师摘要** | OpenAI | 基于相同事实生成通俗易懂的叙述 | | **变更追踪** | SQLite 历史 | 将每次扫描结果与前一次进行 diff 对比 | 风险评分是**基于规则且可复现的**(并非 AI 的主观判断)。AI 仅负责撰写叙述,并评估每个通过指纹识别出的 CVE 的可信度——因此数字保持一致,而文字依然易读。 ## 设置 ``` # 1. 创建 + 激活 virtual environment python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS / Linux # 2. 安装依赖 pip install -r requirements.txt # 3. 添加你的 secrets(可选但推荐) # 在此文件夹中创建一个名为 .env 的文件: ``` `.env`(切勿提交此文件——它已被 gitignored): ``` SHODAN_API_KEY=your_shodan_key_here OPENAI_API_KEY=your_openai_key_here ``` 这两个 key 都是**可选的**——如果没有它们,应用仍会运行并退回到使用免费来源(使用 InternetDB 获取端口;使用占位符消息代替 AI 摘要)。有了它们,您将获得经过认证的 Shodan 数据和 AI 分析师服务。 ``` # 4. 运行它 venv\Scripts\python.exe -m uvicorn app:app --reload --port 8000 ``` 然后打开 **http://127.0.0.1:8000** 并扫描一个域名。 ## 项目布局 ``` osint-dashboard/ ├── app.py # FastAPI routes + background scan jobs (the web server) ├── recon.py # the OSINT functions (subdomains, DNS, WHOIS, Shodan, origin discovery) ├── risk.py # deterministic risk scoring (score, level, findings) ├── cve.py # NVD CVE lookup + version matching ├── ai_summary.py # OpenAI: analyst summary + CVE-confidence rating ├── changes.py # diff a scan against the previous one ├── database.py # SQLite: save / load / history ├── templates/ │ └── index.html # the whole UI (light-theme app shell, one file) ├── requirements.txt ├── .env # secrets — gitignored, never commit └── osint.db # SQLite database (created on first run) ``` ## 扫描工作原理(流程) 1. 您提交一个域名 → `POST /scan/start` 启动一个**后台线程**,并立即返回一个 `job_id`(这样页面就不会卡住)。 2. 浏览器**轮询** `/scan/status/{job_id}` 并显示进度条动画。 3. `run_scan()` 调用各个 `recon.py` 函数,然后调用 `risk.assess()`,接着调用 AI 层,并**将结果保存**到 SQLite。 4. 您将被重定向到 `/scan/{scan_id}` ——完整的报告。 5. 每个部分都会在**扫描状态**面板中报告自身的成功/失败情况,因此当某项操作被阻止(如频率限制、Cloudflare、缺少 key)时,您会*直接看到*它,而不是得到一个默默为空的部分。 ## 部署(后续) 1. `pip freeze > requirements.txt`(已完成)。 2. 推送到 GitHub ——**`.env` 已被 gitignored**,因此请在您主机提供商的控制面板中将 `SHODAN_API_KEY` 和 `OPENAI_API_KEY` 设置为环境变量。 3. 主机:[Render](https://render.com) 非常适合 FastAPI —— 启动命令:`uvicorn app:app --host 0.0.0.0 --port $PORT`。 ## 安全须知 - **仅扫描您拥有或已获授权测试的内容。** 此工具仅触及公开数据,但对第三方的主动扫描可能依然是不受欢迎的。 - 将 API key 保存在 `.env` 中;切勿提交它们。如果某个 key 不慎被公开粘贴到了某处,请立即**轮换(替换)它**。
标签:AV绕过, ESC4, FastAPI, GitHub, GPT, OSINT, Petitpotam, 威胁情报, 安全仪表盘, 实时处理, 开发者工具, 漏洞管理, 资产测绘, 逆向工具