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, 云存储安全, 仪表盘, 企业安全, 可视化大屏, 威胁情报, 安全扫描器, 安全运营, 密码管理, 开发者工具, 开源安全项目, 扫描框架, 插件系统, 无后门, 无线安全, 端口检测, 网络安全, 网络安全工具, 网络扫描, 网络资产管理, 自动化评分, 虚拟驱动器, 访问控制, 逆向工具, 邮件告警, 隐私保护, 风险评分引擎