nevinbeno/The-CRATIP

GitHub: nevinbeno/The-CRATIP

该平台是一个基于 Python 与 Streamlit 构建的企业级网络风险评估系统,集成了自动化漏洞扫描、多源威胁情报富化、AI 风险评分与合规报告生成功能。

Stars: 2 | Forks: 0

# 🛡️ 网络风险评估平台 (CRATIP) ![最近提交](https://img.shields.io/github/last-commit/ksaikiran950/Cyber_Risk_Assessment-Threat_Intelligence_Platform__using_Python) [![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.115.0-green.svg)](https://fastapi.tiangolo.com/) [![Streamlit](https://img.shields.io/badge/Streamlit-1.39.0-red.svg)](https://streamlit.io/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![SQLite](https://img.shields.io/badge/database-SQLite-pink) ![测试](https://img.shields.io/badge/tests-passing-brightgreen)
## 📋 目录 - [概述](#-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 报告导出

您的网络风险评估平台已准备好进行扫描!🛡️
标签:AV绕过, CTI, Docker部署, FastAPI, Kubernetes, Python, Streamlit, 威胁情报, 实时处理, 开发者工具, 插件系统, 无后门, 访问控制, 逆向工具