
似曾相识,一遍又一遍又一遍……

加密圈最近热议 EtherHiding——一种新颖的攻击手法,恶意行为者将恶意代码隐藏在智能合约中,借助区块链传播恶意软件。MetaMask 的 Taylor Monahan 分享了她的看法:为何每一波所谓的"区块链恶意软件"都能登上头条,以及为何防御者在被这些噱头带跑之前,应当先把基础工作做扎实。
每当一份新的链上恶意软件报告发布,安全研究人员就会再次宣告:"史上首个去中心化、不可篡改、无法阻止的威胁来了!" LinkedIn 瞬间沸腾,博客文章铺天盖地,充斥恐慌情绪的标题被反复优化。AI 驱动的端点检测与响应产品也趁机大肆兜售。
随之而来的是一片附和之声:"我早就说过!区块链是骗子的完美传播媒介!" 然后,一如既往,这波攻击活动悄然平息。分析师们转向下一个闪亮的漏洞利用——为了给明年的报告腾地方,他们早已忘记*"史上首个去中心化、不可篡改、无法阻止的威胁"*曾经出现过。
关于区块链恶意软件的头条新闻并非全无道理。它确实是恶意软件,也确实利用了区块链。但也仅此而已。这些攻击活动在各方面都平淡无奇,唯一的亮点就是那一个小聪明,这也是它们很快被遗忘的原因。
如果这些攻击既新颖又影响深远——真正具有突破性或破坏性——情况或许会有所不同。但说实话,安全研究人员就是喜欢追新鲜事物,这是我们的"猫薄荷"。任何稍微不寻常的东西,比如僵尸网络从 OP_RETURN 中获取不足 80 字节的数据,或者恶意软件通过智能合约更新配置,都能让我们兴奋不已。我们忍不住沉浸其中,脑补一个充满去中心化、无法阻止的恶意软件的世界。

公平地说,确实有一部分威胁行为者有着同样的"毛病"。那些热衷于在攻击行动中附加叙事的网络犯罪"作者",会精心设计戏剧性的信息来吸引媒体关注,还会在恶意软件上留下签名,确保所有人都知道这是他们的手笔。他们的攻击行动华丽、吸睛,但可以预见地昙花一现。他们往往忙于争夺眼球,根本没注意到今天只捞了 13 美元(或者 FBI 昨天已经接管了他们的群聊)。
没错,这些行动确实有值得借鉴的地方。但"如何成为一个无法阻止、不可篡改的威胁行为者"绝对不在其中。
真正造成实质性破坏的威胁行为者是务实的。投资回报率(ROI)是他们的北极星。隐蔽性、规模化和可持续性是他们的制胜之道。他们也在不断调整技术手段,以应对各种阻碍。
没人看邮件了 → 转移到 Telegram
GitHub 下架代码仓库 → 转移到私有仓库
私有仓库异常,容易引起怀疑 → 转移到 Bitbucket 或 GitLab
MetaMask 一出现就标记恶意前端 → 改用 Google Docs 或 GitHub 仓库,而非落地页
因此,每当我看到又一个威胁行为者使用区块链,我总会问:区块链为他们解决了什么问题?它如何帮助他们将失败的攻击活动转化为成功的攻击活动?

