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解密, 云安全监控, 信息窃取, 威胁情报, 开发者工具, 恶意软件分析, 恶意软件扫描, 数据包嗅探, 流量嗅探, 载荷解密, 静态分析