关键词:信息窃取器、加密货币、浏览器扩展

概述

一个名为ViperSoftx的信息窃取器一直受到安全研究团队的密切关注,Vipersoftx于2020年在Twitter上被首次报道,并于同年被Fortinet报道。Colin Cowie也针对Vipersoftx的一些特征做出了描述。但此后,Vipersoftx经历了快速的发展,2022年尤为显著。恶意软件的作者不停地玩着猫鼠游戏,他们改善技术和隐藏策略来绕过检测的行为没有停止迹象。因此,研究人员对Vipersoftx的碎片信息进行了整合分析。

这个多阶段信息窃取器表现出了有趣的隐藏功能,它在庞大并且看起来无害的日志文件其中一行隐藏了PowerShell脚本。ViperSoftX的主要功能为窃取加密货币、剪贴板,对受感染的机器进行指纹识别,以及下载和执行任意附加攻击载荷或命令。

ViperSoftX分发的一个有效载荷是一个特定的信息窃取器,其形式是基于Chromium的浏览器扩展。由于其独立的功能和独特性,研究人员将其命名为VenomSoftX。该恶意扩展获取了受害者访问的每个页面的完全控制权限,通过浏览器中间人攻击(MITB)来篡改加密货币交易所上的API请求数据,来控制加密货币交易。此外还可以窃取凭证和剪贴板内容,篡改访问网站上的加密地址,使用MQTT向C&C服务器报告事件等。

ViperSoftX主要通过Adobe Illustrator、Corel Video Studio、Microsoft Office等破解软件传播,并且通常以种子形式传播。

1.活动概述

自2022年初以来,已经有超过9.3万名用户受到影响。由于恶意软件主要通过种子和软件共享网站传播,ViperSoftX活动分布在世界各地。受影响最大的国家是印度(7000+)、美国(6000+)和意大利(5000+)。

图1:自2022年初以来的目标国家地图

2.资金收益

ViperSoftX和VenomSoftX都专注于通过扫描本地文件或使用更复杂的技术从受害的计算机中窃取加密货币。在下表中,研究人员展示了攻击者对相关加密货币钱包总收益的估计值。

加密货币

损失加密货币量

等值美元数

Bitcoin

5.947 BTC

$116812.81

Ethereum

5.312 ETH

$7826.13

Dogecoin

34355.528 DOGE

$3474.47

Bitcoin Cach

9.11997194 BCH

$1021.39

Cosmos (ATOM)

65.153 ATOM

$846.44

Tezos

191.445553 XTZ

$241.32

Dash

4.72446445 DASH

$199

截至2022年11月8日,ViperSoftX和VenomSoftX盗取加密货币总计约为130421.56美元。这只是转移到攻击者加密货币钱包的金额,不包括其他活动的其他可能利润。

3.技术分析

(1)ViperSoftX的攻击链可以总结为下图的流程:

图2:攻击链

(2)从破解软件到伪装日志

一开始,当受害者下载他们认为的破解软件时,ViperSoftX通常会被命名为Activator.exe或Patch.exe提供给受害者,受害者在执行后就会被感染。

Activator.exe是使用CBC模式的AES自解密加载器。

解密算法执行如下校验和:

  • 从文件末尾读取4个字节,偏移量为0x24

  • 使用SHA256计算偏移值

  • 读取自-0x20开始的其余字节,并将其与哈希值进行比较

如果校验和成立,则偏移量指向存储数据的位置,距离二进制文件末尾的偏移量为+0x24。由于数据是从二进制文件的末尾存储的,因此偏移量也是数据块的大小。该块可以使用硬编码密钥以及二进制文件中的IV立即解密:

密钥

71C54C3BCFFCE591A70C0B5BA6448327BC975D89F3021053125F1CB9A7C0AF72

IV

C0BA0B56EAC742AFD4CB680EE0EB4FB0

解密的数据块是序列化协议缓冲结构。结构模板包含两个原始数据,如下所示

