分析黑斑羚-第一次NuGet攻击战役的有效载荷

“第一个NuGet恶意包活动”系列的第二部分

分析黑斑羚-第一次NuGet攻击战役的有效载荷

在这篇博文中,我们将详细分析一个我们称之为“Impala Stealer”的恶意有效载荷,这是一个自定义的加密窃取器,被用作我们曝光的NuGet恶意软件包活动的有效载荷在我们之前的文章中。这个复杂的攻击活动通过NuGet恶意软件包针对。net开发人员,JFrog安全团队能够检测并报告它,这是我们暴露供应链攻击的常规活动的一部分。

攻击者使用假输入技术传播了13个恶意软件包,这些软件包冒充合法软件包,其中一些非常流行。攻击者利用了NuGet包结构,该结构允许插入将在安装时执行的PowerShell脚本,以执行两阶段攻击。在第一阶段,init.ps1安装时自动执行捆绑在恶意包中的PowerShell脚本,以便下载并执行Windows可执行文件。在第二阶段,下载的可执行文件将自己安装为持久后门,然后再瞄准《出埃及记》的钱包桌面应用程序通过使用代码注入,以获得对用户加密货币账户的访问权限。

由于有效负载被(一些)恶意包引用为黑斑羚我们在有效负载的调试字符串中也看到了这个名称,因此我们决定命名这个自定义有效负载黑斑羚偷窃者

NuGet包含Impala Stealer的恶意软件包

包名 老板 下载数 发布日期 模仿包
Coinbase。核心 BinanceOfficial 121.9 k 2023-02-22 Coinbase
Anarchy.Wrapper.Net OfficialDevelopmentTeam 30.4 k 2023-02-21 Anarchy-Wrapper
DiscordRichPresence。API OfficialDevelopmentTeam 14.1 k 2023-02-21 DiscordRichPresence
Avalon-Net-Core joeIverhagen 1.2 k 2023-01-03 AvalonEdit
Manage.Carasel.Net OfficialDevelopmentTeam 559 2023-02-21 N/A
Asip.Net.Core BinanceOfficial 246 2023-02-22 微软。AspNetCore
Sys.Forms.26 joeIverhagen 205 2023-01-03 System.Windows.Forms
Azetap。API DevNuget 153 2023-02-27 N/A
AvalonNetCore RahulMohammad 67 2023-01-04 AvalonEdit
Json.Manager.Core BestDeveIopers 46 2023-03-12 通用的。net名称
Managed.Windows.Core MahamadRohu 37 2023-01-05 通用的。net名称
Nexzor.Graphical.Designer.Core 黑斑羚 36 2023-03-12 N/A
Azeta。API Soubata 28 2023-02-24 N/A

黑斑羚偷车技术分析

黑斑羚的主要有效载荷是一个可执行文件。在本节中,我们将详细说明有效载荷的动作,以及我们能够从其分析中得出的结论。

有效载荷的能力可分为三类:

  1. 持久性
  2. 自动更新
  3. Crypto-stealing

有效负载格式

有效负载是一个可执行文件,看起来像是编译过的。net应用程序本机使用。net提前(AoT)编译,这是一个将。net中间语言转换为本机语言(在我们的示例中是x86-64)的过程。这个AoT编译可能是作为一个困惑第一步,由于本地代码比中间语言二进制代码更难逆向工程:
从二进制文件中的字符串视图显示它是一个。net应用程序编译AOT

从二进制文件中的字符串视图显示它是一个。net应用程序编译AOT从二进制文件中的字符串视图显示它是一个。net应用程序编译AOT

有效负载还嵌入了两个额外的二进制可执行文件:

  1. 一个自定义更新器应用程序,我们将在这篇文章后面分析
  2. Rasar,用于提取和压缩的工具电子档案

黑斑羚的高级概述

黑斑羚偷车和更新流程图黑斑羚偷车和更新流程图

安装和自动更新机制

在执行时,负载首先检查目录是否% USERPROFILE % \ .nuget存在与否。如果不存在,则有效载荷立即退出。这可能是一种确保通过NuGet将有效负载放入系统的方法。

正在检查是否存在%USERPROFILE%\。nuget文件夹正在检查是否存在%USERPROFILE%\。nuget文件夹

之后,有效负载将另一个可执行文件(嵌入在原始有效负载中)放到% LOCALAPPDATA % \ \ Updater.exe松鼠- 2021,并将此路径添加到微软HKEY_CURRENT_USER \ SOFTWARE \ \ Windows \ CurrentVersion \运行,以确保它会被执行每次用户登录系统时

通过运行注册表键安装恶意软件通过运行注册表键安装恶意软件

这个可执行文件,我们称之为“更新器”,是一个。net可执行文件,它尝试从远程位置下载可执行文件,然后将其保存到路径中% PROGRAMDATA % \ XboxGameBar \ RuntimeBroker.exe,最后执行。

更新机制执行的操作更新机制执行的操作

传递给的URLDownloadData函数与NuGet包中PowerShell脚本下载负载时使用的URL相同。因此,我们得出结论,这个可执行文件可能使恶意软件保持最新状态,并保护它不被删除。

