别打电话给我们,我们会调用你们的 API|TraderTraitor 后门在无加密货币关联受害者上再现

别打电话给我们,我们会调用你们的 API|TraderTraitor 后门在无加密货币关联受害者上再现

原文标题: Don’t Call Us, We’ll Call Your APIs | TraderTraitor Backdoors Resurface on Victim With No Crypto Ties
原文链接: https://www.sentinelone.com/labs/dont-call-us-well-call-your-apis-tradertraitor-backdoors-resurface-on-victim-with-no-crypto-ties/
作者: Albert Priego, Alex Delamotte & Matej Havranek
原文发布日期: 2026-09-18
译文说明: 全文简体中文翻译(非摘要)。IOC、哈希、域名、URL、恶意软件名、API 名、代码、命令、路径等保持英文原文。
翻译日期: 2026-09-21(Asia/Shanghai)

免责声明: 本译文为非官方简体中文翻译,仅供安全研究与防御学习参考。版权归 SentinelOne / SentinelLABS 及原作者所有。如有歧义,以英文原文为准。

封面

图:文章封面 — TraderTraitor APIs


执行摘要

概述

贯穿 2026 年,受财务动机驱使、由朝鲜民主主义人民共和国(DPRK)国家支持的 Lazarus 子群 TraderTraitor(亦称 UNC4899、PUKCHONG、Jade Sleet)持续开展针对加密货币交易相关实体的行动,其中包括 4 月披露的一起高调攻击:通过沦陷 LayerZero,从 KelpDAO 窃取了 2.92 亿美元。

KelpDAO 是支持以太坊再质押(restaking)的去中心化金融(DeFi)协议;LayerZero 提供可在不同区块链平台间交换加密货币的服务能力。

TraderTraitor 沦陷 LayerZero 后,找到了制造虚假加密货币铸造(minting)事件的方法;攻击者将其与针对验证服务器的 DDoS 相结合,使被攻陷的服务器批准非法铸造事件,从而导致大规模盗窃。

该事件公开披露后,SentinelOne 识别出另一名受害者感染了 macOS 后门 FLATROOF(亦称 macOS.Gaslight)与 ROOFDECK——二者最早在 LayerZero 攻击中被观察到。

与此前高调的受害者不同,本次目标是一家规模小得多的 IT 服务行业组织。我们的调查揭示了:当该威胁行为体沦陷一家较小组织时会发生什么;我们相信,该组织最终未能提供足以维持入侵的价值。

被武器化的 Terraform 编程项目

与本轮活动相关的每次行动,均通过虚假面试诱饵进行社会工程——这是 DPRK 行为体常见的传统 Contagious Interview 手法。攻击者与最终被沦陷公司的求职者建立联系;我们识别到的每位目标求职者的 GitHub 资料,均属于 DevOps 或加密货币/金融科技工程类项目。

编程项目诱饵的 GitHub 仓库主题,被设计为与 DPRK 行为体所伪装公司相关的基础设施工程项目。通过从 LayerZero 事件报告中共享的 gtn-candidate-repo 仓库进行关联分析,我们识别出更多诱饵,其中包括对 Northwind 与 Novacart 等公司的引用。

目前尚不清楚这些是威胁行为体虚构的公司,还是他们伪装成同名真实公司的招聘团队;一个 Northwind 示例将其描述为即将上线的电商公司。我们识别到的其他仓库名称包括:

图1

图:GitHub 仓库中的面试任务,包含被武器化的 .terraform.lock.hcl 文件

这些仓库在编程项目中包含被武器化的 .terraform.lock.hcl 文件,其中自定义 provider 指向攻击者控制的域名。我们在多个仓库中识别出三个恶意 provider 域名:

registry.hashicorp-aws[.]com
registry.hashicorp-aws[.]io
registry.hashicorp-terraform[.]io

当受害者在已放置武器化锁文件的情况下运行 terraform init 时,Terraform 会将自定义 provider 视为可信来源,从而导致 Terraform 下载并执行恶意 provider 模块。

开发者的安全意识可对此类攻击形成阻力:在一个仓库中,被面试的候选人添加了一条备注,称其已从项目原始锁文件中移除了一个仿冒(typosquatted)provider,这可能表明他们认为面试官在测试其安全意识。

图2