图3:模板原始数据

研究人员使用此模板反序列化结构,获取五个不同的文件:

  • 一个日志文件,其中包含一个隐藏的额外攻击载荷,加载ViperSoftX PowerShell

  • 任务调度程序的XML文件

  • SyncAppvPublishingServer.vbs(无害),用于为持久性创建计划任务

  • 被破解的应用程序二进制文件(通常是无害的)

  • 清单文件

最有趣的文件是前面提到的“日志文件”,其大小通常超过5MB,包含一行恶意代码(日志文件通常为17302行,但在不同版本中可能有所不同)。此日志文件通常命名并存储为:

C:\\Windows\\Logs\\system-Logs[.]txt。

同时该文件也有伪装成如下驱动或文本文件的形式:

C:\\Windows\\System32\\Drivers\\p4kizn\\e12de1ae-2139-45f6-b883-3c58243f23d6[.]sys

C:\\Windows\\2ZQ2UoL\\5A7C4B54-44404-4424-83DA-CC696BED43D3[.]txt

其中子文件夹名称和GUID是随机生成的。

下图是一个恶意日志行的示例。正如稍后将提到的,这一行实际上是一段将被解码执行的恶意脚本。

图4:第17034行有一行恶意代码的日志文件示例

该恶意软件使用旧版SyncAppvPublishingServer.vbs脚本创建计划任务,以便在之后执行这些隐藏的脚本,以确保持久控制。恶意行号取决于计划任务中的配置。

隐藏脚本的第一种变体是一个简单的加载器,可从硬编码的C&C服务器下载另一个有效载荷并执行。到目前为止,研究人员只发现ViperSoftx信息窃取器这一种恶意载荷。后续章节会详细阐述。

图5:PowerShell脚本的第一个变体——简单的加载器

第二个变体是PowerShell脚本的形式,没有编码。该脚本包含两部分,第一部分是一组解密函数,第二部分是加密数据块。

图6:第17034行有一行恶意代码的日志文件示例(第二种变体)

该脚本使用CBC模式的AES来解密有效载荷ViperSoftX窃取器。由Activator.exe创建的计划任务通过命令行传递AES密钥。

(3)ViperSoftX信息窃取器

当攻击载荷加载时,将获取到一个混淆后的ViperSoftx PowerShell脚本。我们已经看到了ViperSoftx的多种变体,这表明恶意软件正在积极开发中。在下面的文本中,将介绍整个窃取器的功能。

首先,先着眼于ViperSoftx实际上有能力偷窃的方法。ViperSoftx获取受感染的主机的指纹,重点针对主机的各种信息,包括:

  • 计算机名称

  • 用户名

  • 操作系统及其架构

  • 安装的杀毒软件或其他安全软件以及防护措施是否处于活动状态

ViperSoftx专注于窃取加密货币。为此,它在常见位置搜索web浏览器扩展和本地存储的钱包。使用WMI和系统变量可以获得更多通用信息,如操作系统、体系结构和用户名等。

ViperSoftX在加密货币软件和浏览器扩展中搜索本地存储在受害主机上的加密货币,并监控剪贴板中的加密货币钱包地址以进行篡改。

然后,收集的数据以及指纹被连接在一起,形成一个字符串,由Base64编码,并发送到User Agent HTTP头中的硬编码C&C服务器,例如:http://api.private-chatting[.]com/connect。注意不同版本的C&C服务器各不相同。

每次受害者将任何内容复制到剪贴板上时,ViperSoftx都会使用后台的预定义正则表达式扫描内容。如果表达式与属于特定加密货币的配置的钱包地址之一匹配,则将内容替换为攻击者的地址,并以以下三个值的形式向X-Notify HTTP标头中的C&C服务器发送通知:Cryptocurrency type - victim’s address - attacker’s address。