通过代码注入实现持久性

在创建了Updater可执行文件之后,有效负载执行更多的操作以在系统中建立自己。如果系统上安装了Discord或Microsoft Visual Studio Code,则有效负载将向它们注入JavaScript代码,从而使它们运行RuntimeBroker.exe(主Impala可执行文件,由Updater下载)。

在Discord中,JavaScript代码被添加到% LOCALAPPDATA % \不和\ app - <版本>不和\ \ discord_voice-2 \ discord_voice \ index.js模块

代码注入Discord代码注入Discord

在Visual Studio Code中,JavaScript代码被添加到% LOCALAPPDATA % \程序\微软VS资源代码\2022世界杯阿根廷预选赛赛程 \ app \ \ main.js

注入VS Code的代码注入VS Code的代码

从你的Exodus钱包中“解放”资金

在系统的基础上,黑斑羚开始执行其主要有效载荷。

的安装《出埃及记》的钱包桌面应用程序。如果找到了,恶意软件就会寻找该文件% LOCALAPPDATA % \外流\ app - <出埃及记>版本\ \ app2022世界杯阿根廷预选赛赛程.asar资源。这个文件是电子档案,包含Exodus应用程序2022世界杯阿根廷预选赛赛程的资源、网页和JavaScript代码。有效负载创建文件的备份,然后使用嵌入的可执行副本提取它Rasar

提取存档后,有效载荷尝试从在线粘贴网站下载JavaScript代码片段:

从有效负载二进制文件粘贴URL注入VS Code的代码

在撰写本文时,该粘贴已被删除,因此我们无法获取其内容,但我们可以从执行的操作中推测其功能:

有效负载编辑提取出的Exodus应用程序的JavaScript文件中的3个:

  1. src \静态\ wallet.htmlImpala添加urlhttps://discord.com/Content-Security-Policy,允许页面连接到不和谐域-。

    代码注入到Exodus的src\static\wallet.html中代码注入到Exodus的src\static\wallet.html中

    这样做是为了允许Impala通过硬编码的Discord webhook泄露敏感数据:https[:] / /不和com/api/webhooks/1076330498026115102/MLkgrUiivlgAoFWyvkSpLsBE3DMaDZd9cxPK3k9XQPyh6dw55jktV6qfDgxbs5AaY7Py。

  2. src \ app \ \ index.js黑斑羚补充道discord.com钱包域:

    代码注入到Exodus ' src\app\main\index.js代码注入到Exodus ' src\app\main\index.js

    这可能与上面提到的原因相同(通过Discord进行泄漏)。

  3. src \ app \ \ index.js钱包的调用之后,Impala添加了从在线粘贴中提取的代码等待this._loadLightningCreds ()代码注入到Exodus的src\app\wallet\index.js中

    代码注入到Exodus的src\app\wallet\index.js中

因为我们不能从在线粘贴中获得注入的JavaScript代码,所以我们不能确切地说它的目的是什么。但是,我们检查了中的代码src \ app \ \ index.js钱包我们能够分辨出这是对_loadLightningCreds在Exodus Wallet用户插入他们的密码以登录到钱包之后就完成了。在这一点上,_loadLightningCreds使用凭证解密多个文件。

应该从删除的粘贴中添加的代码可能被用来窃取Exodus和其他加密货币交换平台的用户凭证,或者用它们来解密Exodus钱包的重要文件。在将恶意代码注入JavaScript文件后,有效负载将它们压缩回“app.asar”文件,从而导致Exodus在运行时运行恶意代码。

在将恶意代码注入Exodus后,Impala会向前面提到的硬编码的Discord webhook发送一条消息,其中包含以下数据:

    • 内容:
      “css
      用户出埃及已被关闭,抱歉
      ' ' '
    • 用户名:黑斑羚的出埃及探测
  • avatar_url:https [:] / / www.startpage [] com/av/proxy-image ? piurl = https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fen%2F9%2F9b%2FTame_Impala_-_Currents.png&sp = 1676686318 t1f4463dbc9a9476b9d1c842a525a4dcfb610c3d6875da7a162ab7fc8136a17b2

此消息可能用于通知攻击者攻击成功。

结论

总之,供应链攻击在过去几年中呈上升趋势,这也应该被视为NuGet开发者面临的严重风险。我们的研究团队首次暴露了一个复杂的攻击,其中几个恶意软件包被传播,依赖于打字仿冒技术和冒充合法软件包。根据我们的分析,攻击的有效载荷主要针对Exodus钱包应用程序,向其注入恶意代码,旨在将受害者的凭据泄露给加密货币交易所。

.NET开发人员-请参阅我们之前的博客文章,了解如何识别和保护自己免受恶意NuGet包

与JFrog安全研究保持同步

除了暴露新的安全漏洞和威胁之外,JFrog还通过自动安全扫描为开发人员和安全团队提供了访问其软件最新相关信息的便捷途径JFrog x光。这包括增强的CVE元数据和修复建议。

关注我们的产品更新,包括自动漏洞和恶意代码检测,以抵御最新出现的威胁研究网站安全研究博客文章,在推特上@JFrogSecurity