amanpanwar1/Dark-Web-Monitoring-System
GitHub: amanpanwar1/Dark-Web-Monitoring-System
基于 Flask、React 和 MongoDB 构建的 AI 驱动暗网与威胁情报监控平台,实时聚合 OSINT 数据并提供可视化分析、风险评分与全球威胁地图。
Stars: 0 | Forks: 0
# 🛡️ 暗网与威胁情报监控系统
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/)
[](https://flask.palletsprojects.com/)
[](https://reactjs.org/)
[](https://www.mongodb.com/)
[](https://github.com/prettier/prettier)
一个企业级的全栈网络安全威胁情报平台,旨在实时聚合、分析、可视化和分类恶意订阅源与暗网遥测数据。
该平台基于 **Flask REST API**、**MongoDB Cloud Atlas** 和交互式 **React Dashboard** 构建,能够接入全球开源威胁订阅源 (OSINT),提供 AI 驱动的风险评分,在全球地图上可视化攻击的地理分布,并通过基于角色的监控功能赋能安全分析师。
## ✨ 核心功能
- **🌐 实时威胁订阅源接入 (OSINT)**
- 自动集成 **OpenPhish**、**URLhaus** 和 **AlienVault OTX (Open Threat Exchange)**。
- 后台调度器 (`APScheduler`) 每小时自动获取并对全球威胁订阅源进行去重。
- 提供手动同步功能以立即更新威胁。
- **📊 综合分析与可视化**
- **严重性图表**:高、中、低和严重级别的分布情况。
- **威胁类型**:恶意软件、网络钓鱼、僵尸网络、勒索软件、被入侵服务器的追踪。
- **来源细分**:不同订阅源提供商和自定义条目的情报分布。
- **时间轴图表**:历史威胁接入趋势。
- **🗺️ 交互式全球威胁地图**
- 基于 **Leaflet** 和 **ip-api** IP 地理定位的威胁发源地实时空间映射。
- 包含国家坐标和 IP 详情的交互式地图标记。
- **🤖 AI 威胁分类与风险评分**
- 基于规则和启发式的 NLP 分类模型,用于评估风险级别、类别和潜在影响。
- 为 SOC 分析师生成可操作的缓解建议。
- **🔐 基于角色的访问控制 (RBAC)**
- 支持 **Admin** 和 **Analyst** 角色。
- Analyst 可以查看遥测数据、检查详情并进行分析。
- Admin 保留写入权限(添加/删除威胁 IOC)。
- **⚡ 高性能 REST API**
- 在 MongoDB 集合上自动建立索引,实现对 URL、IP 和威胁标题的即时正则搜索。
- 内置 **Flask-Limiter** 速率限制保护,保障 API 端点安全。
- **📄 数据导出与报告**
- 将实时威胁数据集导出为 **CSV** 和 **Excel (.xlsx)** 格式,以便用于报告和离线分析。
## 🏗️ 架构与项目结构
```
Dark-Web-Monitoring-System/
├── backend/
│ ├── app.py # Flask server entry point & APScheduler configuration
│ ├── config.py # Application settings
│ ├── requirements.txt # Python dependencies
│ ├── .env # Backend environment variables
│ ├── database/
│ │ └── mongodb.py # MongoDB connection & index configuration
│ ├── models/
│ │ └── threat.py # Threat data model factory
│ ├── routes/
│ │ ├── auth.py # User authentication endpoints
│ │ ├── dashboard.py # Metrics & telemetry aggregation endpoints
│ │ └── threats.py # Threat CRUD, search, and feed sync endpoints
│ ├── services/
│ │ ├── classifier.py # AI Threat classification & risk engine
│ │ ├── geo_service.py # IP Geolocation service
│ │ ├── openphish_service.py # OpenPhish feed consumer
│ │ ├── otx_service.py # AlienVault OTX consumer
│ │ └── urlhaus_service.py # URLhaus feed consumer
│ └── utils/
├── frontend/
│ ├── package.json # React dependencies & scripts
│ ├── public/
│ └── src/
│ ├── App.js # Main routing setup
│ ├── components/ # Reusable UI charts, maps, tables, modals & cards
│ └── pages/ # Dashboard, Threats, Analytics, Global Map, Settings
└── docs/ # Project documentation and presentation files
```
## 🛠️ 技术栈
| 领域 | 技术 / 库 |
| :--- | :--- |
| **前端框架** | React 18, React Router v6 |
| **数据可视化** | Chart.js, React-Chartjs-2 |
| **地理映射**| Leaflet, React-Leaflet |
| **HTTP 客户端** | Axios |
| **导出引擎** | FileSaver, XLSX |
| **后端框架** | Python 3.10+, Flask |
| **后台任务** | APScheduler |
| **安全与速率限制**| Flask-Limiter, Flask-CORS |
| **数据库** | MongoDB Atlas, PyMongo |
| **OSINT 情报订阅源**| AlienVault OTX, URLhaus, OpenPhish, AbuseIPDB |
## 🚀 快速入门指南
### 前置条件
请确保您的机器上已安装以下内容:
- [Python 3.10+](https://www.python.org/downloads/)
- [Node.js 18+](https://nodejs.org/) & `npm`
- [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) 账户(或本地 MongoDB 实例)
### 1️⃣ 后端配置
1. **进入后端目录:**
cd backend
2. **创建虚拟环境(可选但推荐):**
python -m venv venv
# 在 Windows 上:
venv\Scripts\activate
# 在 macOS/Linux 上:
source venv/bin/activate
3. **安装依赖项:**
pip install -r requirements.txt
4. **配置环境变量:**
在 `backend/` 目录下创建一个 `.env` 文件,包含以下变量:
MONGO_URI=mongodb+srv://:@cluster.mongodb.net/darkweb_db?retryWrites=true&w=majority
SECRET_KEY=your_secret_key_here
OTX_API_KEY=your_alienvault_otx_api_key
ABUSEIPDB_API_KEY=your_abuseipdb_api_key
5. **运行 Flask 开发服务器:**
python app.py
后端 API 将在 `http://127.0.0.1:5000` 启动。
### 2️⃣ 前端配置
1. **打开一个新的终端并进入前端目录:**
cd frontend
2. **安装 Node 模块:**
npm install
3. **启动 React 应用程序:**
npm start
控制面板将自动在 `http://localhost:3000` 打开。
## 🛰️ API 端点摘要
| 方法 | 端点 | 描述 | 权限 |
| :--- | :--- | :--- | :--- |
| `GET` | `/` | 系统状态和活跃调度器健康状态 | 公开 |
| `GET` | `/api/dashboard/stats` | 汇总的威胁计数、严重性和国家/地区统计信息 | 所有人 |
| `GET` | `/api/threats` | 检索所有已记录的威胁情报 IOC | 所有人 |
| `POST` | `/api/threats` | 手动插入新的威胁 IOC | Admin |
| `DELETE`| `/api/threats/` | 删除特定的威胁 IOC | Admin |
| `GET` | `/api/search?q=`| 跨标题、URL、IP 的正则搜索 | 所有人 |
| `POST` | `/api/sync-feeds` | 强制立即与 OSINT 订阅源同步 | 所有人 |
## 📜 许可证
基于 **MIT License** 分发。详情请参阅 `LICENSE`。
标签:ESC4, Flask, MongoDB, OSINT, React, Syscalls, 威胁情报, 开发者工具, 自定义脚本