sumitxkothari/SSH-Honeypot-Analytics
GitHub: sumitxkothari/SSH-Honeypot-Analytics
基于 Cowrie 蜜罐的真实 SSH 攻击日志,通过统计分析与无监督机器学习生成威胁情报和攻击者行为画像。
Stars: 0 | Forks: 0
# 🔐 SSH 蜜罐威胁情报与行为分析
[](https://python.org)
[](https://scikit-learn.org)
[](LICENSE)
## 📌 概述
本项目从基于 Cowrie 的生产环境蜜罐中捕获并分析了跨越 **8,860 个会话** 的 **42,934 起真实 SSH 攻击事件**,
通过统计分析和无监督机器学习生成可操作的威胁情报。
**本次部署的主要发现:**
- 来自 28 个国家/地区的 131 个独立攻击者 IP 发起了 7,619 次登录尝试
- 73% 的登录成功率(Cowrie 故意接受常见凭证以观察登录后的行为)
- 检测到 95 次恶意软件下载尝试和超过 7,400 次 TCP 隧道请求
- 通过 K-Means 聚类识别出 4 种不同的攻击者行为画像
## 🏗️ 架构
Cowrie SSH 蜜罐 (Docker)
↓
cowrie.json (原始日志,以会话为键的 JSON,超过 4.2 万起事件)
↓
SSHHoneypotAnalyzer 类
├── load_logs() ← 处理嵌套和行分隔的 JSON
├── parse_login_attempts() ← 构建 DataFrame (7.6K 行)
├── enrich_with_geolocation() ← ip-api.com 反向地理编码
├── analyze_attack_patterns() ← 分析热门国家、IP 和凭证
├── behavioral_clustering() ← KMeans (k=4) + 5 项特征的 PCA 降维
├── generate_visualizations() ← 4 窗格 matplotlib 仪表板
├── generate_report() ← 控制台威胁摘要
└── export_results() ← 输出 CSV
## ✨ 功能
| 功能 | 描述 |
|---|---|
| 日志解析 | 同时处理嵌套和行分隔的 Cowrie JSON 格式 |
| 地理位置 enrichment | 通过 ip-api.com 对攻击者 IP 进行反向地理编码(免费层级) |
| 行为聚类 | 基于每个攻击者 IP 的 5 项特征进行 K-Means (k=4) + PCA 降维 |
| 可视化 | 4 窗格攻击仪表板:国家、凭证、成功率、每小时时间轴 |
| 可疑命令检测 | 基于正则表达式标记登录后的攻击者命令(wget, curl, netcat 等) |
| 恶意软件下载追踪 | 捕获来自 cowrie.session.file_download 事件的所有文件下载 URL |
| TCP 隧道检测 | 通过 cowrie.direct-tcpip.request 事件识别跳板攻击尝试 |
| 导出 CSV | 结构化导出所有已解析事件,用于下游分析 |
## 📊 结果
### 攻击分析仪表板

### 攻击者行为聚类 (K-Means + PCA)

### 攻击者画像
| 聚类 | 行为模式 | 关键信号 |
|---|---|---|
| 0 | 大规模凭证扫描器 | 尝试次数多,独立密码数量多 |
| 1 | 定向 / 手动攻击者 | 尝试次数少,成功率高 |
| 2 | 自动化 bot 扫描器 | 凭证统一,快速连发时机 |
| 3 | 登录后操作者 | 数量少,包含身份验证后的命令 |
## 🧠 机器学习方法论
**聚类特征(针对每个独立的攻击者 IP):**
- `num_attempts` — 总登录尝试次数
- `unique_usernames` — 凭证多样性(用户名)
- `unique_passwords` — 凭证多样性(密码)
- `success_ratio` — 成功登录的比例
- `peak_hour` — 攻击发生的众数小时
在运行 K-Means 之前,所有特征均使用 `StandardScaler` 进行了标准化。
PCA 仅降维至 2 个主成分用于可视化——聚类是在完整的 5 维特征空间中运行的。
## 🚀 安装与使用
### 前置条件
```
pip install -r requirements.txt
```
### 运行分析
```
# 将你的 Cowrie 日志放在 logs/cowrie.json
python analysis.py
```
### 输出
结果将保存到 `results/` 目录:
- `honeypot_analysis.png` — 4 窗格攻击可视化
- `attacker_clusters.png` — PCA 聚类散点图
- `login_attempts.csv` — 所有 7,619 起已解析的登录事件
- `analysis_summary.csv` — 关键指标摘要
## 🗂️ 项目结构
├── analysis.py # 主分析流水线 (SSHHoneypotAnalyzer 类)
├── requirements.txt # Python 依赖
├── LICENSE # MIT 许可证
├── logs/ # 将 cowrie.json 放置在此处(未提交——见下文)
└── results/ # 生成的输出(PNG、CSV)
## 📁 数据
由于文件大小,`logs/cowrie.json` 文件(60MB)已从该仓库中排除。
**下载示例数据集:** [https://drive.google.com/drive/u/0/folders/1HopIr6g7OTa9mjAUeNFJ_Ylp9kVW2z-x]
或者部署您自己的 Cowrie 实例,并将 `analysis.py` 指向您的日志文件。
**数据隐私:** 日志中的攻击者 IP 已被 Cowrie 进行 SHA-256 哈希处理。凭证均由
攻击者提交(不包含真实的用户 PII)。
## 🔭 未来增强计划
- [ ] 用于交互式威胁探索的 Streamlit 仪表板
- [ ] MITRE ATT&CK 框架 TTP 映射
- [ ] 集成 AbuseIPDB / VirusTotal IP 信誉
- [ ] 带有实时告警的实时日志追踪
- [ ] 使用 DBSCAN 进行基于密度的攻击者画像比较
- [ ] 绘制攻击国家的 Plotly Choropleth 世界地图
## 👤 作者
**Sumit Kumar**
GitHub: [sumitxkothari](https://github.com/sumitxkothari)
LinkedIn: [www.linkedin.com/in/sumit-kothari-ba18002b7/](https://www.linkedin.com/in/sumit-kothari-ba18002b7/)
标签:Apex, PE 加载器, Python, 代码示例, 威胁情报, 安全, 开发者工具, 数据分析, 无后门, 机器学习, 蜜罐, 证书利用, 请求拦截, 超时处理, 逆向工具