noornabeeha/Cyber-Risk-and-Threat-Intelligence-platform

GitHub: noornabeeha/Cyber-Risk-and-Threat-Intelligence-platform

一个基于 Python 和 Streamlit 的轻量级网络风险与威胁情报平台,将 Nmap 扫描、VirusTotal 恶意检测与自动化风险评分整合到交互式仪表板中,并支持邮件告警和历史记录查询。

Stars: 0 | Forks: 0

# 🛡️ 网络风险与威胁情报平台 一个基于 Python 的网络安全平台,将 **Nmap 网络扫描**、**VirusTotal 威胁情报**和**自动化风险评分**结合到一个交互式 Streamlit 仪表板中。它可以扫描目标,检测危险的开放端口和服务,根据 VirusTotal 的威胁数据库检查 URL,并生成综合风险评分以及电子邮件报警功能。 ## 📁 项目结构 ``` Cyber-Risk-and-Threat-Intelligence-platform/ │ ├── dashboard.py # Main Streamlit app — entry point ├── database.py # SQLite persistence layer ├── .env # API keys & credentials (not committed) ├── requirements.txt # Python dependencies ├── sample_test_targets.txt # Sample scan targets ├── cyberscan_logo-removebg-preview.png # App logo │ ├── scanners/ │ ├── __init__.py │ ├── risk_scoring.py # Composite risk scoring engine │ ├── nmap_scanner/ │ │ ├── __init__.py │ │ └── nmap_scanner.py # Nmap scan runner & XML parser │ └── vt_scanner/ │ ├── __init__.py │ └── vt_scanner.py # VirusTotal API client │ └── scans/ # Auto-created; stores Nmap XML output files ``` ## 📸 屏幕截图 [截图 - 网络风险与威胁情报平台.pdf](https://github.com/user-attachments/files/26314005/screenshots.-.Cyber.Risk.and.Threat.Intelligence.Platform.pdf) ## 📦 使用的库 | 库 | 用途 | |---|---| | `streamlit` | 交互式 Web 仪表板 UI | | `pandas` | 数据操作和 DataFrame 操作 | | `plotly` | 交互式图表和可视化 | | `requests` | 对 VirusTotal API 的 HTTP 调用 | | `python-dotenv` | 从 `.env` 文件加载密钥 | | `sqlite3` *(stdlib)* | 将扫描历史持久化到本地数据库 | | `subprocess` *(stdlib)* | 将 Nmap 作为系统进程运行 | | `xml.etree.ElementTree` *(stdlib)* | 解析 Nmap 的 XML 输出 | | `smtplib` *(stdlib)* | 通过 Gmail SMTP 发送电子邮件警报 | | `base64` *(stdlib)* | 用于 VirusTotal API 请求的 URL 编码 | ## 🗂️ 文件描述 ### dashboard.py 应用程序的主入口点。使用 `streamlit run dashboard.py` 运行。负责处理: - 从 `.env` 文件加载凭证和扫描目标 - 通过调用 `risk_scoring.getScore()` 协调所有配置目标的扫描 - 渲染 Streamlit UI:摘要卡片、风险评分表、Plotly 条形图/仪表盘图以及扫描历史 - 检测到高严重性目标时,通过 Gmail SMTP 发送电子邮件警报 - 通过 `database.py` 将已完成的扫描结果保存到 SQLite 数据库 ### database.py 处理所有 SQLite 操作——这里不包含扫描或评分逻辑。职责: - `init_db()` — 在首次运行时创建 `scans` 表 - `save_scan(df, targets)` — 将已完成扫描的 DataFrame(端口级别结果)和摘要统计信息(总主机数、严重/高数量、最大/平均风险评分)持久化为 JSON blob - `load_scans()` — 检索历史扫描记录,以便在仪表板的历史记录选项卡中显示 ### scanners/nmap_scanner/nmap_scanner.py 将 Nmap 作为子进程包装并解析生成的 XML。关键函数: - `run_nmap_scan(target)` — 执行 `nmap -Pn -sT -O -sV --script banner -oX` 并将结果保存到 `scans/.xml` - `parse_nmap_xml(xml_file)` — 从 XML 中提取开放端口、服务名称、版本、操作系统猜测和 banner - 包含 `DANGEROUS_SERVICES` 和 `DANGEROUS_PORT_COMBOS` 字典,将高/中风险服务(例如 FTP、Telnet、RDP、Redis、MongoDB)标记为相应的风险等级和原因 ### scanners/vt_scanner/vt_scanner.py VirusTotal API v3 客户端。关键函数: - `encodeUrl(url)` — 对 URL 进行 Base64 编码,以用于 VirusTotal 的端点 - `getData(url)` — 使用来自 `.env` 的 `VT_API_KEY` 发起经过身份验证的 GET 请求 - `isMalicious(target)` — 如果任何引擎将该 URL 标记为恶意,则返回 `True` - `run_vt_scan(target)` — 获取完整的分析统计数据:总投票数、恶意/可疑/干净的引擎计数、信誉得分、上次分析日期以及恶意出站链接数量 ### scanners/risk_scoring.py 核心评分引擎,将 Nmap 和 VT 结果组合成一个综合评分 (0–100)。关键组件: - `PortRisk` 和 `RiskReport` 数据类 — 用于扫描结果的结构化容器 - `score_nmap(nmap_report)` — 根据危险服务、开放端口数量、SSL 存在情况、未修补/EOL 操作系统信号进行评分 - `score_vt(vt_data)` — 根据恶意引擎命中数、可疑命中数、信誉、出站链接恶意程度和数据陈旧程度进行评分 - `getScore(target)` — 运行两个扫描器,使用 `clamp()` 组合分数,并映射到严重性标签:`CRITICAL / HIGH / MEDIUM / LOW / INFO` ## ⚙️ 设置与运行说明 ### 前置条件 - Python 3.9+ - 安装 [Nmap](https://nmap.org/download.html) 并可在您的系统 PATH 中访问 - 一个 [VirusTotal API 密钥](https://www.virustotal.com/gui/join-community)(免费版即可) - 一个 Gmail 账户,并带有用于电子邮件警报的[应用专用密码](https://support.google.com/accounts/answer/185833) ### 1. 克隆仓库 ``` git clone https://github.com/noornabeeha/Cyber-Risk-and-Threat-Intelligence-platform.git cd Cyber-Risk-and-Threat-Intelligence-platform ``` ### 2. 安装依赖项 ``` pip install -r requirements.txt ``` `requirements.txt` 包含: ``` python-dotenv==1.2.2 Requests==2.32.5 streamlit pandas plotly ``` ### 3. 配置 `.env` 文件 在项目根目录中创建一个 `.env` 文件(已存在一个模板): ``` VT_API_KEY=your_virustotal_api_key_here GMAIL_SENDER=your_email@gmail.com GMAIL_PASSWORD=your_app_password_here GMAIL_RECIPIENT=recipient@example.com SCAN_TARGETS=scanme.nmap.org,testphp.vulnweb.com ``` | 变量 | 描述 | |---|---| | `VT_API_KEY` | 你的 VirusTotal API v3 密钥 | | `GMAIL_SENDER` | 用于发送警报的 Gmail 地址 | | `GMAIL_PASSWORD` | Gmail 应用专用密码(16 个字符,不是你的常规密码) | | `GMAIL_RECIPIENT` | 用于接收高风险警报的电子邮件地址 | | `SCAN_TARGETS` | 要扫描的目标列表,以逗号分隔 | ### 4. 运行仪表板 ``` streamlit run dashboard.py ``` 应用程序将在您的浏览器中打开,地址为 `http://localhost:8501`。 ## 🚀 如何运行项目 1. **确保已安装 Nmap** — 在终端中通过 `nmap --version` 进行验证。 2. **如上所述设置 `.env`**。 3. **启动应用程序:** streamlit run dashboard.py 4. **在仪表板中:** - 应用程序会自动扫描 `SCAN_TARGETS` 中定义的目标(或者回退到默认值:`testasp.vulnweb.com`、`testphp.vulnweb.com`、`zero.webappsecurity.com`) - 点击 **"Run Scan"** 以开始新的扫描 - 在图表中查看风险评分、严重程度级别、开放端口和 VirusTotal 结果 - 导航到 **History** 选项卡以查看存储在 `cyberscan.db` 中的过去扫描 - 高严重性结果将自动触发向 `GMAIL_RECIPIENT` 发送电子邮件警报 ## 🎯 关于样本目标 `sample_test_targets.txt` 文件包含以下故意设计为易受攻击的/公开可用的安全扫描目标: | 目标 | 描述 | |---|---| | `scanme.nmap.org` | 官方 Nmap 测试主机 — 由 Nmap 项目明确提供用于测试目的。扫描安全且合法。 | | `testphp.vulnweb.com` | Acunetix 故意设计为易受攻击的 PHP Web 应用程序。专为安全工具测试而设计。 | | `demo.testfire.net` | IBM 的 AltoroMutual 演示银行应用程序,用于演示 Web 应用程序安全问题。 | | `testasp.vulnweb.com` | Acunetix 故意设计为易受攻击的 ASP Web 应用程序。用于安全扫描测试是安全的。 | | `zero.webappsecurity.com` | HP/Micro Focus WebInspect 演示站点 — 一个故意设计为易受攻击的银行 Web 应用程序,用于安全测试。 | ## 👥 团队成员 | 姓名 | GitHub | |---|---| | Dhanush Polasi | [@userid1](https://github.com/DhanushP545) | | Sujithraa | [@userid2](https://github.com/Suji2007hub) | | Akshay Bakale | [@userid3](https://github.com/AkshayBakale/) | | Eswar V | [@userid4](https://github.com/eswar0113) | **仓库:** [https://github.com/noornabeeha/Cyber-Risk-and-Threat-Intelligence-platform](https://github.com/noornabeeha/Cyber-Risk-and-Threat-Intelligence-platform) ## 🤖 AI 工具声明 在本项目的开发过程中使用了以下 AI 工具: | 工具 | 用途 | |---|---| | **Claude (Anthropic)** | 生成 Streamlit 布局的样板代码(列结构、指标卡、自定义 CSS)建议 Plotly 图表配置起草自动警报的 HTML 电子邮件模板结构审查和改进错误处理逻辑 | *最后更新:2026 年 3 月*
标签:Ask搜索, CTI, DNS枚举, GraphQL安全矩阵, Kubernetes, Nmap, Python, SQLite, Streamlit, URL威胁检测, VirusTotal, 云存储安全, 仪表盘, 企业安全, 可视化大屏, 威胁情报, 安全扫描器, 安全运营, 密码管理, 开发者工具, 开源安全项目, 扫描框架, 插件系统, 无后门, 无线安全, 端口检测, 网络安全, 网络安全工具, 网络扫描, 网络资产管理, 自动化评分, 虚拟驱动器, 访问控制, 逆向工具, 邮件告警, 隐私保护, 风险评分引擎