图:被武器化的 GitHub 仓库中,使用仿冒 provider 域名的武器化 .terraform.lock.hcl 文件

据 LayerZero 报告,攻击者在一名员工于公司工作站上安装了被武器化的面试编程项目后,安装了 FLATROOF 与 ROOFDECK macOS 后门。TraderTraitor 利用这些后门从该组织收集 API 密钥,并提升权限以扩展进入受害者的 Amazon Web Services 与 Google Cloud Platform 环境。

虽然我们对所定位的 GitHub 仓库后续导致的许多感染缺乏深入了解,但 SentinelOne 通过在遥测数据中狩猎 LayerZero 攻击中观察到的 macOS 后门,识别出一名无关受害者。

受害者

受影响组织是一家总部位于印度、与加密货币无关联的 IT 服务提供商。涉及一台终端:属于一名 DevOps 工程师的 Apple Silicon MacBook。该工程师在大多数工作日对 AWS、OVH 与 OpenStack 运行 Terraform 与 Ansible,机器上持有云凭据与源代码控制访问权限——与 LayerZero 的“Developer1”非常相似。社交媒体资料宣传其从事基础设施或 DevOps 工作的个人,都是此类攻击的潜在目标,而目标的价值取决于其笔记本电脑能够触及的范围。

感染时间线

根据该主机上的遥测数据,两个后门早在 3 月 18 日即已存在于磁盘上,因此我们无法证明其投递方式。它们一直处于休眠状态,直至 3 月 29 日开始出现信标与主机活动。

时间戳(UTC) 活动 细节 / 证据
2026-03-18 FLATROOF + ROOFDECK 存在 根据遥测数据,在受害机器上发现 FLATROOF 与 ROOFDECK 哈希
2026-03-25 至 2026-03-28 休眠阶段 Cursor 每日活跃使用。未见恶意活动。
2026-03-29 05:00:41 打开工作区 开发者在 Cursor 中打开 ~/DevOps-Automation/cloudshield
2026-03-29 05:00:46 Shell 生成 Cursor 集成终端生成登录 shell(zsh -l)+ Node 主机
2026-03-29 05:00:53 首次观察到执行 Cursor 启动两个植入体:nohup …/SystemUpdate –type=renderer 以及 nohup …/iSync –type=renderer
2026-03-29 05:00:55 C2 连接 SystemUpdate => technicais(176[.]97.114.232),iSync => hubpage(45[.]11.59.140),05:00:58 连接 Telegram
2026-03-29 05:00:58 植入体重装/再武装 对 iSync 执行 xattr -rd com.apple.quarantine + chmod +x(GatekeeperBypass)
2026-03-30 至 2026-04-19 稳定信标 受 Cursor 会话门控;仅在 Cursor 运行时 FLATROOF/ROOFDECK 才发出信标(Cursor 关闭时安静)
2026-04-13 GitHub 诱饵 开发者通过 GitHub Desktop 克隆 terraform-candidate-repo
2026-04-14 18:25 植入体重装/再武装 FLATROOF 再次武装 ROOFDECK(重新剥离隔离属性,chmod +x)
2026-04-20 08:48:59 第三阶段暂存 ROOFDECK 从 85[.]137.56.10 暂存,取回第三阶段 loginwindow(LayerZero 公开声明一天后)
2026-04-20 08:49:38 第三阶段 C2 连接 loginwindow 上线 => grenight[.]com(85[.]137.56.245)
2026-04-20 13:15:11 反取证 loginwindow 删除两个原始植入体(rm -f)
2026-05-03 至 2026-06-01 第三阶段恢复 loginwindow 持续向 grenight[.]com(85[.]137.56.245)发出信标
2026-06-01 06:08 最后观察到的 C2 所收集遥测中 loginwindow 向 grenight[.]com 发出的最终信标

植入体于 3 月 29 日由 Cursor 首次启动,发生在 cloudshield 工作区被打开后数秒。

