K4ryuu/odyssey-stealer-scanner

GitHub: K4ryuu/odyssey-stealer-scanner

针对macOS平台上Odyssey Stealer等信息窃取器的静态分析工具,可通过解密MLCG XOR载荷来提取C2服务器和IOC情报。

Stars: 0 | Forks: 0

# Odyssey Stealer 扫描器 一个用于在 DMG 文件中检测 **Odyssey Stealer** 及相关 macOS 信息窃取器变体的静态分析工具——无需执行任何文件。 ## 背景 Odyssey Stealer 是一款针对 macOS 的 **恶意软件即服务 (MaaS)**,在地下论坛以每月约 3,000 美元的价格出售。它是 Poseidon Stealer 的重新品牌,而 Poseidon Stealer 本身则是从 Atomic macOS Stealer (AMOS) 分叉而来。该恶意软件通过木马化软件包分发——上传到种子站点的破解应用、假冒的 warez 网站以及 Telegram 频道。目标涵盖创意、生产力和设计软件类别。 一旦执行,它会收集并外泄: - 浏览器凭据、Cookie 和自动填充数据(Chrome、Firefox、Safari、Brave、Edge 等) - 加密货币钱包数据(Exodus、Electrum、Atomic、Ledger、Trezor 等) - macOS Keychain 内容 - Apple Notes - Telegram 会话数据(`tdata`) - 系统信息 所有收集的数据会被压缩并通过 `curl -X POST /log` 发送到 C2 服务器。 该恶意软件还会安装 **LaunchDaemon** 以实现持久化(重启后仍可存活),并可选择下载额外的僵尸网络载荷。 ## 此工具的工作原理 此扫描器执行 **100% 静态分析**——它永远不会执行恶意软件或 DMG 的任何部分。它的工作流程如下: 1. 使用 `hdiutil` 以只读方式挂载 DMG(无执行风险) 2. **扫描 OGF 二进制文件**——Odyssey Stealer 隐藏的 "Open Gatekeeper Friendly" Mach-O 文件 3. 使用 `otool` 反汇编 ARM64 二进制文件,并直接从汇编代码中提取密码参数 4. 使用恢复的密钥材料解密载荷 5. 从解密的 AppleScript 载荷中提取 IOC(C2 域名、构建 ID、活动 ID、目标应用) 6. 扫描 PKG 文件中嵌入的释放器应用(例如 Ableton 风格变体) 7. **报告判定结果**:感染 / 可疑 / 干净 ### 密码算法 Odyssey Stealer 使用 **MLCG(乘法线性同余生成器)XOR 流密码**在 `__TEXT,__const` 中加密其 AppleScript 载荷: ``` state = seed for each byte: decrypted = encrypted_byte XOR xor_const XOR (state & 0xFF) state = (state * multiplier) % modulus ``` 以下是已知的密码算法变体: **变体 1 — 独立的 `crypt()` 函数**(早期构建): - 参数从两个符号中提取:`__Z5crypt`(xor_const、num_bytes)和 `mlcg::prng`(乘数) - **种子** 在调用 `crypt()` 之前加载到 `w1` 中 - **乘数** = 72651(`0x11bcb`) - **模数** 来自嵌入的构建时间戳字符串(例如 `"13:09:59"` → `13*3600 + 9*60 + 59`) **变体 2 — 内联密码循环**(后期构建): - 没有独立的 `crypt()` 符号——所有参数都内联在 `main()` 中 - **种子** 在 `_bzero` 之后通过 `mov wN, #seed` 初始化(不是在之前) - **xor_const** 来自 `eor wN, wN, #const` 指令(不是 `mov`) - **乘数** = 14213(`0x3785`),通过 `mul` 指令寄存器追踪找到 - **模数** 硬编码(无时间戳字符串),通过 `msub` 寄存器追踪找到 **变体 3 — 十六进制偏移编码**: - 无 MLCG 密码——`__const` 中的每个 4 字节小端序字编码一个十六进制字符:`char = (word + 0x20) & 0xFF` - 生成的十六进制字符串解码为 shell 命令 **变体 4 — 散列表**: - `__const` 包含 8 字节条目:`[int32 position, int32 hex_char]` - 条目按索引位置组装成十六进制字符串,解码为 shell 命令 ## 需求 - macOS(使用 `hdiutil`、`otool`、`strings`、`codesign`、`pkgutil`) - Python 3.10+ - 无第三方依赖 ## 使用方法 ``` python3 scanner.py /path/to/file.dmg ``` ### 示例输出(感染文件) ``` ========================================================== Odyssey Stealer Scanner File: SketchUp_2024_598-243_(24.0.598)_[TNT].dmg ========================================================== ────────────────────────────���───────────────────────────── OGF Binary Detection ────────────────────────────────────────────────────────── [!] OGF binary: /Volumes/.../Open Gatekeeper Friendly SHA256: dd7dbbb66ff8453aff457e8ae74c9b0e1987c6106d2ad3f58435d7af5d49dc09 [+] Cipher: hex-offset variant (4-byte word + 0x20 → hex char) [!] C2: [redacted - you can see it in the actual output] ────────────────────────────────────────────────────────── VERDICT ────────────────────────────────────────────────────────── !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! INFECTED — info stealer detected !! !! C2: [redacted - you can see it in the actual output] !! !! DELETE THIS FILE !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ``` ### 示例输出(干净文件) ``` ────────────────────────────────────────────────────────── VERDICT ────────────────────────────────────────────────────────── [CLEAN] No known malicious components found. ``` ## 提取的 IOC 对于每个感染文件,扫描器会报告: - **C2 服务器** 域名和 URL - **外泄端点**(`POST /log`) - **构建 ID**(32 字符十六进制,作为 HTTP 头发送) - **活动 ID**(操作者标识符,例如 `newooble`) - **持久化机制**(LaunchDaemon) - **目标浏览器和加密货币钱包** - **Keychain、Notes、Telegram** 窃取指标 ## 归因 Odyssey Stealer 归因于威胁参与者 **"Rodrigo4"**,他是原始 Atomic macOS Stealer 的合著者。该恶意软件在 XSS.is 地下论坛销售(2025 年 7 月被法国和乌克兰执法部门取缔)。`newooble` 标识符作为活动/操作者 ID 出现在解密的载荷中。 ## 参考资料 - [Odyssey Stealer: Inside a macOS Crypto-Stealing Operation — Censys](https://censys.com/blog/odyssey-stealer-inside-a-macos-crypto-stealing-operation/) - [ODYSSEY STEALER: THE REBRAND OF POSEIDON STEALER — CYFIRMA](https://www.cyfirma.com/research/odyssey-stealer-the-rebrand-of-poseidon-stealer/) - [Evolution of macOS Odyssey Stealer — Jamf](https://www.jamf.com/blog/signed-and-stealing-uncovering-new-insights-on-odyssey-infostealer/) - [MaaS Appeal: An Infostealer Rises From The Ashes — Elastic Security Labs](https://www.elastic.co/security-labs/maas-appeal-an-infostealer-rises-from-the-ashes) - [Distinguishing Atomic, Odyssey, and Poseidon stealers — Red Canary](https://redcanary.com/blog/threat-intelligence/atomic-odyssey-poseidon-stealers/) ## 免责声明 此工具仅用于**防御性安全研究**。它执行只读静态分析,从不执行恶意软件。请负责任地使用。
标签:APFS, AppleScript分析, ARM64逆向, C2通信检测, DAST, DMG分析, HTTP工具, IOC提取, IP 地址批量处理, LaunchDaemon检测, Mach-O分析, macOS安全, OdysseyStealer, otool, XOR解密, 云安全监控, 信息窃取, 威胁情报, 开发者工具, 恶意软件分析, 恶意软件扫描, 数据包嗅探, 流量嗅探, 载荷解密, 静态分析