nevinbeno/The-CRATIP
GitHub: nevinbeno/The-CRATIP
该平台是一个基于 Python 与 Streamlit 构建的企业级网络风险评估系统,集成了自动化漏洞扫描、多源威胁情报富化、AI 风险评分与合规报告生成功能。
Stars: 2 | Forks: 0
# 🛡️ 网络风险评估平台 (CRATIP)

[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://streamlit.io/)
[](LICENSE)


## 📋 目录 - [概述](#-overview) - [功能](#-features) - [仓库结构](#repository-structure) - [架构](#️-architecture) - [技术栈](#technology-stack) - [安装说明](#-installation) - [快速开始](#-quick-start-make-sure-that-your-virtual-environment-is-activated) - [系统组件](#-system-components) - [警报系统](#-alert-system) - [数据流](#-data-flow) - [API 文档](#-api-documentation) - [仪表板](#-dashboard) - [配置](#configuration) - [项目需求合规性](#-project-requirements-compliance) ## 🎯 概述 网络风险评估平台 (CRATIP) 是一个企业级的安全评估系统,它结合了自动化漏洞扫描、威胁情报富化和 AI 驱动的风险分析,以提供全面的安全洞察。 ### 核心能力 ✅ **自动化漏洞扫描** - 基于 Nmap 的网络发现和服务检测 ✅ **威胁情报集成** - 来自 VirusTotal、Shodan、Vulners 和 NVD 的实时数据 ✅ **风险评分与分析** - 基于 ML 的评分,具有严重/高/中/低分类 ✅ **自动化告警** - 针对高风险漏洞的实时通知 ✅ **集中式仪表板** - 带有图表和指标交互式的 Streamlit 界面 ✅ **审计就绪报告** - 支持 PDF、Excel 和 CSV 导出功能 ✅ **AI 分析师** - 基于 OpenAI 的威胁分析和修复建议 ## 输出(scanme.nmap.org 的扫描结果)
Dashboard
Nmap discovery
Folium Maps
AI-Reasoning![]()
## 仓库结构
```
Directory structure:
└── nevinbeno-The-CRATIP/
├── README.md
├── requirements.txt
├── backend/
│ ├── alerts.py
│ ├── config.py
│ ├── database.py
│ ├── main.py
│ ├── schemas.py
│ ├── reports/
│ │ ├── csv_report.py
│ │ ├── excel_report.py
│ │ └── pdf_report.py
│ └── services/
│ ├── layer1_service.py
│ ├── layer2_service.py
│ ├── layer3_service.py
│ └── orchestrator.py
├── dashboard/
│ ├── app.py
│ ├── data_loader.py
│ ├── _pages/
│ │ ├── ai_analyst.py
│ │ ├── alerts.py
│ │ ├── nmap.py
│ │ ├── overview.py
│ │ ├── reports.py
│ │ ├── risk_analysis.py
│ │ ├── threat_intel.py
│ │ ├── threat_summary.py
│ │ └── vulnerability.py
│ └── utils/
│ └── pdf_export.py
├── layer1_scanning/
│ ├── __init__.py
│ ├── profiles.py
│ ├── scanner.py
│ └── utils.py
├── layer2_threat_intel/
│ ├── __init__.py
│ ├── enricher.py
│ ├── utils.py
│ └── clients/
│ ├── nvd.py
│ ├── shodan.py
│ ├── virustotal.py
│ └── vulners.py
├── layer3_risk_scoring/
│ ├── ai_reasoner.py
│ └── scorer.py
└── .devcontainer/
└── devcontainer.json
```
## 🚀 功能
### 1. 多层安全架构
#### **第 1 层:网络扫描**
- 自动化 Nmap 扫描,具有可自定义的配置(快速、正常、深度)
- 服务检测和版本识别
- 端口状态分析
- 支持 CIDR/ASN 过滤
#### **第 2 层:威胁情报**
- **VirusTotal**:IP 信誉和恶意软件检测
- **Shodan**:公开暴露和漏洞评估
- **Vulners**:CVE 数据库集成
- **NVD**:国家漏洞数据库查询
#### **第 3 层:风险评分**
- 资产级风险评分(0-100 分制)
- 严重性分类(严重/高/中/低)
- 基于服务的风险计算
- 威胁情报影响评分
### 2. 自动化警报系统
#### 警报类型
- 🔴 **严重风险评分** (≥80)
- 🟠 **高风险评分** (≥60)
- 🟠 **多个漏洞** (≥5)
- 🟠 **暴露的高风险端口** (SSH、RDP、SMB、SQL)
- 🔴 **检测到恶意 IP**
- 🟠 **Shodan 漏洞** (>5)
- 🟡 **异常端口活动** (>20 个开放端口)
#### 警报功能
- 每次扫描后实时生成
- 可配置的阈值
- 仪表板集成与过滤
- 历史跟踪和分析
- CSV 导出功能
### 3. 交互式仪表板
- **概述**:包含 KPI 的执行摘要
- **Nmap 结果**:详细的服务清单
- **漏洞洞察**:基于严重程度的分析
- **威胁摘要**:聚合的威胁情报
- **威胁情报**:详细的外部数据源
- **风险分析**:风险评分和趋势
- **警报**:实时安全通知
- **AI 分析师**:基于 GPT 的安全洞察
- **报告**:合规性就绪文档
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────┐
│ DASHBOARD (Streamlit) │
│ Overview | Nmap | Vulnerabilities | Threats | Alerts │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ BACKEND API (FastAPI) │
│ /scan/start | /nmap/results | /risk/summary | /alerts │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│Layer 1 │ │Layer 2 │ │Layer 3 │
│ Nmap │──▶│Threat │──▶│ Risk │
│Scanning│ │ Intel │ │Scoring │
└────────┘ └────────┘ └───┬────┘
│
▼
┌───────────┐
│ Alerts │
│Generation │
└─────┬─────┘
│
▼
┌───────────┐
│ Database │
│ (SQLite) │
└───────────┘
```
## 技术栈
**后端:**
- FastAPI 0.115.0 - 高性能异步 API 框架
- SQLite 3 - 用于扫描存储的嵌入式数据库
- Pydantic 2.9.0 - 数据验证
**扫描与安全:**
- python-nmap 0.7.1 - 网络扫描
- Shodan 1.31.0 - 互联网范围内的资产发现
- Vulners 2.1.0 - 漏洞情报
**仪表板:**
- Streamlit 1.39.0 - 交互式 Web 界面
- Plotly 5.24.1 - 数据可视化
- Pandas 2.2.3 - 数据操作
**报告:**
- ReportLab 4.2.5 - PDF 生成
- XlsxWriter 3.2.0 - Excel 报告
- OpenPyXL 3.1.5 - Excel 操作
## 📦 安装说明
### 前置条件
- Python 3.10 或更高版本
- 系统上已安装 Nmap。([安装 Nmap](./helper_docs/nmap_setup.md))
- API 密钥(可选,但推荐):
- [VirusTotal API 密钥](./helper_docs/VirusTotal_API_setup.md)
- [Shodan API 密钥](./helper_docs/Shodan_API_setup.md)
- [Vulners API 密钥](./helper_docs/Vulners_API_setup.md)
- [NVD API 密钥](./helper_docs/NVD_API_key.md)
- [OpenRouter API 密钥(用于 AI 功能)](./helper_docs/OpenRouter_API_key.md)
### 步骤 1:克隆仓库
```
git clone nevinbeno/The-CRATIP.git
cd The-CRATIP
```
### 步骤 2:创建虚拟环境
```
python -m venv .venv
```
### 步骤 3:激活虚拟环境
```
.venv\Scripts\activate # windows
source .venv/bin/activate # linux / Mac
```
### 步骤 4:安装依赖项
```
pip install --upgrade pip # (optional: upgrade pip)
pip install -r requirements.txt
```
### 步骤 5:配置环境
在项目根目录下创建一个 `.env` 文件:
```
# API Keys(可选)
VIRUSTOTAL_API_KEY=your_virustotal_key
SHODAN_API_KEY=your_shodan_key
VULNERS_API_KEY=your_vulners_key
NVD_API_KEY=your_nvd_key
OPENROUTER_API_KEY=your_openrouter_key
# Database
DATABASE_URL=sqlite:///backend/cratip.db
# Backend
BACKEND_HOST=127.0.0.1
BACKEND_PORT=8000
```
## 🎬 快速开始(请确保您的虚拟环境已激活)
### 选项 1:使用独立终端
**终端 1 - 后端:**
```
uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000
```
**终端 2 - 仪表板:**
```
streamlit run dashboard/app.py
```
### 选项 2:使用 PowerShell 脚本
```
# 启动 Backend
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd backend; uvicorn main:app --reload"
# 启动 Dashboard
Start-Process powershell -ArgumentList "-NoExit", "-Command", "streamlit run dashboard/app.py"
```
### 访问应用程序
- **仪表板**:http://localhost:8501
- **API 文档**:http://localhost:8000/docs
- **后端健康状态**:http://localhost:8000/health
## 🧩 系统组件
### 后端服务
#### **第 1 层服务** (`backend/services/layer1_service.py`)
```
def run_layer1_scan(targets, ports, scan_profile):
"""
Executes Nmap scan and returns flat service list
Returns:
{
"services": [...],
"total_services": N
}
"""
```
#### **第 2 层服务** (`backend/services/layer2_service.py`)
```
def run_layer2_enrichment(layer1_result):
"""
Enriches scan with threat intelligence
Returns:
{
"data": {host: {services: [...]}},
"threat_intel": {host: {vt, shodan, ...}}
}
"""
```
#### **第 3 层服务** (`backend/services/layer3_service.py`)
```
def run_layer3_scoring(layer2_result):
"""
Calculates risk scores and aggregates statistics
Returns:
{
"assets": [{ip, risk_score, risk_level, ...}],
"risk": {total_assets, critical, high, ...}
}
"""
```
### 数据库架构
#### **Scans 表**
```
CREATE TABLE scans (
id INTEGER PRIMARY KEY,
scan_type TEXT,
scan_profile TEXT,
targets TEXT,
ports TEXT,
layer1_json TEXT,
layer2_json TEXT,
layer3_json TEXT,
created_at TEXT
);
```
#### **Alerts 表**
```
CREATE TABLE alerts (
id INTEGER PRIMARY KEY,
alert_type TEXT,
severity TEXT,
title TEXT,
description TEXT,
targets TEXT,
created_at TEXT,
acknowledged INTEGER DEFAULT 0
);
```
#### **Audit Logs 表**
```
CREATE TABLE audit_logs (
id INTEGER PRIMARY KEY,
timestamp TEXT,
username TEXT,
action TEXT,
details TEXT
);
```
## 🚨 警报系统
### 配置
警报阈值可以在 `backend/alerts.py` 中自定义:
```
ALERT_THRESHOLDS = {
"CRITICAL_RISK_SCORE": 80,
"HIGH_RISK_SCORE": 60,
"CRITICAL_VULNERABILITIES": 5,
"HIGH_RISK_PORTS": {22, 3389, 445, 1433, 3306},
"MALICIOUS_IP_THRESHOLD": 3,
}
```
### 警报生成流程
```
Scan Completed
↓
Layer 3 Results Available
↓
generate_alerts_from_scan()
↓
Check Each Alert Rule
↓
Create Alert in Database
↓
Display in Dashboard
```
### 仪表板功能
- **警报概述**:总数、活跃、严重、高、已确认计数
- **过滤**:按严重性、状态和类型
- **可视化**:严重性分布饼图、时间轴图表
- **导出**:下载所有警报的 CSV 文件
## 🔄 数据流
### 完整流水线
```
1. User Initiates Scan (Dashboard)
↓
2. POST /scan/start (Backend API)
↓
3. Background Task Starts
↓
4. Layer 1: Nmap Scan
Output: Flat list of services
↓
5. Layer 2: Threat Intelligence
Output: Host-organized data + threat intel
↓
6. Layer 3: Risk Scoring
Output: Assets + aggregated risk summary
↓
7. Alert Generation
Checks thresholds, creates alerts
↓
8. Database Storage
All layers saved as JSON
↓
9. Dashboard Auto-Refresh
Loads data via API endpoints
↓
10. Display: Charts, Metrics, Tables, Alerts
```
### 数据结构
**第 1 层输出:**
```
{
"services": [
{
"host": "192.168.1.1",
"port": 80,
"protocol": "tcp",
"state": "open",
"service": "http",
"product": "Apache",
"version": "2.4.41",
"vulnerabilities": 2
}
],
"total_services": 10
}
```
**第 2 层输出:**
```
{
"data": {
"192.168.1.1": {
"services": [...]
}
},
"threat_intel": {
"192.168.1.1": {
"virustotal": {...},
"shodan": {...},
"vulners": [...],
"nvd": [...]
}
}
}
```
**第 3 层输出:**
```
{
"assets": [
{
"ip": "192.168.1.1",
"risk_score": 75,
"risk_level": "HIGH",
"open_ports": 5,
"vulnerabilities": 10
}
],
"risk": {
"total_assets": 5,
"critical": 1,
"high": 2,
"medium": 1,
"low": 1,
"overall_score": 65
}
}
```
## 📡 API 文档
### 扫描端点
#### **POST /scan/start**
启动新的漏洞扫描
**请求:**
```
{
"targets": ["192.168.1.1", "192.168.1.2"],
"ports": "1-1000",
"scan_profile": "Normal"
}
```
**响应:**
```
{
"status": "started",
"targets": ["192.168.1.1", "192.168.1.2"],
"scan_profile": "Normal"
}
```
#### **GET /scan/status**
获取当前扫描状态
**响应:**
```
{
"state": "running",
"started_at": "2026-01-12T10:30:00",
"finished_at": null
}
```
### 数据端点
#### **GET /nmap/results**
获取扁平化的扫描结果
**响应:** 服务对象数组
#### **GET /threat/intel**
获取威胁情报数据
**响应:** 基于 IP 的威胁情报数组
#### **GET /risk/summary**
获取汇总的风险摘要
**响应:**
```
{
"total_assets": 5,
"critical": 1,
"high": 2,
"medium": 1,
"low": 1,
"overall_score": 65
}
```
### 警报端点
#### **GET /alerts**
获取所有警报
#### **GET /alerts/active**
仅获取未确认的警报
#### **GET /alerts/stats**
获取警报统计信息
**响应:**
```
{
"total": 15,
"active": 8,
"critical": 3,
"high": 5,
"medium": 7,
"acknowledged": 7
}
```
## 📊 仪表板
### 页面概述
1. **🏠 概述** - 包含关键指标的执行摘要
2. **🛰️ Nmap** - 详细的扫描结果表
3. **🐞 漏洞洞察** - 基于严重程度的漏洞分析
4. **⚠️ 威胁摘要** - 聚合的威胁态势
5. **🌍 威胁情报** - 外部情报源
6. **📊 风险分析** - 风险评分和趋势
7. **🚨 警报** - 安全警报监控
8. **🧠 AI 分析师** - 基于 GPT 的洞察
9. **📜 报告** - 导出与合规
### 核心功能
- **实时更新**:扫描期间自动刷新
- **交互式图表**:基于 Plotly 的可视化
- **过滤**:所有页面上的多条件过滤
- **导出**:生成 CSV、Excel、PDF 报告
- **深色/浅色主题**:用户可选择的界面模式
## ⚙️ 配置
### 扫描配置
- **快速**:扫描前 100 个常用端口
- **正常**:带服务检测的标准扫描
- **深度**:带操作系统检测的全面扫描
### API 速率限制
在 `.env` 中配置:
```
VIRUSTOTAL_RATE_LIMIT=4
SHODAN_RATE_LIMIT=1
```
### 警报自定义
在 `backend/alerts.py` 中修改阈值:
```
ALERT_THRESHOLDS = {
"CRITICAL_RISK_SCORE": 80,
"HIGH_RISK_SCORE": 60,
# Add custom thresholds
}
```
## ✅ 项目需求合规性
### 必要产出
| 需求 | 状态 | 实现方式 |
|------------|--------|----------------|
| 自动化漏洞扫描和风险评分 | ✅ 完成 | 第 1 层 (Nmap) + 第 3 层 (风险评分) |
| 与第三方安全 API 集成 | ✅ 完成 | VirusTotal, Shodan, Vulners, NVD |
| 用于监控的集中式仪表板 | ✅ 完成 | 9 页的 Streamlit 仪表板 |
| 高风险漏洞警报 | ✅ 完成 | 具有 7 种类型的自动化警报系统 |
| 审计就绪报告 | ✅ 完成 | PDF, Excel, CSV 导出 |
### 附加功能
- AI 驱动的威胁分析
- 历史趋势跟踪
- 实时指标更新
- 可配置的警报阈值
- 全面的审计日志记录
## 🔧 故障排除
### 常见问题
**后端未启动:**
```
# 检查 port 8000 是否可用
netstat -ano | findstr :8000
# 如有需要,终止现有 process
taskkill /PID /F
```
**仪表板连接错误:**
- 确保后端正在端口 8000 上运行
- 检查 dashboard/app.py 中的 `API = "http://127.0.0.1:8000"`
**未找到 Nmap:**
- 从 https://nmap.org/download.html 安装 Nmap
- 添加到系统 PATH
**API 密钥不工作:**
- 验证 `.env` 文件是否在项目根目录下
- 检查密钥格式(不需要引号)
- 添加密钥后重启后端
## 🤝 贡献
欢迎贡献!请遵循以下指南:
1. Fork 该仓库
2. 创建一个功能分支
3. 提交您的更改
4. 推送到该分支
5. 创建一个 Pull Request
## 📄 许可证
该项目基于 MIT 许可证授权。
## 👥 作者
- **开发团队** - Infosys Final Project
## 🙏 致谢
- Mr. Utkarsh Dixit,Infosys 导师
- Nmap 开发团队
- FastAPI 框架
- Streamlit 社区
- 安全情报提供商 (VirusTotal, Shodan, Vulners, NVD)
## 📞 支持
对于问题和疑问:
- 在仓库中创建一个 issue
- 联系开发团队
## 发布
**版本:** 1.0.
**状态:** 生产就绪 ✅
🎉 项目成功运行!
🌐 访问 URL:
仪表板:
本地:http://localhost:8502
网络:http://192.168.1.6:8502
后端 API:
API 文档:http://localhost:8000/docs
健康检查:http://localhost:8000/health
🚀 如何使用:
打开仪表板 → http://localhost:8502
配置扫描 → 使用左侧边栏
输入目标 IP 或域名(例如:scanme.nmap.org)
选择扫描配置(快速/正常/深度)
可选:指定端口
开始扫描 → 点击“开始扫描”按钮
监控结果 → 在各个标签页中导航:
🏠 概述 - 执行摘要
🛰️ Nmap - 扫描详情
🚨 警报 - 安全通知
📊 风险分析 - 风险评分
🧠 AI 分析师 - GPT 洞察
✨ 所有功能已激活:
✅ 自动化漏洞扫描
✅ 威胁情报 (VirusTotal, Shodan, Vulners, NVD)
✅ 风险评分和分类
✅ 实时安全警报
✅ 带图表的交互式仪表板
✅ PDF/Excel/CSV 报告导出
您的网络风险评估平台已准备好进行扫描!🛡️
## 📋 目录 - [概述](#-overview) - [功能](#-features) - [仓库结构](#repository-structure) - [架构](#️-architecture) - [技术栈](#technology-stack) - [安装说明](#-installation) - [快速开始](#-quick-start-make-sure-that-your-virtual-environment-is-activated) - [系统组件](#-system-components) - [警报系统](#-alert-system) - [数据流](#-data-flow) - [API 文档](#-api-documentation) - [仪表板](#-dashboard) - [配置](#configuration) - [项目需求合规性](#-project-requirements-compliance) ## 🎯 概述 网络风险评估平台 (CRATIP) 是一个企业级的安全评估系统,它结合了自动化漏洞扫描、威胁情报富化和 AI 驱动的风险分析,以提供全面的安全洞察。 ### 核心能力 ✅ **自动化漏洞扫描** - 基于 Nmap 的网络发现和服务检测 ✅ **威胁情报集成** - 来自 VirusTotal、Shodan、Vulners 和 NVD 的实时数据 ✅ **风险评分与分析** - 基于 ML 的评分,具有严重/高/中/低分类 ✅ **自动化告警** - 针对高风险漏洞的实时通知 ✅ **集中式仪表板** - 带有图表和指标交互式的 Streamlit 界面 ✅ **审计就绪报告** - 支持 PDF、Excel 和 CSV 导出功能 ✅ **AI 分析师** - 基于 OpenAI 的威胁分析和修复建议 ## 输出(scanme.nmap.org 的扫描结果)
Dashboard
Nmap discovery
Folium Maps
AI-Reasoning健康检查:http://localhost:8000/health
🚀 如何使用:
打开仪表板 → http://localhost:8502
配置扫描 → 使用左侧边栏
输入目标 IP 或域名(例如:scanme.nmap.org)
选择扫描配置(快速/正常/深度)
可选:指定端口
开始扫描 → 点击“开始扫描”按钮
监控结果 → 在各个标签页中导航:
🏠 概述 - 执行摘要
🛰️ Nmap - 扫描详情
🚨 警报 - 安全通知
📊 风险分析 - 风险评分
🧠 AI 分析师 - GPT 洞察
✨ 所有功能已激活:
✅ 自动化漏洞扫描
✅ 威胁情报 (VirusTotal, Shodan, Vulners, NVD)
✅ 风险评分和分类
✅ 实时安全警报
✅ 带图表的交互式仪表板
✅ PDF/Excel/CSV 报告导出
您的网络风险评估平台已准备好进行扫描!🛡️
标签:AV绕过, CTI, Docker部署, FastAPI, Kubernetes, Python, Streamlit, 威胁情报, 实时处理, 开发者工具, 插件系统, 无后门, 访问控制, 逆向工具