时间戳(UTC) 活动类型 细节
2026-03-29 05:00:41 进程创建 Cursor Helper(node),首次引用 cloudshield 工作区
2026-03-29 05:00:45 文件创建 ~/.cursor/projects/…-cloudshield/terminals/1.txt(集成终端)
2026-03-29 05:00:46 进程创建 bash –init-file …/shellIntegration-bash.sh
2026-03-29 05:00:47 进程创建 zsh -l(登录 shell => 加载 ~/.zshrc/.zprofile)
2026-03-29 05:00:53 进程创建 Cursor(父进程 launchd)=> nohup …/com.apple.iTunesCloud/SystemUpdate –type=renderer
2026-03-29 05:00:53 进程创建 Cursor(父进程 launchd)=> nohup …/com.apple.internal.ck/iSync –type=renderer

macOS 恶意软件

我们在此次沦陷中观察到两个被部署的恶意软件家族,与 LayerZero 攻击中描述的相同,由 LayerZero 与 Mandiant 命名为 FLATROOF 与 ROOFDECK。二者均为用 Rust 编写的 macOS ARM64 后门。

FLATROOF

我们观察到 FLATROOF 后门以 SystemUpdate 为名部署到 ~/Library/com.apple.iTunesCloud/SystemUpdate。它很可能旨在对受害机器进行初始数据收集,并部署二级载荷。

启动后,FLATROOF 立即通过从 ROOFDECK 移除 com.apple.quarantine 属性并为其设置可执行位来抑制 Gatekeeper;第二个植入体在无签名检查、无用户提示的情况下运行。

xattr -rd com.apple.quarantine .../com.apple.internal.ck/iSync
chmod +x .../com.apple.internal.ck/iSync

SentinelLABS 于 2026 年 6 月发布了对 FLATROOF(亦称 macOS.Gaslight)的详细分析。此处我们按其支持的 C2 命令,简要总结该后门的能力:

动词 功能
help 显示命令帮助
id 向操作员标识该植入体
shell 通过 execvp 执行 shell 命令,posix_spawnp 可作为替代生成路径
kill 按 PID 终止目标进程
upload 通过 Telegram 文件附件机制外泄文件
stop 停止植入体

该后门还携带一个数据采集 Python 模块,用于收集以下数据,并通过内置 Telegram bot token 经 Telegram 外泄:

ROOFDECK

ROOFDECK 充当更复杂的后门,具备更广泛的侦察与横向移动能力。我们观察到它以 iSync 为名投放至 ~/Library/com.apple.internal.ck/iSync。

从植入体的设计可以清楚看出,它旨在初始立足点与控制建立之后作为额外部署使用,因为它需要一个预先存在的配置文件,其中至少包含攻击者控制档案的 Nostr 公钥,以便首次连接到其 C2 服务器。

ROOFDECK 使用本地配置文件 ~/.config/.repl_history 存储 C2 URL 与密钥,并设置信标行为。

字段 类型 含义
server_url string 已解析/被覆盖的 C2 URL(在死信投递解析之前为空)
connection_type string http|ws 传输选择器(HTTPS /app_version 对比 pipe-airway WebSocket)
nostr_public_keys array of strings 用于死信投递查找的操作员 Nostr 身份公钥
recovery_url string 回退/恢复端点(主 C2 丢失时用于引导)
pastebin_key string Pastebin 风格死信投递的密钥/粘贴 ID(二级解析器)
rsa_private_key string 预置到代理中的 RSA 私钥
config_path_macos string macOS 上配置位置的相对路径覆盖
interval integer (seconds) 信标/轮询间隔

首次执行时,它从 api.nostr[.]watch/v1/online 拉取在线 Nostr 中继,并与属于合法 Nostr 服务的硬编码中继列表合并,然后根据配置文件 nostr_public_keys 中给出的公开档案密钥,在 Nostr 网络上搜索操作员档案。找到后,读取档案的 website 字段并将其用作 C2 URL。TraderTraitor 此前已使用过 Nostr。

以下是用于操作员档案发现的 Nostr 中继列表:

wss://relay.damus[.]io
wss://nos[.]lol
wss://nostr[.]mom
wss://relay.snort[.]social
wss://offchain[.]pub
wss://relay.nostr[.]band
wss://nostr.oxtr[.]dev
wss://nostr[.]wine

持久化通过 plist 条目 ~/Library/LaunchAgents/loginwindow.plist 实现,并带有动态指定的应用程序标识符字符串。它使用硬编码的 --type=renderer 参数,使植入体进程看起来合法。

图3

图:用于持久化的 Plist,<IDENTIFIER> 与 <EXECUTABLE_PATH> 在运行时插入