加密货币类型反映了匹配的加密货币类型,可以是以下类型之一:BTC、BCH、BNB、ETH、XMR、XRP、DOGE或DASH。

该恶意软件还检查打开的窗口的标题文本(MainWindowTitle属性),如果它发现一个用于加密货币的应用程序,它会将其存在记录到:%SystemDrive%\\Users\\Public\\log.dat

除了信息窃取这一核心功能之外,ViperSoftX还提供RAT功能,如在命令行上执行任意命令、下载C&C服务器提供的额外攻击载荷并执行,以及将其从系统中完全移除。例如,RAT功能可以用于从加密货币的位置窃取加密货币,识别加密货币后将其发送到C&C服务器。

除了试图窃取加密货币外,恶意软件还修改Host标头,以混淆其与C&C服务器的通信。

欺骗的主机标头由五到10个小写字母组成,但真正的目的地是在硬编码的$ meta_host变量中。这样,真正的C&C服务器地址会被不存在的随机域名混淆。

图7:Host头欺骗

(4)VenomSoftX浏览器扩展

较新版本的ViperSoftX信息窃取器能够将自定义恶意浏览器扩展加载到安装在受害主机上的基于Chromium的浏览器,扩展由C&C服务器提供。该扩展基本上是另一个独立的信息窃取器,研究人员称之为VenomSoftX,但由ViperSoftX安装,如下所述。该扩展伪装成各种流行的浏览器扩展,以避免用户检测。

VenomSoftX的主要目标也是窃取受害者的加密货币。不同的是,VenomSoftX主要通过在一些流行的加密交易所提供的API请求来实现窃取。例如,当调用某个API发送资金时,VenomSoftX会在发送请求之前篡改该请求,从而将资金重定向给攻击者。虽然原理上类似于ViperSoftX这样的信息窃取器,而且是一种常见的剪贴板篡改,但这种技术是在较底层执行的,这意味着受害者几乎没有机会注意到钱被转移到其他地方。

关于安装扩展,ViperSoftX的方法较为简单。恶意软件从C&C服务器下载VenomSoftX PowerShell安装脚本,例如,通过Base64直接从PowerShell脚本解码硬编码请求数据,然后请求:http://apps-analyser[.]com/api/v1/

具体取决于恶意软件版本。这可以做到加载不同的攻击载荷,但研究人员主要关注点为VenomSoftX浏览器扩展。

从C&C服务器下载安装程序脚本并提取VenomSoftX浏览器扩展程序后,安装程序将搜索几个位置的.LNK文件,如果此类链接文件属于Chrome,Brave,Opera或Edge,则进行修改,添加参数 - load-extension = 。这样,当用户启动自己常用的浏览器时,他们实际上将加载恶意扩展。

这些链接文件通常位于:

  • %USERPROFILE%\\Desktop

  • %USERPROFILE%\\OneDrive\\Desktop

  • %PUBLIC%\\Desktop

  • %ALLUSERSPROFILE%\\Microsoft\\Windows\\Start Menu\\Programs

  • %APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs

  • %APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar

扩展ID是随机生成的,生成随机小写字符来表示扩展文件夹和随机生成的扩展版本号:$(Get-Random -Minimum 1 -Maximum 10).$(Get-Random -Minimum 1 -Maximum 10).$(Get-Random -Minimum 1 -Maximum 10)._0

研究人员观察到ViperSoftX的进一步版本包含完整的更新机制。这些版本能够遍历修改.LNK文件,解析恶意扩展的manifest.json文件,并且当在受感染的系统上检测到比C&C服务器通告的版本更旧的扩展版本或旧的写入时间戳时,恶意软件请求更新并通过专用命令(由C&C服务器提供)将扩展文件替换为最新版本。

该扩展试图将自己伪装成众所周知的常见浏览器扩展,如GoogleSheets。事实上,VenomSoftX是另一个部署到受害者主机的信息窃取器,拥有用户通过受感染的浏览器访问的每个网站的完全访问权限。