恶意软件是恶意代码,它不会凭空出现或魔法般地生成。代码本身必须先进入受害者的设备,然后运行,才能执行其操作。
正常软件的运作方式是:你访问网站或应用商店,下载应用程序,然后在设备上安装并运行。安装过程会解包实际软件,然后运行其中包含的代码。它可能会执行诸如将文件移动到正确位置、设置个人配置、向某个服务器检查可用更新,或设置为每次启动计算机时自动运行等操作。
恶意软件也会做这一切,只是必须偷偷摸摸地进行。如果终端用户或任何其他人发现它是恶意的,恶意软件就无法执行恶意操作。
人们始终在努力保护终端用户免受恶意软件侵害。Google Chrome 会对恶意 URL 和下载显示红色警告页面。操作系统会阻止恶意代码安装,尤其是在用户不知情的情况下。社交媒体平台、网络托管商、域名注册商和代码仓库都会采取措施,检测并阻止恶意软件运营者利用它们达成恶意目的。
因此,恶意软件传递给终端用户的方式随着时间的推移发生了显著演变。恶意软件的创建者和运营者不遗余力地将恶意载荷拆分为多个阶段,混淆 URL,并在某些内容被下架时建立备用方案。
多年来,不同的威胁行为者以不同的方式使用区块链。
尽管具体机制和技术细节各有不同,但区块链所扮演的角色大体相同:
恶意代码需要与各种资源通信,以获取或维持对受害者设备的控制。
这些资源经常发生变化(例如,当某个服务器被下线时)。
如果一段恶意代码无法更改(例如,恶意软件已经在受害者设备上,或代码已部署在数千个被入侵的 WordPress 网站上),那么当它所依赖的资源被下线时,它就会失效。
于是,他们引入了区块链——现在什么都无法被下架,一切都神奇地隐形且匿名,去中心化、不可篡改、无法阻止的威胁来了!
时间 | 内容 | 区块链元素 | 区块链优势 |
2016-2017, 2023 | Cerber 勒索软件勒索软件即服务(RaaS)模式,允许非技术攻击者部署勒索软件,而技术开发者负责创建和维护。从勒索受害者处获得的资金在攻击者和开发者之间分配。 | 受感染的机器通过四个比特币 API 查询硬编码的钱包地址,直到成功从区块链中获取数据。恶意软件随后解密这些数据,以获取用于命令与控制通信的服务器 IP。 | 韧性: 硬编码的 URL/IP 容易被封锁,从而使恶意软件失效。Cerber 勒索软件利用比特币区块链上的交易数据与其所有者协调,可以实时动态更新服务器位置。 |
2010年至今,2019-2021年达到峰值 | Glupteba 僵尸网络获得受感染机器完整后门控制权的恶意软件,可窃取凭证和 Cookie、部署代理进行流量匿名化、实施信用卡欺诈和广告滥用,并且(自 2019 年起)甚至内置了加密货币挖矿程序。 | 比特币的 OP_RETURN 操作码被用于在交易中嵌入加密的备用 C2 域名。每当主要 C2 服务器下线时,受感染的机器可以循环遍历比特币 Electrum 服务器列表,直到成功获取区块链数据。该字符串随后被解密,以获取最新 C2 服务器的 URL。 | 韧性: 增加了一层韧性,确保受感染的机器即使在原始 C2 被下线后仍保持受感染状态。 |
2023年9月至2025年7月 | Etherhiding - CLEARSHORT UNC5142用于促进恶意软件分发的多阶段 JavaScript 下载器。首先,一个 JavaScript 载荷被注入到存在漏洞的网站中,从恶意智能合约中获取第二阶段载荷。智能合约从攻击者控制的服务器获取 CLEARSHORT 落地页。该落地页利用 ClickFix——一种流行的社会工程技术,诱骗受害者通过 Windows Run 在本地运行恶意命令。 | 恶意行为者没有将整个攻击链嵌入被入侵的网站,而是使用智能合约将组件存储在 BNB 智能链上,以存储短载荷。最初放在区块链上的数据是加密的载荷(而非字面 URL 字符串),但这个载荷是一个非常短的代码片段,会向指定 URL 发出请求,然后 eval() 该 URL 返回的任何内容。随着时间推移,该机制演变为涉及多层合约,每层合约运行一些检查后指向下一个合约。最终合约包含托管加密载荷和解密密钥的 URL,以及托管第二阶段载荷的 URL。 | 韧性:在面对检测和下架行动时提高了韧性。基于网络的防护机制对 Web3 流量更难实施。鉴于区块链的不可篡改性,查封和下架行动也受到阻碍。隐蔽性:将恶意代码存储在智能合约中,使其更难被传统网络安全工具检测到。对合法端点的调用有助于恶意流量融入正常活动。灵活性:通过使用多个合约,攻击者拥有一个稳定的入口点,可以根据需要指向不同的位置(和载荷)。 |
2025年2月至今 | Etherhiding UNC5342 / DPRK / Contagious Interview该活动针对开发者,尤其是加密货币和技术领域的开发者,旨在窃取敏感数据/加密货币并持续访问企业网络。该活动采用多阶段恶意软件感染流程,在 Windows、macOS 和 Linux 系统上入侵受害者的系统。 | 利用 EtherHiding 从 BNB 智能链和以太坊上的智能合约中获取、解密并执行恶意载荷。受害者运行的代码会执行一个初始 JavaScript 下载器,该下载器随后与恶意智能合约交互并下载第二阶段载荷。通常使用 eth_call 或 eth_getStorageAt(从链上抓取数据的读取操作)。 | 韧性: 没有可供下架的中央服务器。一旦智能合约部署,除合约所有者外,任何人都无法轻易删除或修改它。隐蔽性:攻击者可以使用不留可见交易历史的只读调用来获取恶意载荷。灵活性:攻击者可以随时更新恶意载荷,以更改攻击方法、更新域名或部署不同类型的恶意软件。 |
2025年 | 跨链 TxDataHiding在 TRON、Aptos 和 BSC 区块链之间跳转,进一步混淆踪迹。一条区块链充当索引或指针系统,存储对第二条区块链(通常是 BSC)上某个交易哈希的引用,该交易最终包含恶意载荷。 | 使用一条任意区块链作为指向 BSC 交易哈希的指针。然后使用 eth_getTransactionByHash 获取该 BSC 交易的数据,其中最终包含用于传递下一阶段恶意软件的混淆载荷。TRON 调用为 | 韧性: 传统 C2 服务器可被执法机构查封或被托管服务商关闭,但存储在区块链上的数据在数千个节点上复制。隐蔽性: 对 |
将恶意软件植入受害者设备需要多个阶段、多种资源,以及这些资源之间一定程度的通信。其中一些阶段的存在纯粹是为了逃避检测,另一些则是为了长期维持控制。
理解这一点至关重要,因为恶意软件从未"运行在区块链上"。 区块链甚至无法替代整个感染链。
例如,以下是 Glupteba 感染链在 2019 年前后的(简化)对比:
之前 | 之后 |
投放器落地到受害者设备 | 投放器落地到受害者设备 |
恶意软件创建包含硬编码 C2 URL 列表的注册表并安装组件。 | 恶意软件创建包含硬编码 C2 URL 列表的注册表并安装组件。 |
定期将受害者设备的信息发送到 C2 服务器。 | 定期将受害者设备的信息发送到 C2 服务器。 |
定期向 C2 发送请求以获取进一步指令,通常包括用新的 C2 URL 更新注册表。 | 定期向 C2 发送请求以获取进一步指令,通常包括用新的 C2 URL 更新注册表。 |
如果无法访问任何 C2,稍后重试。 | 如果无法访问任何 C2,循环遍历比特币 API 端点列表,从交易哈希中获取数据 → 解密数据 → 将新的 C2 URL 添加到注册表。 |
以下是 UNC5142 的 Etherhiding 初始演变的前后对比:
之前 | 之后 |
入侵 WordPress 网站 | 入侵 WordPress 网站 |
在所有文章/页面中注入简单的 JavaScript | 在所有文章/页面中注入简单的 JavaScript |
用户访问被入侵的网站 | 用户访问被入侵的网站 |
注入的 JavaScript 从 Cloudflare Workers 获取第二阶段载荷 | 注入的 JavaScript 从存储在 BNB 区块链交易中的数据获取第二阶段载荷 |
载荷 eval() 指定的 URL,将页面转换为"您需要更新浏览器"的覆盖层。 | 载荷 eval() 指定的 URL,将页面转换为"您需要更新浏览器"的覆盖层 |
用户点击更新按钮 | 用户点击更新按钮 |
从俄罗斯 IP 地址获取并下载恶意载荷 | 从俄罗斯 IP 地址获取并下载恶意载荷 |
从这个角度来看,区块链元素不过是嫁接在一条本质上传统的感染链之上。这是对现有攻击行动的演进,有时甚至是对被干扰的直接回应。
这种差异对于需要将新颖性与风险分开看待的防御者来说至关重要。阻止这些攻击活动的主要控制措施归根结底仍然相同。 威胁行为者在知道攻击活动仍然奏效的情况下,总会绕过 C2 被下架等干扰。个人和组织必须努力减少初始入侵,基于行为而非静态指标检测威胁,并确保有控制措施在入侵后遏制端点。区块链的存在对此毫无改变。

