Shree0107/OSINT_Dashboard
GitHub: Shree0107/OSINT_Dashboard
基于 Flask 的 OSINT 威胁情报仪表盘,聚合 Shodan 和 VirusTotal 实现一站式 IP、域名、哈希和 URL 安全分析。
Stars: 0 | Forks: 0
# OSINT 安全仪表盘





## 功能
- **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仪表盘, 内存缓存, 可观测性, 后端开发, 域名分析, 威胁情报平台, 威胁评分, 安全可视化, 安全情报, 安全规则引擎, 安全运营, 实时处理, 扫描框架, 数据统计, 文件哈希分析, 无后门, 检测规则, 漏洞分析, 端口扫描, 网络资产发现, 路径探测, 逆向工具