感染毫无征兆
2025年6月,一位俄罗斯区块链开发者遭遇网络攻击后联系我们,其加密货币资产被盗约50万美元。令人惊讶的是,受害者的操作系统仅在几天前安装,仅下载了必需和流行应用。开发者深知加密货币交易的安全风险,因此保持警惕并仔细检查每个在线操作步骤。此外,他使用免费在线恶意软件检测服务保护系统,但未安装商业防病毒软件。
感染情况引起了我们的兴趣,我们决定调查事件起源。获取受感染系统的磁盘映像后,我们开始分析。
带有陷阱的语法高亮
检查磁盘文件时,一个名为extension.js的文件引起了我们的注意。路径为%userprofile%.cursor\extensions\solidityai.solidity-1.0.9-universal\src\extension.js。以下是其内容片段:
|
|
此截图清晰显示代码从web服务器angelic[.]su请求并执行PowerShell脚本:这是恶意软件的明确迹象。
extension.js是Cursor AI IDE的Solidity Language扩展组件,该IDE基于Visual Studio Code,专为AI辅助开发设计。扩展在Cursor AI使用的Open VSX注册表中可用,约两个月前发布。研究时,该扩展已被下载54,000次,但数字可能被夸大。根据描述,扩展提供多项功能优化Solidity智能合约代码工作,特别是语法高亮:
|
|
我们分析了该扩展每个版本的代码,确认其为伪造:任何版本均未实现语法高亮或其他声称功能。扩展与智能合约无关,仅从上述web服务器下载并执行恶意代码。此外,我们发现恶意插件描述被攻击者从合法扩展页面复制,后者有61,000次下载。
扩展如何进入计算机
恶意扩展有54,000次下载,而合法扩展有61,000次。但攻击者如何麻痹开发者的警惕?为何他会下载次数较少的恶意扩展?
我们发现,开发者尝试安装Solidity代码语法高亮器时,在扩展注册表中搜索solidity。查询返回以下结果:
|
|
搜索结果中,恶意扩展排名第四,而合法扩展仅排第八。因此,查看搜索结果时,开发者点击了列表中下载量较大的第一个扩展——不幸的是,这证明是恶意的。
排名算法陷阱
恶意扩展为何在搜索结果中排名高于合法扩展,尤其考虑到下载量较少?Open VSX注册表按相关性排名搜索结果,考虑多个因素,如扩展评分、发布时间或更新时间的远近、总下载量以及扩展是否验证。因此,排名由因素组合决定:例如,下载量低的扩展如果近期更新,仍可能出现在搜索结果顶部。恶意插件正是如此:伪造扩展最后更新日期为2025年6月15日,而合法扩展最后更新于2025年5月30日。因此,由于因素组合,恶意扩展的相关性超过原始扩展,使攻击者能在搜索结果中推广伪造扩展。
陷入排名算法陷阱的开发者未获得所需功能:扩展未提供任何Solidity语法高亮。受害者误以为这是错误,决定稍后调查,并继续工作。同时,扩展悄悄在其计算机上安装恶意软件。
从PowerShell脚本到远程控制
如上所述,恶意插件激活时,从https://angelic[.]su/files/1.txt下载PowerShell脚本。
|
|
脚本检查计算机是否安装ScreenConnect远程管理软件。如果未安装,则从https://angelic[.]su/files/2.txt下载第二个恶意PowerShell脚本。新脚本然后从https://lmfao[.]su/Bin/ScreenConnect.ClientSetup.msi?e=Access&y=Guest下载ScreenConnect安装程序到受感染计算机并运行。从那时起,攻击者可通过新安装的软件控制受感染计算机,该软件配置为与C2服务器relay.lmfao[.]su通信。
数据窃取
进一步分析显示,攻击者使用ScreenConnect将三个VBScript上传到受感染机器:
- a.vbs
- b.vbs
- m.vbs
每个脚本从文本共享服务paste.ee下载PowerShell脚本。下载URL被混淆,如下图所示:
|
|
下载的PowerShell脚本然后从archive[.]org检索图像。然后从该图像提取称为VMDetector的加载器。VMDetector攻击先前在针对拉丁美洲实体的网络钓鱼活动中观察到。加载器从paste.ee下载并运行最终有效负载。
对VBScript的分析确定以下有效负载下载到受感染计算机:
- Quasar开源后门(通过a.vbs和b.vbs)
- 从浏览器、电子邮件客户端和加密货币钱包收集数据的窃取程序(通过m.vbs)。卡巴斯基产品将此恶意软件检测为HEUR:Trojan-PSW.MSIL.PureLogs.gen。
两个植入程序均与C2服务器144.172.112[.]84通信,分析时解析为relay.lmfao[.]su。借助这些工具,攻击者成功获取开发者钱包的密码短语,然后窃取加密货币。
新的恶意包
恶意插件在扩展商店中存在时间不长,于2025年7月2日下架。那时,它不仅在我们调查事件时被检测到,也被其他研究人员发现。然而,攻击者继续其活动:下架仅一天后,他们发布了另一个名为“solidity”的恶意包,此次完全复制原始合法扩展的名称。伪造功能未变:插件下载恶意PowerShell脚本到受害者设备。但攻击者试图大幅夸大下载次数。新扩展据称下载约两百万次。直到最近,用户在Cursor AI开发环境中搜索solidity时出现以下结果(插件目前因我们的努力已移除)。
|
|
更新后的搜索结果显示合法和恶意扩展在搜索排名中并列,分别占据第七和第八位。开发者名称乍看相同,但合法包由juanblanco上传,而恶意包由juanbIanco上传。Cursor AI使用的字体使小写字母l和大写字母I看起来相同。
因此,搜索结果显示两个看似相同的扩展:合法扩展有61,000次下载,恶意扩展有两百万次下载。用户会选择安装哪个?做出正确选择成为真正挑战。
类似网络攻击
值得注意的是,我们发现的Solidity扩展并非此操作背后攻击者发布的唯一恶意包。我们使用开源包监控工具发现名为“solsafe”的恶意npm包。它使用URL https://staketree[.]net/1.txt下载ScreenConnect。在此活动中,它还配置使用relay.lmfao[.]su与攻击者通信。
我们还发现2025年4月和5月发布了三个恶意Visual Studio Code扩展:solaibot、among-eth和blankebesxstnion。这些威胁中使用的感染方法与我们上述描述的惊人相似。事实上,我们在其恶意脚本中发现几乎相同的功能。
|
|
此外,所有列出的扩展在执行期间执行相同的恶意操作,即:
- 下载名为1.txt和2.txt的PowerShell脚本。
- 使用带有混淆URL的VBScript从paste.ee下载有效负载。
- 从archive.org下载带有有效负载的图像。
这使我们得出结论,这些感染方案目前被广泛用于攻击区块链开发者。我们认为攻击者不会止步于我们发现的Solidity扩展或solsafe包。
经验教训
恶意包继续对加密行业构成重大威胁。许多项目如今依赖从包存储库下载的开源工具。不幸的是,这些存储库中的包通常是恶意软件感染的来源。因此,我们建议下载任何工具时极度谨慎。始终验证您下载的包不是伪造的。如果安装后包未按广告宣传工作,保持怀疑并检查下载的源代码。
在许多情况下,通过伪造开源包安装的恶意软件是众所周知的,现代网络安全解决方案可以有效阻止。即使经验丰富的开发者也绝不能忽视安全解决方案,因为这些可以在安装恶意包时帮助防止攻击。
危害指标
恶意JS文件哈希:
- 2c471e265409763024cdc33579c84d88d5aaf9aea1911266b875d3b7604a0eeb
- 404dd413f10ccfeea23bfb00b0e403532fa8651bfb456d84b6a16953355a800a
- 70309bf3d2aed946bba51fc3eedb2daa3e8044b60151f0b5c1550831fbc6df17
- 84d4a4c6d7e55e201b20327ca2068992180d9ec08a6827faa4ff3534b96c3d6f
- eb5b35057dedb235940b2c41da9e3ae0553969f1c89a16e3f66ba6f6005c6fa8
- f4721f32b8d6eb856364327c21ea3c703f1787cfb4c043f87435a8876d903b2c
网络指标:
- https://angelic[.]su/files/1.txt
- https://angelic[.]su/files/2.txt
- https://staketree[.]net/1.txt
- https://staketree[.]net/2.txt
- https://relay.lmfao[.]su
- https://lmfao[.]su/Bin/ScreenConnect.ClientSetup.msi?e=Access&y=Guest
- 144.172.112[.]84