Shree0107/OSINT_Dashboard

GitHub: Shree0107/OSINT_Dashboard

基于 Flask 的 OSINT 威胁情报仪表盘,聚合 Shodan 和 VirusTotal 实现一站式 IP、域名、哈希和 URL 安全分析。

Stars: 0 | Forks: 0

# OSINT 安全仪表盘 ![Python](https://img.shields.io/badge/Python-3.10+-blue?style=flat-square&logo=python) ![Flask](https://img.shields.io/badge/Flask-3.0-green?style=flat-square&logo=flask) ![Shodan](https://img.shields.io/badge/API-Shodan-red?style=flat-square) ![VirusTotal](https://img.shields.io/badge/API-VirusTotal-blue?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-yellow?style=flat-square) ## 功能 - **IP 调查** — 结合 Shodan + VirusTotal 查询,获取开放端口、CVE、ASN 及地理位置信息 - **域名分析** — 信誉评分、注册商信息、恶意引擎检测结果 - **文件哈希查询** — MD5/SHA1/SHA256 分析及 AV 引擎分类详情 - **URL 扫描** — 提交 URL 进行 VirusTotal 实时扫描 - **Shodan 搜索** — 完整的查询接口,用于 Banner 抓取和暴露面发现 - **威胁等级评分** — 自动分类:CLEAN / LOW / MEDIUM / HIGH / CRITICAL - **内存缓存** — 通过可配置的 TTL 减少 API 调用 - **SIEM 风格仪表盘** — 实时时钟、API 健康状态指示器、扫描历史侧边栏 ## 技术栈 | 层级 | 技术 | |---|---| | 后端 | Python 3.10+, Flask 3.0 | | API | Shodan v1, VirusTotal v3 | | 前端 | 原生 HTML/CSS/JS (零依赖) | | 测试 | pytest, pytest-mock | | 配置 | python-dotenv | ## 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/YOUR_USERNAME/osint-dashboard.git cd osint-dashboard ``` ### 2. 创建虚拟环境 ``` python -m venv venv # Linux / macOS source venv/bin/activate # Windows venv\Scripts\activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 配置 API 密钥 ``` cp .env.example .env ``` 打开 `.env` 并添加你的 API 密钥: ``` SHODAN_API_KEY=your_shodan_key_here VIRUSTOTAL_API_KEY=your_virustotal_key_here SECRET_KEY=some-random-secret-string ``` **获取 API 密钥(均为免费):** - Shodan: [https://account.shodan.io/](https://account.shodan.io/) → 注册 → API Key 选项卡 - VirusTotal: [https://www.virustotal.com/gui/my-apikey](https://www.virustotal.com/gui/my-apikey) → 注册 → API Key ### 5. 运行应用 ``` python run.py ``` 在浏览器中打开:**http://localhost:5000** ## 使用示例 ### IP 调查 在搜索栏中输入 `8.8.8.8`,类型选择 **IP Address**,即可查看: - 开放端口和运行中的服务 - 来自 Shodan 的已知 CVE - VirusTotal 信誉评分和引擎检测结果 ### Shodan 搜索 切换至 **Shodan Query** 并尝试: ``` apache port:443 nginx country:FR "default password" port:23 ``` ### 文件哈希分析 切换至 **File Hash**,输入任意 MD5/SHA1/SHA256,以针对 70 多个 AV 引擎进行检查。 ### URL 扫描 切换至 **URL**,输入任意可疑 URL 以提交进行实时扫描。 ## 项目结构 ``` osint-dashboard/ ├── run.py # Entry point ├── requirements.txt ├── .env.example # Environment template ├── .gitignore ├── README.md ├── app/ │ ├── __init__.py # App factory │ ├── config.py # Configuration │ ├── routes/ │ │ ├── main.py # Page routes │ │ └── api.py # REST API endpoints │ ├── services/ │ │ ├── shodan_service.py # Shodan API wrapper │ │ └── virustotal_service.py # VirusTotal API wrapper │ ├── utils/ │ │ ├── validators.py # Input validation │ │ └── cache.py # In-memory TTL cache │ └── templates/ │ └── index.html # Dashboard UI └── tests/ ├── test_validators.py ├── test_cache.py └── test_routes.py ``` ## API 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/health` | 应用 + API 密钥健康检查 | | `GET` | `/api/shodan/ip/` | Shodan 主机查询 | | `GET` | `/api/shodan/search?q=` | Shodan 搜索 | | `GET` | `/api/shodan/stats` | Shodan 账户信息 | | `GET` | `/api/virustotal/ip/` | VT IP 信誉 | | `GET` | `/api/virustotal/domain/` | VT 域名分析 | | `GET` | `/api/virustotal/hash/` | VT 文件哈希查询 | | `POST` | `/api/virustotal/url` | VT URL 扫描 (`{"url": "..."}`) | | `GET` | `/api/investigate/ip/` | 综合 Shodan + VT IP 报告 | ## 运行测试 ``` pytest tests/ -v ``` 预期输出: ``` tests/test_validators.py::TestValidateIP::test_valid_ipv4 PASSED tests/test_validators.py::TestValidateDomain::test_valid_domains PASSED tests/test_cache.py::test_set_and_get PASSED tests/test_routes.py::test_health_endpoint PASSED ... ``` ## 配置 所有设置均通过 `.env` 控制: | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `SHODAN_API_KEY` | — | Shodan API 密钥 | | `VIRUSTOTAL_API_KEY` | — | VirusTotal API 密钥 | | `SECRET_KEY` | dev-key | Flask session 密钥 | | `FLASK_DEBUG` | `False` | 启用调试模式 | | `CACHE_TIMEOUT` | `300` | 缓存 TTL(秒) | ## 安全说明 - API 密钥从 `.env` 加载,绝不暴露给前端 - 所有用户输入在请求外部 API 前均经过验证 - `.env` 已包含在 `.gitignore` 中——切勿提交密钥 - 速率限制可通过 `MAX_REQUESTS_PER_MIN` 进行配置 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 ## 作者 **Murali Shreevarshan** — DevOps / Cloud / 安全工程师 [LinkedIn](https://linkedin.com/in/shree-varshan) · [GitHub](https://github.com/Shree0107)
标签:API集成, Ask搜索, Banner抓取, CVE分析, ESC4, Flask, GitHub, IP调查, masscan, OSINT, Python, Sigma 规则, URL扫描, VirusTotal, Web仪表盘, 内存缓存, 可观测性, 后端开发, 域名分析, 威胁情报平台, 威胁评分, 安全可视化, 安全情报, 安全规则引擎, 安全运营, 实时处理, 扫描框架, 数据统计, 文件哈希分析, 无后门, 检测规则, 漏洞分析, 端口扫描, 网络资产发现, 路径探测, 逆向工具