图8:伪装成GoogleSheets的浏览器扩展

该扩展包含几个文件,如下表所示。每个文件的目的不同:

文件名

功能

128.png

用于伪装扩展的GoogleSheets图标

content.bootstrap.js

进行而已操作,通过MQTT发送结果

manifest.json

扩展的manifest文件

rules.json

针对Kucoin虚拟货币的URL过滤器

webpack_block.js

针对Blockchain.com的请求篡改与凭证窃取

webpack_bnb.js

针对Binance的请求篡改与凭证窃取

webpack_cb.js

针对Coinbase的请求篡改与凭证窃取

webpack_common.js

包含用于模式匹配、剪贴板监视和窃取的地址簿

webpack_content.js

当没有检测到货币交易时,将受害者输入的地址替换为攻击者的地址

webpack_gt.js

针对Gate.io的请求篡改与凭证窃取

webpack_kuc.js

针对Kucoin的请求篡改与凭证窃取

该恶意扩展主要针对五个大型加密货币交易所,模块名称中的缩写反映了这一点。

content.bootstrap.js模块是VenomSoftX的入口,每次访问站点时都会加载该模块。它协调加载什么模块,还负责将窃取的数据发送到C&C服务器。

根据访问的域名加载脚本。引导程序检查正在加载的站点,判断它是否是以下站点之一:Blockchain.com、Binance、CoinBase、Gate.io或Kucoin,模块加载适当的“webpack”。如果用户在任何其他站点上,则加载webpack_content.js。无论受害者访问哪个站点,模块webpack_common.js是默认加载的。

图9:确定要加载哪些模块的过程(去混淆后)

所有模块都有具体的用途。然而,其中两个模块webpack_common.js和webpack_block.js,能够使用content.bootstrap.js中的Paho MQTT客户端将数据发送回收集服务器。MQTT客户端有一个事件侦听器,设置为硬编码值b8b0becb-080a-46af-9688-e3671fcc4166,该值指示应将数据发送到MQTT代理:broker.emqx[.]io,以获取数据。注意收集服务器地址在不同版本中可能有所不同。

发送数据的格式如下:

MSG: time:

ip:

data:

