sumitxkothari/SSH-Honeypot-Analytics

GitHub: sumitxkothari/SSH-Honeypot-Analytics

基于 Cowrie 蜜罐的真实 SSH 攻击日志,通过统计分析与无监督机器学习生成威胁情报和攻击者行为画像。

Stars: 0 | Forks: 0

# 🔐 SSH 蜜罐威胁情报与行为分析 [![Python](https://img.shields.io/badge/Python-3.9+-blue)](https://python.org) [![scikit-learn](https://img.shields.io/badge/ML-scikit--learn-orange)](https://scikit-learn.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green)](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 | 结构化导出所有已解析事件,用于下游分析 | ## 📊 结果 ### 攻击分析仪表板 ![蜜罐分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ac2c9ed0a0054455.png) ### 攻击者行为聚类 (K-Means + PCA) ![攻击者聚类](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a817833f0f054500.png) ### 攻击者画像 | 聚类 | 行为模式 | 关键信号 | |---|---|---| | 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, 代码示例, 威胁情报, 安全, 开发者工具, 数据分析, 无后门, 机器学习, 蜜罐, 证书利用, 请求拦截, 超时处理, 逆向工具