ROOFDECK 支持多种 C2 命令,用于管理植入体、执行侦察、外泄数据以及执行攻击者代码。C2 端点硬编码为 /app_version。命令轮询通过 HTTPS 完成,植入体中嵌入了自定义固定 TLS 证书,如下所示。

有趣的是,恶意软件作者使用了 mkcert 的默认元数据设置,从而暴露出他们运行在一台基于 Linux QEMU 的虚拟机上,用户名为 ub。我们识别出多个使用包含该证书 CN 的证书的域名(列于妥协指标部分)。

Subject = Issuer (self-signed):
    O  = mkcert development CA
    OU = ub@ub-Standard-PC-Q35-ICH9-2009
    CN = mkcert ub@ub-Standard-PC-Q35-ICH9-2009
Serial:    1CD6D13FF15ADBF7A42025D10EC99B4A
Key:       RSA 3072-bit
Validity:  2025-06-20 11:06:53 UTC -> 2035-06-20 11:06:53 UTC  (10-year mkcert default)

ROOFDECK 命令由操作员私钥签名,并在执行前使用嵌入的公钥验证其完整性。命令功能在源代码中分离为不同的处理程序。该植入体重新实现了许多与目录及文件操作相关的常见 shell 命令——这是更复杂的朝鲜对齐工具集中经常使用的另一项战术,包括 Lazarus 的 LightlessCan。

命令 处理程序 描述 / 有趣要素
session — 管理 C2 会话生命周期(代理注册/密钥协商、连接、任务循环)。
config modules/config.rs config <key> — 实时设置运行时配置并持久化到配置文件。允许操作员在部署后重新指向 C2/传输。
sleep — sleep [-r] <seconds> — 睡眠 N 秒或随机间隔(-r)
tasks modules/task.rs 管理后台任务(正在进行的命令执行),列出并取消它们。任务状态:PENDING/RUNNING/COMPLETED/FAILED/DOWNLOADING/UPLOADING。
app_version — 从 HTTPS /app_version 端点拉取已签名+加密的命令;在 EncryptedCommand 解密为 AgentCommand 之前进行 RSA-2048 验证。同时作为版本/更新检查与回退任务通道。
persist — persist <add|remove|check>。add 安装 ~/Library/LaunchAgents/<com.*>.plist(Chrome-renderer 伪装,RunAtLoad);remove 删除它;check 报告 Is enabled: <bool>。
update — update <url> — 下载新二进制并自更新。
destroy modules/recovery.rs 自毁 — 卸载持久化、配置与二进制(由 yes 确认令牌保护)。

执行

命令 处理程序 描述 / 有趣要素
run handlers/run.rs run <command> [background] — 生成任意程序(原生 posix_spawnp/execvp),返回输出;支持后台模式(通过 tasks 跟踪的长时任务)。
shell handlers/shell.rs 通过 PTY(openpty)的交互式 shell,经 C2 传输流式传输。
rssh handlers/rssh.rs 反向 shell — 启动/停止回连操作员的有状态反向 shell。
kill handlers/kill.rs 按 PID 终止进程。

文件系统 / 数据

命令 处理程序 描述 / 有趣要素
cd / pwd — 更改 / 打印代理的工作目录。
ls handlers/ls.rs 目录列表(名称、大小、时间戳、权限)。
find handlers/find.rs 在 src 根下按模式递归搜索文件,返回匹配文件,用于定位高价值数据(钱包、密钥、文档)以便外泄。
cat / tail handlers/tail.rs 读取整个文件 / 尾部读取文件末尾(例如日志)。
stat — 显示文件元数据(大小、模式、所有者、时间戳)。
cp / mv / rm — 复制(copyfile/fclonefileat)/ 移动(rename)/ 删除(unlink)文件。
mkdir / mkfile — 创建目录 / 创建(写入)文件 — 用于投放载荷或写入暂存数据。
chmod / chown — 更改文件权限 / 所有权(chmod/chown)。
zip / unzip — 创建/解压归档,包括 AES 加密 zip(zip 4.3.0,zipcrypto/aes.rs)。用于暂存加密外泄包或解包已下载归档(例如下一阶段载荷)。

传输