基于此,让我们重新审视研究人员多年来在表格中强调的区块链优势。
"硬编码的 URL 容易被封锁,从而使恶意软件安装失效。" 来源:Cerber 勒索软件
"确保受感染的机器即使在原始 C2 被下线后仍保持受感染状态。" 来源:Glupteba
"在面对检测和下架行动时提高了韧性。鉴于区块链的不可篡改性,查封和下架行动也受到阻碍。" 来源:UNC5142 的 EtherHiding
"没有可供下架的中央服务器。" 来源:UNC5342 的 EtherHiding
"传统 C2 服务器可被执法机构查封或被托管服务商关闭,但存储在区块链上的数据在数千个去中心化节点上复制。" 来源:跨链 TxDataHiding
"一旦智能合约部署,除合约所有者外,任何人都无法轻易删除或修改它。" 来源:UNC5342 的 EtherHiding
现实核查:区块链最常被用作指针,存在于两段传统基础设施之间。
多年来,恶意软件作者已经采用了多种"指针"机制,这些机制隐藏在公众视野中、防弹主机上,或合法内容平台上。这些机制同样可能非常难以检测和/或下架,甚至根本无法做到。
从区块链获取数据的调用仍然通过传统基础设施服务提供商托管的传统 API 端点进行,有时甚至使用传统 API 密钥。虽然你无法下架整个系统(因为它本质上是一个善意运营、主要服务于合法用户的企业),但安全研究人员可以向这些公司普及此类活动,并与他们合作采取行动。
这与恶意行为者利用合法基础设施传递载荷的任何其他情况没有区别。当你知道某个实体本可采取行动却没有行动时,总是令人沮丧。区块链行业尤其拥有自己的安全研究人员网络,尚未与传统安全研究网络完全整合。但这并不意味着它不存在。如果你需要介绍或分享此类情报,区块链领域有一些人深切关注这些问题,认识各方人士,并且随时乐于提供帮助。这包括我们 MetaMask Security 的所有成员,以及 SEAL 等组织。欢迎联系我们。
"将恶意代码存储在智能合约中,比传统网络安全工具直接扫描网站内容更难被检测到。" 来源:UNC5142 的 EtherHiding
"BNB 智能链是一个合法平台。使用它可以帮助恶意流量融入正常活动,从而逃避检测。" 来源:UNC5142 的 EtherHiding
"攻击者可以使用不留可见交易历史的只读调用来获取恶意载荷。" 来源:UNC5342 的 EtherHiding
"对区块链 API 的连接——api.trongrid.io、aptoslabs.com、binance.org 等——看起来像是对合法服务的普通 HTTPS 请求,没有明显的恶意指标。" 来源:跨链 TxDataHiding
"传统 C2 会留下大量证据(服务器日志、TLS 证书、托管记录和 IP 地理位置),但区块链 C2 只会产生假名地址和交易哈希,没有服务器或日志。" 来源:跨链 TxDataHiding
"与传统网络流量相比,基于网络的防护机制对 Web3 流量更难实施,因为后者不使用传统 URL。" 来源:UNC5142 的 EtherHiding
现实核查:与"区块链"交互就像与任何其他云服务提供商交互一样
区块链不过是一个庞大的公共数据库,记录所有历史交易,并附带每约 10 秒必须进行一次的复杂加密验证。它几乎总是运行在传统的专用基础设施上,配备各种负载均衡、API 和其他编排机制。每个服务提供商记录和保留的内容完全取决于其使用情况、用户群体、历史记录、隐私政策、所在地、与用户的关系以及所提供的服务。
举个例子,如果一个区块链服务需要按月付费,它通常像 Web2 公司一样通过信用卡收费。如果它接受加密货币支付,其链上地址是公开可知的,你可以看到威胁行为者的付款记录。与传统支付不同,任何人都可以看到朝鲜黑客(DPRK)向 Namecheap 购买域名、向 Debank 购买 API 额度的记录。这是以前无法获得的高可信度、可操作的情报。
普通终端用户的电脑不会随机 ping 任何与加密货币相关的内容。如果你的沙箱在运行一个神秘载荷时突然这样做了,你绝对应该直接关注它。即使在正常情况下,区块链调用也远不如对 Microsoft、GitHub、AWS、Google 或 Cloudflare 的调用那么合法。而所有这些服务都定期传递恶意载荷。
当然,加密货币公司不能以预防为由封锁所有加密流量。"幸好加密货币公司没有任何监控,所以没关系!"我当然是在开玩笑。每家认真的加密货币公司都有完善的安全信息与事件管理(SIEM)和端点检测与响应(EDR)系统,这些系统能够成功检测和遏制真实的 Lazarus 载荷。Contagious Interview 或 MaaS 载荷——即使是那些使用区块链的——也以与使用区块链之前完全相同的方式被检测到。
"虽然智能合约本身是不可篡改的,但他们部署了一个包含指向第二级智能合约指针的第一级智能合约。第一级合约充当一个稳定的入口点,其地址在被入侵的网站上永远不会改变,引导注入的 JavaScript 从第二级合约获取代码,使攻击者能够在不修改被入侵网站的情况下更改目标。" (UNC5142 的 EtherHiding)
"攻击者可以随时更新恶意载荷,以更改攻击方法、更新域名或部署不同类型的恶意软件。" (UNC5342 的 EtherHiding)
"攻击者可以随时通过发布新的区块链交易来修改载荷,而恶意软件的硬编码地址永远不会改变,这意味着受感染的机器可以自动获取更新的载荷,无需修改代码。" (跨链 TxDataHiding)
现实核查:互联网本来就是这样运作的
威胁行为者将载荷隐藏在图片中,更新图片,恶意软件就神奇地变了。URL 是指向 IP 地址的指针,IP 地址是指向托管在服务器上的内容的指针。如果你无法下架实际内容,就下架访问内容所用的路由。如果你无法下架路由,就让负责路由的人封锁它们。
将任意数据存储在网站上与存储在区块链上的关键区别在于:向区块链写入任意数据需要花钱,而且每次发生时都会产生一个公开事件。交易费用可能从 1 美元到 100 美元以上不等,具体取决于网络状况。某些链的费用更低,使这个问题不那么突出。但仍然有成本,而且这些付款会留下痕迹。
区块链毕竟是公开的。服务提供商和交易所拥有关联终端用户活动、IP 地址、设备指纹,有时甚至是完整 KYC 信息的数据库。即使是基本交易也需要与传统互联网元素进行一定程度的交互,这些元素显然会留下一定量的传统互联网数据。数据量的多少完全取决于威胁行为者与区块链的交互方式。但区块链并非匿名的。
理论上,一个抗审查、不可逆转、去中心化的存储系统是威胁行为者梦寐以求的。但现实中,这些"区块链驱动"的恶意软件菌株似乎从未像其他攻击手法那样流行起来。
例如,CLICKFIX 很快就被大量不同的威胁组织采用。说服终端用户直接将命令复制粘贴到命令行以绕过前线防护的想法,确实是一个改变游戏规则的创新。与此同时,七年后,区块链上的恶意软件仍然足够新颖,每次有人发现新的实现方式,都能在安全界引发轩然大波。
部分原因在于,区块链无法(也不能)替代整个感染链,甚至无法替代其大部分。社交媒体账号、网络托管商、域名注册商以及一个或多个 C2 服务器仍在被用于传递恶意软件的各个阶段、指向下一个阶段,或在某个阶段失效时作为备用。区块链是在所有现有流程之上增加了另一个工作流和另一个步骤。
这也是因为区块链本身带来了自身的成本和风险。
当有防弹主机、被入侵的 WordPress 网站和免费内容平台争相充当一次性基础设施时,为何要冒险将自己的操作安全(OpSec)永久留在公共账本上供任何人发现?当所有公共 WiFi、酒店、游轮、学校和/或工作场所默认封锁一切与"区块链相关"的内容时,为何要冒险让原本未被检测到的东西被立即检测到?
部分原因很简单——因为他们可以。这很有趣、很聪明、很新颖、很独特。也许它会让他们更成功——或者至少让他们感觉自己是来自未来的骗子。威胁行为者也是人,他们有目标和动机,并不总是理性行事。
然而,我认为真正的答案在这些机制的公开报告中自然显现。看起来它确实能逃避检测。不知为何,仅仅使用区块链就能让他们将 C2 隐藏更长时间。不知为何,当沙箱找不到恶意软件(因为它藏在区块链 API 调用中)时就会感到困惑。
讽刺的是,这种优势并非因为它无法被检测(它可以被检测),也不是因为它比他们所做的其他一切更匿名、更隐蔽或更私密(真的,完全不是)。这种优势几乎完全来源于安全研究人员认为它是那样的。
因此,我们应该预期威胁行为者会继续以这种方式进行实验。安全研究人员也应该继续追踪和发布关于这些攻击活动的文章。但至少目前,"区块链恶意软件"仍然是一个更宏大、更严峻故事中相对有趣的注脚。
我们的大部分时间和精力必须用于对真正影响个人和机构的事情采取行动——那些能够防止损失、保护人们安全的事情,即使他们坚持仅仅因为网上的陌生人告诉他们就把随机命令粘贴到黑色命令框里。
如果出于某种原因,这些攻击活动的区块链方面确实是任何安全公司在更好地检测、去匿名化和干扰这些活动方面的真正障碍,Web3 安全界非常乐意提供帮助。请通过 MetaMask Security 与我们联系。
AI 翻译。可能包含错误。请务必核实信息。