PamStealer 新变种:假钱包站投毒,载荷解密绑死 C2 服务器

Jamf 威胁实验室披露了 macOS 窃密木马 PamStealer 的一个新变种。与前两版不同,这一版把载荷解密的关键环节搬到了攻击者服务器上:恶意程序必须与命令控制(C2)服务完成一次 X25519 密钥交换,才能拿到解密密钥。安全研究员 Thijs Xhaflaire 的评价是,没有服务器配合,载荷无法通过静态分析还原。

事件概述

  • 传播入口:假冒的多链加密钱包网站 wavel.app,站内宣传一个并不存在的钱包产品 Wavel。
  • 感染载体:下载得到 Wavel.dmg,其中包含一个编译后的 AppleScript 文件。由于 Finder 默认隐藏扩展名,用户在打开前很难识别文件类型。
  • 变种序列:这已是第三个已知变种,7 月与 8 月的版本伪装成 Maccy、Scoppr、Nancy Clipboard 等剪贴板工具。
  • 影响确认:Jamf 在受控环境中观察到窃密程序完成打包并外传,报告未给出受害者数量与损失。

技术细节

早期版本的 JXA 投放器内嵌 RC4 密钥,直接完成解密、载荷释放与暂存。新变种把 JXA 层削成了纯载体:它只解出一条 Base64 字符串,管道交给 /bin/zsh -s 执行,随后进程立即退出,后续动作全部在后台 zsh 中完成。

后台脚本从 wavel.apple03cloudstore.com 下载名为 pkgunpack 的解密工具,与其进行 X25519 密钥交换。由于私钥保存在服务器侧,且每次执行都生成新的临时密钥对,即便截获过一次解密结果也无法重放。这让沙箱一次性引爆只能拿到加密数据块,静态匹配对第二阶段基本失效。

持久化设计了四层冗余:LaunchAgent、负责恢复的 zsh 脚本、追加到 ~/.zshrc 的 shell 钩子,以及写入 ~/Library/Application Support/System/.githooks/ 的 Git 钩子。木马同时设置 git config –global core.hooksPath 指向该目录,此后任何仓库执行 git checkout 或 git commit 都会静默触发修复脚本。

最终阶段改用 Swift 编写(此前为 Rust),能力包括伪造崩溃弹窗套取系统密码并经 PAM 校验、枚举钥匙串条目、窃取浏览器凭据与 Cookie、收集 shell 历史与 .gitconfig、列举运行进程与已安装应用。目标浏览器扩展到 14 个以上,除 Chrome、Edge、Firefox 等主流产品外,还覆盖 Arc、Zen、Waterfox、LibreWolf、Yandex 与 Cốc Cốc,明显偏向开发者与隐私敏感用户群体。

影响评估

这一版的重心是运营韧性而非技术新颖度。它假设研究者能拿到样本,于是让样本本身不含可解密内容;它假设用户会尝试清除组件,于是让 shell 会话与 Git 操作都能自动恢复。对以 macOS 为主的研发团队,它既能拿到钥匙串与浏览器凭据,又能长期驻留,横向风险高于常见商品化窃密程序。

修复建议

  • 不要从非官方渠道下载加密钱包、剪贴板工具等 macOS 应用,警惕要求按提示执行脚本的安装流程。
  • 检查 ~/.zshrc 尾部与 ~/Library/Application Support/System/.githooks/ 目录,确认无异常钩子,并核对 core.hooksPath 配置。
  • 检测重心放在行为面:git config 被篡改、AppleScript 拉起 zsh 的调用链、以及指向可疑域名的出站流量。
  • 确认主机曾感染后,应从干净的设备重置已暴露的密码与密钥串。

参考来源