命令 处理程序 描述 / 有趣要素
upload handlers/upload.rs 将本地文件外泄至 C2。
wget handlers/wget.rs 从 URL 下载文件到磁盘(reqwest),用于第二阶段/工具投递。

侦察 / 监视

命令 处理程序 描述 / 有趣要素
info handlers/info.rs 聚合主机指纹:OS/版本、主机名/用户(whoami)、硬件 ID(IOKit)、geo-IP(api.myip.com)。
whoami / uname / uptime / lscpu — 当前用户 / OS+内核(uname)/ 运行时间 / CPU 信息(host_processor_info)。
df handlers/df.rs 磁盘/卷使用情况与已挂载文件系统(getfsstat,CFURL volume keys)。
ps handlers/ps.rs 进程列表(proc_listallpids/proc_pidinfo/proc_pid_rusage)。
clipboard — 读写 macOS 剪贴板(NSPasteboardTypeString)。可捕获已复制的秘密(密码、助记词、2FA)并植入内容(例如替换已复制的加密货币地址)。
screenshot — 尚未实现。处理程序返回 “Screenshot command is not implemented yet.”

所有 C2 命令均由攻击者控制的私钥在服务器侧签名。公钥嵌入在 ROOFDECK 载荷中,用于在执行前验证所下发命令的来源与完整性。

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAzan/EObUVxXNfPHdkDyCVR0AC9apleciK9ZQw+neWo6q+wvAhnLp
Pe7FZLomuwntUgI3afLDblgw9t19Kh7w/8CVwFncxh4PdqtdYno4teQ6fDLKXSWa
ZBG7zZ9R22jxPpiY70XKilXJuds34q7pfzVfbLvLTmTWyTtcyrOnRSCOwEHP/gHX
0gX+8sdX7go6O37WwzB4zNvThS+E7hG+fVfrgEaH7IUi3RY9esuBS50UomfYefO3
dK1aDMDWIwVj1skacPR9LazEc6PSGjSXxzI/N2xcpP9QKXn/Pk6r9fBzudhBL3Mw
vWyNi03JbZGtGFiy6Wai6heJqgY7pF1PAQIDAQAB
-----END RSA PUBLIC KEY-----

另一个版本的 ROOFDECK

4 月 20 日,即 LayerZero 首次公开发布 KelpDAO 事件声明的一天后,攻击者向被沦陷机器部署了新版 ROOFDECK(SHA-1:5728b11d30586bbfc1d8bd12df1c722a06e767a2,路径 ~/Library/com.apple.appleaccountd/loginwindow),可执行文件名为 loginwindow。

新版本初始化并开始发出信标后,攻击者用它移除了旧的 ROOFDECK 与 FLATROOF 二进制文件。该新 ROOFDECK 在功能上与前一版本相同,但剥离了符号与调试信息,很可能旨在更有效地逃避检测。我们只能推测这是否是对 LayerZero 公开披露的反应,但时间点仍然值得关注。

更新后,我们观察到间歇性信标活动指向新的 C2 服务器 grenight[.]com,直至 6 月 1 日。6 月 17 日,loginwindow 二进制被移至废纸篓(Trash)。

结论

像 TraderTraitor 这样的 DPRK 对齐行为体,正大力瞄准开发者以在网络中建立立足点,且越来越多地通过虚假面试进行。我们所调查的事件表明,并非他们渗透的每一个组织都会成为大规模加密货币盗窃的可行目标。

这些组织的初始访问努力包括瞄准第三方及其软件供应链——这也是行业许多暴露面已迁移到的地方——从而将开发者终端置于防御中心。用于开发的终端携带对云、流水线与源代码的访问权限,这使得监控与防护成为组织的高优先级事项。这些行动使用面向单一工程师定制的开发环境,并搭配针对每位受害者不同的被后门化的 Terraform 构建。

建议

对组织:

对开发者:

本报告与 LABScon 2026 上的演讲同步发布,演讲题为 Don’t Call Us, We’ll Call Your APIs: Anatomy of an Expanding DPRK Multi-Cloud Intrusion。SentinelOne 感谢 Google 与 Mandiant 在提供该威胁行为体工具与技术细节方面的合作,以及 Nick Simonian 对本项研究的协作。

IoCs(额外受害者)

