ipentanpaul/cowrie-ai
GitHub: ipentanpaul/cowrie-ai
该项目通过 GPT-4 驱动的 LLM 分析管道增强 Cowrie SSH 蜜罐,将原始攻击日志自动转化为带风险评分和摘要的威胁情报,大幅减少安全分析师的人工审查工作量。
Stars: 0 | Forks: 0
# AI 增强的 SSH 蜜罐 — 自动化威胁情报与分析师工作流
MSc 网络安全学位论文项目(赫特福德大学,2025),作者 **Ogooluwa Paul Ipentan**。
部署在 AWS EC2 上的 Cowrie SSH 蜜罐,通过基于 LLM (GPT-4) 的日志分析 pipeline 进行增强,将原始攻击日志转化为分析师可直接使用的威胁情报:通俗易懂的会话摘要、1–5 级风险评分、攻击类别、Streamlit 仪表板,以及针对严重会话的实时 Telegram 警报。
## 核心结果(为期 4 周的在线部署)
| 指标 | 数值 |
|---|---|
| 捕获的攻击者会话 | **103,666** |
| 蜜罐成功登录次数 | ~102,076 |
| 独立攻击 IP 数 | ~8,000 |
| 捕获的恶意软件样本 | 5(经 VirusTotal 确认的 Mirai / Gafgyt 变种) |
| 被 LLM 标记为高风险的会话 | **20 (0.02%)** — 全部验证为真阳性 |
| 分析师审查量缩减率 | **~5,000×** |
| LLM 与人工审查的一致性 | 96%(100 个会话样本) |
| ML 基线(逻辑回归) | 默认阈值下 100% 召回率,<1% 精确率 |
与经典的 scikit-learn 基线进行的对比,量化了为什么上下文 LLM 分析至关重要:逻辑回归模型虽然捕获了每一个事件,却让分析师陷入 411 个假阳性的泥潭之中;而 LLM 仅筛选出真正重要的会话——并且为每一个会话附上了详细的解释。
## 架构
```
Attackers (Internet)
│ SSH traffic (port 22 → 2222 via iptables)
▼
Cowrie honeypot (AWS EC2, JSON logs)
│
├─► ETL: etl/batch_analyze.py → exports/sessions.csv
│
├─► LLM analysis: ai/llm_enrich_sessions.py (GPT-4 API)
│ → summary, risk 1–5, category per session
│
├─► ML baseline: ml/train_classifier.py (logistic regression)
│ → binary high/low-risk prediction
│
├─► IP enrichment: intel/enrich_ip.py (GeoIP country/ASN)
│
├─► Dashboard: app/dashboard.py (Streamlit)
│
└─► Alerts: alerts/alert_high_risk.py (Telegram, risk ≥ 4)
```
## 仓库结构
```
cowrie-ai/
├── etl/batch_analyze.py # Cowrie JSON logs → per-session CSV
├── ai/llm_client.py # GPT client + offline heuristic fallback
├── ai/llm_enrich_sessions.py # Batch LLM enrichment of sessions
├── intel/enrich_ip.py # GeoIP country/ASN enrichment
├── ml/features.py # Feature engineering from session commands
├── ml/train_classifier.py # Logistic regression baseline
├── ml/tune_threshold.py # Precision/recall threshold tuning
├── ml/predict.py # Apply trained model to all sessions
├── app/dashboard.py # Streamlit analyst dashboard
├── alerts/alert_high_risk.py # Telegram alerting for critical sessions
├── util/refresh.sh # One-command pipeline refresh
├── requirements.txt
└── .env.sample
```
## 设置
1. **部署 Cowrie**(Ubuntu,Python 3.9+)。在端口 2222 上运行并重定向端口 22:
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
启用 JSON 日志记录(`cowrie.cfg` 中的 `[output_jsonlog]`)并设置 `download_path` 以进行文件捕获。
2. **安装 pipeline 依赖项:**
python3 -m venv ~/.venv && source ~/.venv/bin/activate
pip install -r requirements.txt
3. **配置环境:** 将 `.env.sample` 复制为 `.env`,并设置您的 OpenAI key、Cowrie 日志目录、GeoLite2 数据库路径和 Telegram bot token。
4. **运行 pipeline:**
bash util/refresh.sh
streamlit run app/dashboard.py --server.port 8501
## 仪表板
KPI 卡片(总会话数、登录次数、命令数、下载量)、攻击时间轴图表、AI 风险分布、攻击类别、高频攻击 IP/国家、近期会话表,以及 LLM 与 ML 高风险判定一致性视图。
## 伦理与安全声明
- 中等交互蜜罐:攻击者命令是**模拟执行的,绝不在宿主 OS 上实际运行**;出站流量已被防火墙拦截。
- 捕获的恶意软件样本均被隔离存储,并且仅通过 VirusTotal 进行分析。
- LLM 的输出仅作为**参考**——所有高风险分类在任何响应措施采取之前,均已通过人工对照原始日志进行了验证。
- 不涉及任何合法用户的个人数据;所有捕获的流量均为未经请求的攻击流量。
## 学位论文
完整论述(方法论、结果、伦理、可复现性):*AI-Enhanced SSH Honeypot: Automated Threat Intelligence & Analyst Workflow*,MSc 网络安全,赫特福德大学,2025。
📄 **[阅读完整学位论文 (PDF)](docs/AI-Enhanced-SSH-Honeypot-Dissertation.pdf)**
标签:DLL 劫持, Elastic, Kubernetes, Petitpotam, PE 加载器, 大语言模型, 威胁情报, 开发者工具, 网络安全, 蜜罐技术, 逆向工具, 隐私保护