时间和 ip 字段是通过公共服务( https://worldtimeapi[.]org/api/ip )获得的。

data字段要么是带有加密钱包和其他元数据的剪贴板内容,要么是 lockchain.com 的被盗凭证。

webpack_common.js包含的“通用”模块加载到每个网站,无论是否为加密货币交易所。它用于定义带有正则表达式的地址簿,在其他模块中多用于加密地址匹配。

地址簿的结构是字典的形式,其中键是正则表达式,值是另一个包含三个值的字典:coin、address以及network。在下面的代码片段中可以看到这样一个地址簿的示例:

图10:一段可能的地址簿(不完整,去混淆后)

此外,每次用户粘贴任何东西到任何网站(除了地址簿中的恶意地址) ,这个模块检查剪贴板内容是否匹配任何地址簿中的正则,如果匹配,它发送Base64编码后的以下数据到收集服务器。MQTT 信息的数据结构如下:

Action

Site:

Browser:

Clipboard:

Time:

在受害者不在上述任何交易网站时将加载webpack_centent.js模块,监测用户填写到网站的以下两个输入节点的内容:HTMLInputElement、HTMLTextAreaElement。

这是通过挂钩这些元素的 getter来尝试为用户的输入找到一个兼容的加密地址,如果找到了,恶意软件就会创建一个新的 localStorage 条目,其中包含访问过的站点和兼容的地址:Site _ attackerAddress: userAddress

当提供的地址与前一节中描述的地址簿中的任何正则表达式匹配时,就可以找到兼容的地址。

之后,自定义MutationObserver会监视站点中的动态变化(例如加载页面、在用户的messenger客户端中显示先前发送的消息等),如果发生这种变化,恶意软件会使用localStorage将所有提到的恶意地址(如果发现)替换为用户的地址。这有效地隐藏了网站正文中恶意地址的所有痕迹。

注意由于信息直接存储在持久的localStorage中,因此该功能在浏览器重新启动后、电脑重新启动后或在未来任何时候重新访问页面时都可以继续使用。受害者必须清除浏览器中的用户数据或完全卸载恶意软件扩展,以消除恶意行为。

为了演示这种行为,研究人员搭建了一个漏洞演示,演示恶意扩展激活时页面的行为:

  • 前两个按钮 Attacker address和User address, 填充了用于攻击者的钱包地址到 “Dynamic content to be pasted” 行;

  • “Get value” 按钮触发getter,但未触发钩子,因为提供的地址与cryptowallet地址模式不匹配(太短);

  • 用户填入了一个完整的地址;

  • “Get value” 按钮创建了一个包含输入地址的localStorage项;

  • localStorage中的地址被替换为攻击者的地址。

图11:攻击流程演示

正如上文提到的,VenomSoftX专注于五个不同的加密交易所网站,即Blockchain.com,Binance,Coinbase,Gate.io和Kucoin。

在这些模块中,恶意软件试图通过篡改网站操作的API请求,例如撤回货币或发送安全代码。这是通过在API请求上创建钩子,解析其结构并用所需攻击者的内容代替响应体来完成的,这通常意味着接收者的地址也被攻击者的地址替代。如果已知余额,则将金额设置为可用帐户余额的值。然后,恶意软件在用户无法注意的情况下发出请求,将受害者的余额全部窃取。

注意用户几乎没有机会意识到这一点。例如,与常见的剪贴板篡改相比,这种“篡改”是在较底层的级别上执行的。由于区块链/分类账上的交易本质上是不可逆的,因此当用户随后检查付款的交易历史时,已经太迟了。

唯一不同于其他文件的文件是webpack_block.js。此模块侧重于www.blockchain[.]com,它试图劫持https://blockchain[.]info/wallet,通过修改密码字段的getter以窃取输入的密码。发送API请求后,从请求中提取钱包地址,与密码绑定,并通过MQTT将Base64编码后的JSON发送给收集器。

由于剩下的钩子在忽略API差异后在较高层面上并无差异,因此这里只以Binance模块为例。

Binance模块识别六个调用恶意交互的不同API调用。当用户登录到站点时,请求API https://www.binance[.]com/bapi/asset/v3/private/asset-service/asset/get-user-asset。VenomSoftX会调用该模块,解析并保存受害者帐户上的所有可用资产。当用户试图操纵存款,例如使用该API:https://www.binance[.]com/bapi/capital/v3/private/capital/withdraw/apply取款时,恶意软件会拦截该请求并篡改请求主体,如果找到兼容的攻击者地址,则修改地址以将资金重定向到攻击者的地址。请求的金额也设置为上一步骤获得的最大可用金额。篡改后,请求会像无事发生一样被进一步传递,从而有效地窃取了受害者钱包的全部资产。

4.结论

在本文中,仔细分析了ViperSoftX一个长期活跃的信息窃取器,以及它的恶意浏览器插件VenomSoftX。本文描述了两个信息窃取器的感染利用链,以及原始攻击载荷如何在受感染的系统上隐藏和解密。

本文描述了ViperSoftX和VenomSoftX窃取的内容,以及浏览器扩展如何充分利用其对受害者访问的每个页面的访问权限,并通过默默地篡改常见货币交易所使用的API请求来实施浏览器中间人攻击,从而窃取受害者的帐户全部资产。

附录 攻击指标

(1)GitHub仓库

https://github.com/avast/ioc/blob/master/ViperSoftX/

参考链接:https://decoded.avast.io/janrubin/vipersoftx-hiding-in-system-logs-and-spreading-venomsoftx/

编辑|王浩钧

审校|何双泽、金矢

本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。

声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。