类型 IOC 说明
SHA1 02df07a173ab03b82a4fb6a08973fff8b1467f28 FLATROOF (SystemUpdate)
SHA1 c491d477dbe0ae04e9aed9dbe237144c03f73ec4 ROOFDECK (iSync)
SHA1 5728b11d30586bbfc1d8bd12df1c722a06e767a2 剥离符号的 ROOFDECK (loginwindow)
Domain technicais.sytes[.]net FLATROOF C2
Domain storage.hubpage[.]cloud ROOFDECK C2
Domain grenight[.]com ROOFDECK C2
IP 176.97.114[.]232 FLATROOF C2 (technicais.sytes[.]net)
IP 45.11.59[.]140 ROOFDECK C2 (storage.hubpage[.]cloud)
IP 85.137.56[.]245 ROOFDECK C2 (grenight[.]com)
IP 85.137.56[.]10 ROOFDECK 暂存服务器
Path ~/Library/com.apple.iTunesCloud/SystemUpdate FLATROOF 二进制文件路径
Path ~/Library/com.apple.internal.ck/iSync ROOFDECK 二进制文件路径
Path ~/Library/com.apple.appleaccountd/loginwindow 剥离符号的 ROOFDECK 二进制文件路径
File /private/tmp/.pipe-airway ROOFDECK IPC 管道
File $TMPDIR/tmp*.lock FLATROOF 锁文件
Workspace ~/DevOps-Automation/cloudshield 恶意工作区文件路径

用于 TLS 通信的自定义证书

类型 值
SHA-256 4b2d3e8ccce8920a6d01e7d02b84236545a20e5f754b3eec253f8b416b731daa
SHA-1 4ad92bf92ee614b05c340ce17bef7b6ef5a25e82
Serial 1cd6d13ff15adbf7a42025d10ec99b4a
Subject/Issuer O=mkcert development CA, OU=ub@ub-Standard-PC-Q35-ICH9-2009, CN=mkcert ub@ub-Standard-PC-Q35-ICH9-2009
Validity 2025-06-20 → 2035-06-20

主机 IoCs – ROOFDECK

类型 值
Persistence ~/Library/LaunchAgents/*.plist (Label prefix com., ProgramArguments contains –type=renderer, RunAtLoad=true)
Config file $HOME/.config/.repl_history

网络 IoCs – ROOFDECK

类型 值
HTTPS tasking endpoint /app_version (host resolved at runtime)

与 “ub” 用户相关的证书域名

域名
185-66-91-112.cprapid[.]com
213-111-146-132.cprapid[.]com
anesthesiaschool[.]com
app.heyhay[.]online
dela.servehttp[.]com
galaxy-royal[.]online
game.galaxy-royal[.]online
grenight[.]com
heyhay[.]online
mactroubleshoots[.]pro
mx01.galaxy-royal[.]online
ns4.galaxy-royal[.]online
storage.hubpage[.]cloud
tinklify[.]com
update.heyhay[.]online
vaimage[.]com
wss.sytes[.]net
www.anesthesiaschool[.]com
www.freehealth[.]lat
www.heyhay[.]online
www.mactroubleshoots[.]pro
www.tinklify[.]com

编程挑战仓库

hashicorp-aws[.]com Provider:

URL 说明
https://github.com/exubient0/terraform-candidate-repo/blob/main/.terraform.lock.hcl 被武器化的 Terraform 锁文件
https://github.com/radupopa369/gtn-candidate-repo/blob/feat/three-tier-infrastructure/live/.terraform.lock.hcl 被武器化的 Terraform 锁文件

hashicorp-aws[.]io Provider:

URL 说明
https://github.com/chainstacker/Northwind-IAC/blob/930e5be6d34511bedbfb0d762bd08fffe64e9630/aws/us-east-1/prod/northwind/global/vpc/.terraform.lock.hcl 被武器化的 Terraform 锁文件
https://github.com/RyanLRay/Technical-Assessments/blob/19af09ebe8b7ad03419677dda515507dd099bc39/README.md?plain=1#L175 引用被武器化 provider 域名的 README

hashicorp-terraform[.]io Provider:

URL 说明
https://github.com/Steed-LHV/assessment 引用被武器化 provider 域名的 README

原文版权归 SentinelOne / SentinelLABS 及作者 Albert Priego、Alex Delamotte、Matej Havranek 所有。本译文为非官方翻译。