karthickmessi/ThreatScope-SOC
GitHub: karthickmessi/ThreatScope-SOC
基于 Cowrie SSH 蜜罐与 Flask 构建的实时安全运营中心仪表盘,用于捕获攻击者行为并进行威胁情报可视化分析。
Stars: 1 | Forks: 0
# 🛡 ThreatScope SOC — 实时蜜罐威胁情报仪表盘
这是一个实时安全运营中心(SOC)仪表盘,用于监控实时运行的 Cowrie SSH 蜜罐,捕获攻击者的行为——包括登录尝试、执行的命令以及恶意软件下载尝试,并通过交互式威胁情报平台进行可视化展示。
该项目旨在展示端到端的安全工程实践:包括蜜罐部署、数据流水线设计、后端 API 开发以及实时仪表盘可视化。
## 🎯 项目功能
1. 在隔离的 Docker 容器中部署 **Cowrie**(一个 SSH/Telnet 蜜罐)
2. 将每一次攻击者交互——登录尝试、执行的命令、“下载”的文件——捕获为结构化的 JSON 日志
3. 解析这些数据并将其存储在 SQLite 数据库中
4. 提供基于 Flask 的实时仪表盘,包含:
- 实时攻击信息流
- 威胁评分与严重性分类
- 数据分析(事件分布、热门命令、高频攻击者 IP)
- MITRE ATT&CK 技术映射
- 系统状态监控
## 🏗 架构
```
[ Attacker/Bot ]
|
v
[ Cowrie Honeypot (Docker, isolated) ] --> logs to cowrie.json
|
v
[ Python Parser ] --> parses JSON, inserts into SQLite
|
v
[ SQLite Database ] (attacks table)
|
v
[ Flask Backend ] --> REST API (/api/stats, /api/events, /api/analytics, /api/intelligence)
|
v
[ Live Dashboard ] --> Bootstrap + Chart.js, auto-refreshing every 5s
```
**Docker 隔离的重要性:** Cowrie 模拟了一台真实的、存在漏洞的 Linux 服务器,配备了虚拟的文件系统、虚假的命令响应和虚假的凭据。“闯入”的攻击者只能在这个沙箱化的模拟环境中进行交互——他们永远无法接触到真实的宿主机系统。这正是将其安全地暴露在互联网上的原因。
## 🛠 技术栈
- **蜜罐:** [Cowrie](https://github.com/cowrie/cowrie) (SSH/Telnet)
- **隔离:** Docker
- **后端:** Python, Flask
- **数据库:** SQLite
- **前端:** Bootstrap 5, Chart.js, 原生 JavaScript
- **数据流水线:** 自定义 Python JSON 日志解析器
## 📸 截图
*(在此处添加您的截图 —— 仪表盘、实时威胁、分析、情报页面)*
## ⚙️ 设置与安装
### 前置条件
- Docker
- Python 3.10+
- pip
### 1. 克隆代码库
```
git clone https://github.com/karthickmessi/ThreatScope-SOC.git
cd ThreatScope-SOC
```
### 2. 启动 Cowrie 蜜罐
```
mkdir -p ~/honeypot-logs
chmod -R 777 ~/honeypot-logs
docker run -d \
--name cowrie \
-p 2222:2222 \
-p 2223:23 \
-v ~/honeypot-logs:/cowrie/cowrie-git/var/log/cowrie \
cowrie/cowrie
```
### 3. 配置 Python 环境
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 4. 初始化数据库
```
python database/init_db.py
```
### 5. 导入蜜罐数据
```
python parser/parser.py
```
### 6. 运行仪表盘
```
python app.py
```
访问 **http://localhost:5000** 查看实时仪表盘。
## 🔍 工作原理 —— 攻击生命周期
1. 攻击者(或僵尸网络)连接到蜜罐的 SSH 端口
2. 他们尝试登录 —— Cowrie 会记录尝试过的每一个用户名/密码组合
3. 一旦“登录”成功(Cowrie 被配置为接受常见的弱口令,以模拟安全性较差的服务器),攻击者将获得一个虚拟的 shell
4. 他们运行的每一个命令(`whoami`、`cat /etc/passwd`、`wget malware.sh` 等)都会被高保真地完整记录下来
5. Python 解析器读取这些结构化的 JSON 日志,并将其插入到 SQLite 中
6. Flask API 提供这些数据,仪表盘每 5 秒自动刷新一次,以进行实时展示
## 📊 功能详解
| 页面 | 用途 |
|---|---|
| **仪表盘** | 实时统计数据概览 —— 事件总数、执行的命令、活动会话、整体威胁级别和评分 |
| **实时威胁** | 实时攻击数据流,展示每一次发生的事件 |
| **分析** | 事件分布(圆环图)、常用热门命令(柱状图)、按风险排名的攻击者 IP |
| **情报** | 头号攻击者画像、计算出的威胁评分、MITRE ATT&CK 技术映射 |
| **设置** | 平台/系统配置概览 |
## 🧠 威胁评分逻辑
威胁评分基于攻击者行为的权重计算得出:
```
score = (failed_login_attempts × 5) + (commands_executed × 2)
```
- **0–19:** 低危 (LOW)
- **20–49:** 中危 (MEDIUM)
- **50–79:** 高危 (HIGH)
- **80–100:** 严重 (CRITICAL)
## 🗺 路线图 / 未来改进
- [ ] 将其部署在具有公网静态 IP 的云 VM 上,以捕获有机的互联网全球攻击流量
- [ ] 添加 GeoIP 丰富信息以映射攻击者的地理位置
- [ ] 集成实时威胁情报源(AbuseIPDB, VirusTotal)以进行 IP 信誉评分
- [ ] 迁移至 PostgreSQL + Redis,以支持更高吞吐量的多传感器部署
- [ ] 添加基于 WebSocket 的推送更新以替代轮询
## ⚠️ 负责任的使用声明
本蜜罐严格仅用于防御性研究和教育目的——即在完全沙箱化的环境中观察攻击者行为。它永远不会授予真实的系统访问权限,也不会与真实的外部服务进行交互。
## 👤 作者
**Karthickraja S**
渗透测试员 | 漏洞分析师 | eJPT 认证
[LinkedIn](https://linkedin.com/in/KARTHICKRAJA2005S) · [GitHub](https://github.com/karthickmessi)
标签:Flask, 可视化大屏, 后端开发, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数据可视化, 蜜罐, 证书利用, 请求拦截, 逆向工具