jhenrysec/CozyTurtle
GitHub: jhenrysec/CozyTurtle
CozyTurtle:用于生成、分析和检测混淆脚本的威胁狩猎实验室工具。
Stars: 0 | Forks: 0
# 🐢 CozyTurtle
## 概述
CozyTurtle 是一套用于生成、分析和检测混淆脚本的威胁狩猎实验室工具。其核心是 **Python 脚本混淆器/分析器** 和 **bash 脚本混淆器/分析器**,每个工具都可以生成混淆样本并对其进行反混淆/分析,揭示隐藏的有效负载,提取入侵指标,并将行为映射到 MITRE ATT&CK。
其目的是检测工程和分析师培训。与其研究真实的恶意软件,讲师或检测工程师可以使用已知技术生成受控的混淆样本库,然后运行分析引擎以验证检测是否触发,练习手动反混淆,并构建用于编写和调整规则的标记数据集。
包含一组样本有效负载工件(一个反向 shell 脚本、一个 shell 升级辅助工具和一个 systemd 服务单元),作为现实、设计为良性的输入,用于混淆、分析和检测。
## 包含内容
| 文件 | 类型 | 目的 |
|---|---|---|
| `python_obfuscator.py` | Python | Python 脚本混淆器 **+** 反混淆/分析引擎 |
| `bash_obfuscator.py` | Python | Bash 混淆器(原始) |
| `bash_obfuscator_v3.py` | Python | Bash 混淆器/分析器,扩展版 — 添加了批量、差异和监视模式 |
| `revShell.sh` | Shell | 作为测试输入使用的样本反向 shell 有效负载 |
| `ShellUpgrade` | Shell | 作为测试输入使用的 Shell/TTY 升级辅助工具 |
| `sys-update.service` | systemd 单元 | 样本服务单元 — 用于检测练习的持久性工件 |
| `LICENSE` | — | MIT 许可证 |
## 工具
### `python_obfuscator.py` — Python 混淆器 + 分析器
一个双用途工具:它生成混淆的 Python 样本并对其进行反混淆/分析。纯 Python 标准库,针对 Python 3.6+。
**混淆技术**(每个技术都附有它产生的检测签名):
| 技术 | 方法 | 检测签名 |
|---|---|---|
| `b64` | `base64.b64decode()` + `exec` | exec/eval 中的 base64 解码 |
| `hex` | `bytes.fromhex()` + `exec` | exec 中的 hex 块,绕过 base64 签名 |
| `zlib` | `zlib.decompress(base64.b64decode())` + `exec` | 压缩+编码组合,最小化足迹 |
| `vars` | 变量拆分,`exec(''.join([...]))` | 许多短字符串变量重新组装 |
| `unicode` | 稠密的 `\uXXXX` 转义字符串 + `exec` | unicode 转义绕过 ASCII 匹配 |
| `rot13` | `codecs.decode(..., 'rot_13')` + `exec` | exec 中的弱对称编码 |
| `bytearray` | `exec(bytearray([...]).decode())` | 字节级整数列表 |
| `lambda` | lambda IIFE 链包装 `exec` | 函数式风格的混淆 |
| `compile` | `compile()` 动态代码对象 + `exec` | 高级动态执行 |
| `multi` | 按顺序链式使用多个技术 | 堆叠的指标,模仿真实工具 |
**分析引擎**执行多遍反混淆(多达几轮解包),解析变量组装,解码每一层,然后:
- **恢复最终有效负载**通过解包嵌套编码并剥离 `exec`/`eval` 包装器
- **提取 IOCs** — IPv4、IP:port、URLs、域名、危险导入(`os`、`subprocess`、`socket`、`ctypes`、`pty`、…)、危险调用、文件路径和基于套接字的 C2 模式
- **映射到 MITRE ATT&CK**基于检测到的层和行为(见[覆盖率](#mitre-attck-coverage))
- **评分风险**0–100,带有 CRITICAL/HIGH/MEDIUM/LOW 标签,权衡混淆深度、C2 指标和危险调用/导入
- **渲染**彩色终端报告或 JSON 报告,供工具使用
**模式**:单个文件/内联混淆,单个文件/内联分析,**批量**目录扫描(递归),**差异**两个快照之间的差异,以及**监视**对目录的持续监控。
### `bash_obfuscator_v3.py` — Bash 混淆器 + 分析器
bash 的对应工具,针对 GNU bash 5.2。相同的生成和反混淆设计,具有 bash 特定的技术:
| 技术 | 方法 | 检测签名 |
|---|---|---|
| `b64` | base64 编码 + `eval`/`base64 -d` | `base64 -d \| bash` 或 eval+decode |
| `hex` | `printf '\xNN'` + `eval` | printf 十六进制序列 + eval |
| `vars` | 变量拆分,构建命令 | 许多短随机变量构建命令 |
| `ansi` | ANSI-C 引用 `$'\xNN'` 在命令词中 | 命令位置中的 `$'\x..'` |
| `ifs` | `IFS` 操作 + `read` 拆分 | 执行前的 IFS 重新分配 |
| `here` | heredoc 通过 bash 管道 | 带有 base64 内容的 heredoc 到 `bash` |
| `glob` | glob/通配符路径扩展(例如 `/???/b?sh`) | 异常的通配符进程路径 |
| `multi` | 链式层 | 堆叠的指标 |
其分析引擎解析变量,解码 ANSI-C/hex/base64/heredoc/IFS 层,标记需要运行时解析的 glob 路径,并提取以 bash 为中心的 IOCs — `/dev/tcp` 和 `/dev/udp` 重定向,`bash -i`/`sh -i` 交互式 shell,`nc`/`ncat`/`socat`,`curl|bash` / `wget|bash` 模式,内联解释器执行(`python -c`、`perl -e`、`php -r`),持久性/分离命令(`nohup`、`disown`),以及 SSH 远程转发使用。输出支持终端、JSON 和 **CSV**(用于 SIEM/电子表格摄入),以及批量/差异/监视工作流程,以跟踪样本集随时间的变化。
## 使用方法
### Python 工具
```
# 混淆
python3 python_obfuscator.py -f script.py -t all
python3 python_obfuscator.py -f script.py -t b64
python3 python_obfuscator.py --inline 'import socket; ...' -t all
python3 python_obfuscator.py -f script.py -t multi --layers 3
python3 python_obfuscator.py -f script.py -t all -o ./samples/
# 分析/去混淆
python3 python_obfuscator.py --analyze -f obfuscated.py
python3 python_obfuscator.py --analyze -f obfuscated.py --report -o ./reports/
# 批量/差异/监视
python3 python_obfuscator.py --batch ./samples/ --recursive --report -o ./reports/
python3 python_obfuscator.py --diff baseline.json ./new_samples/
python3 python_obfuscator.py --watch ./samples/ --interval 30
# 参考
python3 python_obfuscator.py --list-techniques
```
### Bash 工具
```
# 混淆
python3 bash_obfuscator_v3.py -f script.sh -t all
python3 bash_obfuscator_v3.py --inline '' -t b64
python3 bash_obfuscator_v3.py -f script.sh -t multi --layers 3
# 分析/去混淆
python3 bash_obfuscator_v3.py --analyze -f obfuscated.sh --report
python3 bash_obfuscator_v3.py --batch ./samples/ --recursive --report -o ./reports/
python3 bash_obfuscator_v3.py --watch ./samples/ --interval 30 --alert-only
# 参考
python3 bash_obfuscator_v3.py --list-techniques
```
## 要求
- **Python 3.6+**(仅标准库 — 无需 pip 软件包)
- **GNU bash 5.2.x** 用于运行/验证 bash 样本
- Linux 分析主机;强烈建议使用隔离的 VM 或实验室段
## 建议的实验室工作流程
1. **生成**跨所有技术及其少量 `multi --layers` 深度的标记混淆样本库。
2. **检测** — 运行您的 SIEM/EDR 规则、YARA 或 `grep` 基于的签名对库进行检测,并确认它们在每个技术签名上触发。
3. **分析** — 运行内置的分析器以恢复有效负载、提取 IOCs 并为每个样本生成 MITRE ATT&CK 映射的 JSON/CSV。
4. **调整** — 使用假阴性差距来细化检测;重新运行并与 `--diff` 进行比较,以衡量改进。
5. **监视** — 在样本投放文件夹上使用 `--watch` 以在教室环境中演示持续的检测。
## MITRE ATT&CK 覆盖范围
分析器将检测到的行为映射到 ATT&CK 技术,包括:
| 技术 | ID |
|---|---|
| 混淆的文件或信息 | [T1027](https://attack.mitre.org/techniques/T1027/) |
| — 二进制填充(base64/zlib 编码) | [T1027.001](https://attack.mitre.org/techniques/T1027/001/) |
| — 剥离有效负载(字符串拆分/组装) | [T1027.008](https://attack.mitre.org/techniques/T1027/008/) |
| — 命令混淆(eval / 动态代码) | [T1027.010](https://attack.mitre.org/techniques/T1027/010/) |
| 反混淆/解码文件或信息(ROT13) | [T1140](https://attack.mitre.org/techniques/T1140/) |
| 命令和脚本解释器 | [T1059](https://attack.mitre.org/techniques/T1059/) |
| — Unix Shell (`/dev/tcp`、`bash -i`) | [T1059.004](https://attack.mitre.org/techniques/T1059/004/) |
| — Python (`exec`/`eval`) | [T1059.006](https://attack.mitre.org/techniques/T1059/006/) |
| 应用层协议:Web 协议(C2) | [T1071.001](https://attack.mitre.org/techniques/T1071/001/) |
| 非应用层协议(原始 TCP) | [T1095](https://attack.mitre.org/techniques/T1095/) |
| 入侵工具传输 | [T1105](https://attack.mitre.org/techniques/T1105/) |
| 原生 API (`os` 模块) | [T1106](https://attack.mitre.org/techniques/T1106/) |
包含的样本 `sys-update.service` 单元作为 **创建或修改系统进程:systemd 服务** ([T1543.002](https://attack.mitre.org/techniques/T1543/002/)) 持久性工件,用于狩猎和检测练习。
## ⚠ 声明
**不要:**
混淆技术有意与它们的检测签名和可工作的分析引擎配对 — 目标是教育防御者这些技术看起来如何以及如何反混淆它们,而不是提供一个逃避工具包。负责任且合法地使用。
## 许可证
MIT 许可证 — 查看 [LICENSE](LICENSE).
[jhenry.io](https://jhenry.io).
标签:应用安全, 逆向工具