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 加载器, 大语言模型, 威胁情报, 开发者工具, 网络安全, 蜜罐技术, 逆向工具, 隐私保护