Dennistutu/cybersentinel-itms548
GitHub: Dennistutu/cybersentinel-itms548
CyberSentinel 是一个开源的威胁情报仪表板,整合 NVD、AbuseIPDB、VirusTotal 和 AlienVault OTX 四大安全 API,为安全专业人员提供实时威胁聚合、分析与可视化的一站式桌面解决方案。
Stars: 0 | Forks: 0
# CyberSentinel - 威胁情报仪表板





## 项目概述
**CyberSentinel** 是一个开源的威胁情报仪表板,可实时聚合、分析和可视化网络安全威胁。专为安全专业人员、SOC 分析师和组织构建,它通过将来自四个主要网络安全数据源的数据整合到一个统一的界面中,提供了全面的监控能力。
### 学术项目信息
- **课程:** ITMS 548 - 网络安全技术
- **机构:** 伊利诺伊理工学院 (Illinois Institute of Technology)
- **讲师:** Maurice Dawson 博士
- **学期:** 2026年春季
- **时间线:** 2026年4月10-28日
### 团队成员
| 角色 | 姓名 |
|------|------|
| 项目负责人兼开发者 | Dennis Oseitutu |
| 安全研究员兼开发者 | Akinyemi Aremu |
| 网络安全专家兼开发者| William Smith |
## 核心特性
### 实时威胁情报
- 实时 CVE 漏洞监控
- 针对滥用数据库的 IP 信誉检查
- URL 和文件恶意软件扫描
- 威胁情报 pulse 聚合
### 数据分析与可视化
- **漏洞严重性分布** (饼图)
- **IP 风险分布** (条形图)
- **地理威胁分布** (国家分析)
- **漏洞时间线** (时间序列)
- **摘要统计仪表板**
- **可导出报告** (文本格式)
### 数据管理
- SQLite 数据库持久化存储
- 自动数据缓存
- 查询历史记录跟踪
- 活动日志
### 用户体验
- 简洁、专业的 Tkinter GUI
- 用于不同操作的 6 个功能选项卡
- 包含文件、工具和帮助选项的菜单系统
- 实时状态更新
- 活动日志显示
## 集成数据源
CyberSentinel 集成了**四个主要的网络安全 API**:
| # | API | 用途 | 免费套餐 |
|---|-----|---------|-----------|
| 1 | **NVD (国家漏洞数据库)** | CVE 漏洞数据 | 是 |
| 2 | **AbuseIPDB** | IP 地址信誉 | 1,000 次/天 |
| 3 | **VirusTotal** | URL/文件恶意软件扫描 | 4 次/分钟 |
| 4 | **AlienVault OTX** | 威胁情报 pulse | 是 |
## 技术栈
### 核心技术
| 组件 | 技术 | 版本 |
|-----------|-----------|---------|
| **语言** | Python | 3.11+ |
| **GUI 框架** | Tkinter | 内置 |
| **数据库** | SQLite3 | 内置 |
| **HTTP 客户端** | requests | 2.31.0 |
| **数据处理** | pandas | 2.2.0 |
| **数值计算** | numpy | 1.26.3 |
| **可视化** | matplotlib | 3.8.2 |
### 开发工具
- **版本控制:** Git & GitHub
- **IDE:** Visual Studio Code
- **测试:** pytest 7.4.4
- **代码风格:** PEP 8
## 安装说明
### 前置条件
在安装 CyberSentinel 之前,请确保您具备:
- **Python 3.11+** ([下载](https://www.python.org/downloads/))
- **pip** 包管理器 (包含在 Python 中)
- **Git** ([下载](https://git-scm.com/downloads))
- 用于访问 API 的**互联网连接**
### 分步设置
#### 1. 克隆仓库
```
git clone https://github.com/Dennistutu/cybersentinel-itms548.git
cd cybersentinel-itms548
```
#### 2. 创建虚拟环境
```
# 创建 venv
python -m venv venv
# 在 Windows 上激活
venv\Scripts\activate
# 在 Linux/macOS 上激活
source venv/bin/activate
```
#### 3. 安装依赖
```
pip install -r requirements.txt
```
这将安装:requests、pandas、numpy、matplotlib、pytest、python-dateutil
#### 4. 配置 API 密钥
```
# 复制示例 config
cp config/config.example.json config/config.json
# 使用你的 API keys 编辑 config/config.json(见下文的 API Setup)
```
#### 5. 运行应用程序
```
python src/main.py
```
CyberSentinel GUI 将会启动!
## API 密钥设置
所有 API 均提供**免费套餐** - 注册总共大约需要 10 分钟。
### 1. NVD (国家漏洞数据库)
- **网站:** https://nvd.nist.gov/developers/request-an-api-key
- **用途:** CVE 漏洞数据
- **免费套餐:** 无密钥即可工作 (较慢),或者注册获取 API 密钥
- **速率限制:** 5 次/30秒 (公开),50 次/30秒 (带密钥)
### 2. AbuseIPDB
- **网站:** https://www.abuseipdb.com/register
- **用途:** IP 信誉检查
- **免费套餐:** 1,000 次请求/天
- **注册:** 需要邮箱验证
### 3. VirusTotal
- **网站:** https://www.virustotal.com/gui/join-us
- **用途:** URL/文件恶意软件扫描
- **免费套餐:** 4 次请求/分钟,500 次请求/天
- **注册:** 需要邮箱验证
### 4. AlienVault OTX
- **网站:** https://otx.alienvault.com/
- **用途:** 威胁情报源
- **免费套餐:** 完全访问 (合理使用)
- **注册:** 需要邮箱验证
### 配置文件
编辑 `config/config.json`:
```
{
"api_keys": {
"nvd": "your-nvd-api-key-here",
"abuseipdb": "your-abuseipdb-key-here",
"virustotal": "your-virustotal-key-here",
"alienvault_otx": "your-otx-key-here"
},
"settings": {
"cache_enabled": true,
"cache_duration_hours": 24,
"max_api_retries": 3,
"request_timeout": 30,
"log_level": "INFO"
},
"database": {
"path": "data/cybersentinel.db"
}
}
```
** 重要提示:** 切勿将 `config.json` 提交到 Git (它已包含在 `.gitignore` 中)
## 项目结构
```
cybersentinel-itms548/
│
├── src/ # Source code
│ ├── main.py # Application entry point
│ │
│ ├── gui/ # GUI components
│ │ └── main_window.py # Main application window (6 tabs)
│ │
│ ├── api/ # API integrations
│ │ ├── nvd_api.py # NVD CVE lookup
│ │ ├── abuseipdb_api.py # IP reputation
│ │ ├── virustotal_api.py # URL/file scanning
│ │ └── otx_api.py # Threat intelligence
│ │
│ ├── analysis/ # Data analysis
│ │ └── data_analyzer.py # Charts & statistics
│ │
│ ├── database/ # Database operations
│ │ └── db_manager.py # SQLite manager
│ │
│ └── utils/ # Utilities
│ ├── config.py # Configuration manager
│ └── logger.py # Logging system
│
├── config/ # Configuration
│ ├── config.example.json # Template
│ └── config.json # Your keys (not in Git)
│
├── data/ # Local data (auto-created)
│ ├── cybersentinel.db # SQLite database
│ └── cybersentinel_*.log # Log files
│
├── tests/ # Unit tests
├── docs/ # Additional documentation
│
├── requirements.txt # Python dependencies
├── README.md # This file
├── API_SETUP_GUIDE.md # Quick API setup
├── LICENSE # MIT License
└── .gitignore # Git ignore rules
```
## 使用指南
### 应用程序选项卡概述
#### 1. 仪表板选项卡
**用途:** 系统概览和活动监控
**功能:**
- 漏洞总数计数器
- IP 信誉检查计数器
- 文件/URL 扫描计数器
- 威胁情报 Pulse 计数器
- 实时活动日志
- 手动刷新按钮
#### 2. 漏洞选项卡
**用途:** 搜索 CVE 数据库
**使用方法:**
1. 输入关键字 (例如,“Apache”、“Microsoft”) 或 CVE ID
2. 点击“搜索”按钮
3. 查看包含 CVSS 评分和描述的结果
4. 数据自动保存到数据库
**搜索示例:**
- `Microsoft` - Microsoft 产品 CVE
- `Apache` - 与 Apache 相关的漏洞
- `CVE-2024-1234` - 特定 CVE 查询
#### 3. IP 信誉选项卡
**用途:** 检查 IP 地址信誉
**使用方法:**
1. 输入 IP 地址 (例如,`8.8.8.8`)
2. 点击“检查信誉”
3. 查看滥用置信度分数和报告
**风险等级:**
- **低风险** (0-25%):可能是干净的
- **中风险** (26-74%):可疑活动
- **高风险** (75-100%):可能是恶意的
**测试 IP:**
- `8.8.8.8` - Google DNS (干净)
- `185.220.101.1` - 已知恶意 (Tor 出口节点)
#### 4. 扫描选项卡
**用途:** 扫描 URL 和文件以查找恶意软件
**使用方法:**
1. 输入 URL (例如,`https://example.com`) 或文件哈希 (SHA-256)
2. 点击“扫描”
3. 查看来自 70 多个防病毒引擎的检测结果
**示例:**
- URL: `https://www.google.com` → 应该是干净的
- 恶意 URL → 显示检测率
#### 5. 威胁情报选项卡
**用途:** 搜索威胁情报 pulse
**使用方法:**
1. 输入威胁术语 (例如,“ransomware”、“phishing”)
2. 点击“搜索 Pulse”
3. 浏览带有指标 (indicator) 的威胁情报
**搜索示例:**
- `ransomware` - 勒索软件活动
- `phishing` - 钓鱼攻击
- `APT` - 高级持续性威胁
#### 6. 分析选项卡
**用途:** 数据可视化和报告
**功能:**
- **摘要统计** - 总计数
- **漏洞严重性饼图** - 严重/高/中/低 分布
- **IP 风险分布条形图** - 风险分类
- **地理分布** - 按 IP 检查数量排名靠前的国家
- **漏洞时间线** - 随时间变化的 CVE
- **导出报告按钮** - 保存文本报告
### 菜单选项
#### 文件菜单
- **设置** - 应用程序设置
- **退出** - 关闭应用程序
#### 工具菜单
- **刷新仪表板** - 更新统计信息
- **清除缓存** - 清除缓存的数据
- **导出数据** - 导出数据库
#### 帮助菜单
- **关于** - 应用程序信息
- **API 设置指南** - API 配置帮助
## 数据库 Schema
CyberSentinel 使用包含 5 个表的 SQLite:
### `vulnerabilities`
存储来自 NVD 的 CVE 数据
- cve_id, description, severity, cvss_score, published_date, last_modified
### `ip_reputation`
存储来自 AbuseIPDB 的 IP 检查结果
- ip_address, abuse_confidence_score, country_code, usage_type, total_reports
### `scan_results`
存储来自 VirusTotal 的 URL/文件扫描结果
- scan_type, target, positives, total_scans, scan_date, malicious
### `threat_pulses`
存储来自 AlienVault OTX 的威胁情报
- pulse_id, name, description, author, tags, indicator_count
### `query_history`
跟踪所有用户查询
- query_type, query_value, result_count, success, timestamp
## 测试
### 运行测试套件
```
pytest tests/
```
### 测试覆盖率
```
pytest --cov=src tests/
```
### 手动测试
有关全面的测试用例和结果,请参阅 `Test_Document.docx`。
### 测试结果摘要
- **10/10** 测试用例通过
- **100%** 通过率
- **12/12** 需求满足
## 数据分析功能
### 统计分析
- 按严重性划分的漏洞数量
- IP 风险分类
- 地理分布
- 时间趋势分析
### 可视化
- 用于分类数据的饼图
- 用于分布的条形图
- 用于时间序列的折线图
- 用于排名的水平条形图
### 导出选项
- 文本报告 (.txt 格式)
- CSV 导出 (通过数据分析器)
- 未来:PDF 报告
## 安全注意事项
### API 密钥保护
- 配置文件已从版本控制中排除 (`.gitignore`)
- API 密钥绝不会被记录或显示
- 建议在生产环境中使用环境变量支持
### 数据隐私
- 所有数据本地存储
- 无遥测或分析
- 您的查询将保留在您的机器上
### 网络安全
- 所有 API 通信均使用 HTTPS
- 请求超时以防止挂起
- 遵守速率限制
## 项目统计
- **总代码行数:** ~2,500+
- **文件数量:** 15+
- **API 集成:** 4
- **GUI 选项卡:** 6
- **图表类型:** 4
- **数据库表:** 5
- **开发时间:** 12 天
## 故障排除
### 常见问题
#### "ModuleNotFoundError: No module named 'X'"
**解决方案:** 安装缺失的依赖项
```
pip install -r requirements.txt
```
#### "API key not configured"
**解决方案:** 将您的 API 密钥添加到 `config/config.json`
#### "Rate limit exceeded"
**解决方案:**
- VirusTotal:等待 1 分钟 (4 次请求/分钟限制)
- AbuseIPDB:检查每日配额 (1,000 次/天)
#### 图表不显示
**解决方案:** 安装 matplotlib 和 pandas
```
pip install matplotlib pandas
```
#### GUI 未启动
**解决方案:** 确保 Tkinter 已安装
```
# 在 Linux 上
sudo apt-get install python3-tk
```
## 未来增强功能
未来开发的潜在功能:
- [ ] **导出为 PDF** - 生成 PDF 报告
- [ ] **计划扫描** - 自动定期扫描
- [ ] **电子邮件警报** - 发现高风险时发出通知
- [ ] **深色模式** - UI 主题切换
- [ ] **多语言支持** - 国际化
- [ ] **更多 API** - 集成odan、Censys、URLhaus
- [ ] **批量操作** - 处理 IP/URL 列表
- [ ] **API 密钥库** - 加密密钥存储
- [ ] **自定义仪表板** - 用户可配置的小部件
- [ ] **REST API** - 将功能作为 Web 服务公开
## 贡献
这是 ITMS 548 的一个学术项目。欢迎在项目提交后做出贡献!
### 开发工作流
1. Fork 该仓库
2. 创建一个功能分支:`git checkout -b feature/amazing-feature`
3. 提交更改:`git commit -m 'Add amazing feature'`
4. 推送到分支:`git push origin feature/amazing-feature`
5. 发起一个 Pull Request
### 代码风格
- 遵循 PEP 8 指南
- 为所有函数添加 docstring
- 为新功能编写单元测试
- 更新文档
## 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [许可证](LICENSE) 文件。
```
MIT License - Copyright (c) 2026 Dennis Oseitutu, Akinyemi Aremu, William Smith
```
## 免责声明
**CyberSentinel 是一款为学术目的而开发的教育工具。**
- 使用合法的、公开的威胁情报来源
- 帮助安全专业人员收集情报
- 不应作为关键安全决策的唯一来源
- 不用于恶意用途
务必通过多个来源验证发现,并在做出关键决策时咨询安全专业人员。
## 致谢
### 学术方面
- **Maurice Dawson 博士** - ITMS 548 课程讲师
- **伊利诺伊理工学院** - 学术机构
- **ITMS 548 网络安全技术** - 课程框架
### 数据来源
- **美国国家标准与技术研究院 (NIST)** - NVD API
- **AbuseIPDB 社区** - 社区驱动的 IP 信誉
- **Google (VirusTotal)** - 多引擎恶意软件扫描
- **AT&T Cybersecurity (AlienVault)** - OTX 平台
### 开源工具
- **Python 软件基金会** - Python 语言
- **Tcl/Tk 团队** - Tkinter GUI 框架
- **Matplotlib 开发团队** - 可视化库
- **pandas 开发团队** - 数据分析库
- **SQLite 团队** - 嵌入式数据库
## 联系与支持
### 项目仓库
**GitHub:** https://github.com/Dennistutu/cybersentinel-itms548
### 问题与 Bug 报告
请在 GitHub 上开启一个 issue:
https://github.com/Dennistutu/cybersentinel-itms548/issues
### 团队联系方式
有关学术咨询,请通过 IIT 学生目录联系团队成员。
## 附加资源
### 项目文档
- [API 设置指南](API_SETUP_GUIDE.md) - 快速 API 配置
- 项目计划 (Canvas 提交)
- 风险管理计划 (Canvas 提交)
- 项目管理计划 (Canvas 提交)
- 挣值表 (Canvas 提交)
- 测试文档 (Canvas 提交)
### 外部参考
- [NVD 文档](https://nvd.nist.gov/developers)
- [AbuseIPDB API 文档](https://docs.abuseipdb.com/)
- [VirusTotal API v3](https://developers.virustotal.com/reference)
- [AlienVault OTX API](https://otx.alienvault.com/api)
## 项目成就
- **100% 需求满足** - 满足所有 12 项评分标准要求
- **所有测试通过** - 10/10 测试用例成功
- **集成 4 个 API** - 真实威胁情报
- **6 项可视化** - 全面的数据分析
- **专业文档** - 企业级文档
- **整洁代码** - 符合 PEP 8 规范,注释完善
- **版本控制** - 完整的 Git 历史
- **开源** - MIT 许可证
**由 CyberSentinel 团队倾情制作**
**ITMS 548 - 网络安全技术 | 伊利诺伊理工学院 | 2026年春季**
标签:CVE漏洞监控, IP信誉检测, Mutation, Python, SQLite, Tkinter, 代码示例, 仪表盘系统, 伊利诺伊理工大学, 可视化, 威胁情报, 学术项目, 安全仪表盘, 安全规则引擎, 安全运营中心, 密码管理, 开发者工具, 开源, 恶意软件扫描, 数据分析, 无后门, 无线安全, 网络安全, 网络安全技术, 网络映射, 逆向工具, 隐私保护