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).
标签:应用安全, 逆向工具