ESET研究:揭开 AsyncRAT 的面纱,穿越分叉的迷宫。

ESET 研究人员绘制了 AsyncRAT 变体的庞大层次结构之间的迷宫般的关系

揭开 AsyncRAT 的面纱:穿越分叉的迷宫

AsyncRAT 已经巩固了其作为现代恶意软件基石和普遍威胁的地位,该威胁已演变成一个庞大的分支和变体网络。虽然它的功能本身并不那么令人印象深刻,但真正放大其影响力的是 AsyncRAT 的开源性质。这篇博文概述和分析了 AsyncRAT 最相关的分支,在它们之间建立了联系并展示了它们是如何演变的。

这篇博文的要点:

  • 我们提供对 AsyncRAT 及其众多变体的独特见解,以便轻松驾驭分叉的迷宫。
  • 为了绘制 AsyncRAT 分支的庞大层次结构,我们揭示了它们独特的互连,并记录了如何区分这些变体。
  • 我们探索了具有独特插件的不太常见的变体,从基本的尖叫插件到 USB 恶意软件传播器。

AsyncRAT 的起源

您可能听说过 AsyncRAT,异步远程访问木马的缩写。这个开源 RAT 于 2019 年由一位名为 NYAN CAT 的用户在 GitHub 上发布。它采用 C# 开发,提供广泛的典型 RAT 功能,包括键盘记录、屏幕捕获、凭据盗窃等。其简单性和开源性使其成为网络犯罪分子的热门选择,导致其广泛用于各种网络攻击。

但它从何而来?我们认为,AsyncRAT 的基础早些时候是由 Quasar RAT 奠定的,它自 2015 年以来一直在 GitHub 上提供,并具有类似的方法。两者都是用 C# 编写的;然而,它们的代码库存在根本差异,这表明 AsyncRAT 不仅仅是 Quasar 的一个分支,而是完全重写。在这种情况下,分叉是其他人存储库的个人副本,可以自由修改,而不会影响原始项目。将它们联系在一起的主要链接在于用于解密恶意软件配置设置的自定义加密类。具体来说,这些类是 Aes256 和 Sha256 类,它们属于 AsyncRAT 的 Client.Algorithm 命名空间和 Quasar 的 Quasar.Common.Cryptography 命名空间。图 1 显示了 Aes256 的两种实现中使用的相同代码。

图 1.AsyncRAT(左)和 Quasar(右)之间的密码学类比较
图 1.AsyncRAT(左)和 Quasar(右)之间的密码学类比较

相同的代码大多是复制和粘贴的,包括相同的盐值和解密设置。这类与 Sha256 一起使我们相信 AsyncRAT 在某种程度上受到了类星体 RAT 的影响。

除了这些相似之处之外,AsyncRAT 还引入了重大改进,特别是在其模块化架构和增强的隐身功能方面,使其在现代威胁环境中更具适应性且更难被检测。其基于插件的架构和易于修改引发了许多分叉的激增,进一步突破了界限。

叉子迷宫

自向公众发布以来,AsyncRAT 在其基础上催生了许多新的分叉。其中一些新版本在原始框架的基础上进行了扩展,融入了额外的功能和增强功能,而另一些则本质上是相同的版本,但内容不同。

分叉层次结构

图 2 说明了一些更普遍的 AsyncRAT 分支如何随着时间的推移相互演变。

Figure 2. A small subset of forks highlighting their derivative relationships
图 2.突出显示其衍生关系的一小部分分叉

树的中间是 DcRat 和 VenomRAT。我们的分析表明,它们是部署最广泛的变体,共同占了大量活动。其他鲜为人知的分叉占据了蛋糕中较小但仍然值得注意的部分。图 3 根据我们的遥测数据描述了最普遍的分支的分布。

图 3.2024 年第二季度最常见的分叉分布
图 3.2024 年第二季度最常见分叉的分布,以唯一样本数量衡量

DcRat 在特性和功能方面比 AsyncRAT 有了显着改进。更明显的变化之一是用于来回传输数据的数据结构。它利用 MessagePack,一个著名的开源库,用于更高效的二进制数据序列化。DcRat 还实现了 AMSI 和 ETW 修补等规避技术,这些技术通过禁用检测和记录恶意行为的安全功能来工作 – AMSI 修补会阻止脚本扫描,而 ETW 修补会阻止事件跟踪。此外,它还具有一个反进程系统,通过该系统,名称与拒绝列表中的名称匹配的进程将被终止。列入黑名单的程序包括Taskmgr.exe、ProcessHacker.exe、MsMpEng.exe、Taskkill.exe等。

还值得注意的是,DcRat 的插件基础建立在 AsyncRAT 之上,并进一步扩展了其功能。添加的插件包括网络摄像头访问、麦克风录制、Discord 令牌盗窃和“有趣的东西”等功能,这是用于开玩笑目的的插件集合,例如打开和关闭 CD 托盘、阻止键盘和鼠标输入、移动鼠标、关闭显示器等。值得注意的是,DcRat 还引入了一个简单的勒索软件插件,它使用 AES-256 密码来加密文件, 解密密钥仅在请求插件后分发。除此之外,似乎还有许多小的变化,例如不同的盐选择(字符串而不是二进制值)、故意更改变量名称以进一步逃避检测、动态 API 解析等等。

另一方面,VenomRAT 可能受到 DcRAT 的启发,如识别版本部分所证明的那样。该恶意软件包含如此多的功能,以至于它可以单独被视为一个单独的威胁。我们选择将其归入 AsyncRAT 下,因为它们的客户端部件彼此非常相似。其他供应商已经更详细地记录了 VenomRAT 的功能和插件,因此我们不会在本博文中深入探讨它们。

不过,并非所有 RAT 本质上都是严肃的,这同样适用于 AsyncRAT 分支。像 SantaRAT 或 BoratRAT(见图 4)这样的克隆本来就是开玩笑的。就前者而言,其作者自己也承认该项目基本上是“无耻地从 DcRat 中抄袭的”。然而,尽管如此,我们还是发现了在野外实际使用它们的实例。

图 4.BoratRAT 官方促销标志
图 4.BoratRAT 官方促销标志

识别版本

在进行分析时,我们使用各种方法来识别和分类每个样本。应该指出的是,研究主要是针对恶意软件的客户端部分,因为这个二进制文件最终出现在受害者的机器上。它包含有用的信息,例如恶意软件配置以及可以在哪里找到有关 C&C 的信息。

识别分支的最快、最直接的方法是直接查看恶意软件的配置,这通常可以在 InitializeSettings 函数中找到。配置值使用 AES-256 加密,并作为 base64 字符串存储在 Settings 类中。在大多数情况下,正确的分支名称很容易获得,并且可以方便地标记为 Version。在我们分析的样本中,大约 90% 的“版本”字段包含对分支名称或恶意软件作者的化名的一些有意义的描述。其余样本有意将此字段留空。图 5 说明了 DcRat 及其衍生产品(在本例中为 VenomRAT)中的典型配置初始化过程。

Figure 5. Initialization of VenomRAT configuration values
图 5.VenomRAT 配置值的初始化

如果“版本”字段为空,有时可以通过查看用于加密配置的 Salt 值来获得另一个线索。攻击者在复制粘贴自己的分支时经常忽略此参数。Salt 值可以在 Client.Algorithm.Aes256 类中找到,如图 6 所示。

Figure 6. Extraction of the Salt value in the constructor of VenomRAT’s cryptography class
图6.在 VenomRAT 的密码学类构造函数中提取 Salt 值

获得更多见解的另一种方法是查找用于验证 C&C 服务器的嵌入式证书。它也作为 base64 编码值位于配置中。解压缩此值通常会显示有关服务器的更多信息,例如公用名、组织和组织单位。如果某个特定分支在“版本”字段中有自己的名称,则通常可以通过查看 CN 字段来追溯它可能基于的上一个分支。图 7 显示了一个 DER 编码的证书,该证书在提取和解码后显示了 BoratRAT 分支。

Figure 7. Client certificate after extraction
图7.提取后的客户端证书

上述技术主要适用于恶意软件作者不费心删除痕迹或使用默认证书的微不足道的情况。存在一种更复杂的识别 AsyncRAT 服务器的方法,它涉及向 C&C 服务器发送特制的数据包。这篇 Axel Mahr 博客文章详细解释了这种方法。

如果其他一切都失败了,最终可以通过手动检查代码来确定样本来源。这涉及对代码的结构、语法和功能进行详细分析,并将它们与先前分类的样本的模式进行比较。

广泛的分叉列表

我们在这里重点介绍了一些更突出的 AsyncRAT 分支。由于可用前叉的数量众多,因此无法覆盖每一个前叉。为了完整起见,图 8 提供了已知用于恶意目的的 AsyncRAT 分支的扩展列表,如迄今为止的 ESET 遥测所示。

图8.扩展的分支层次结构列表
图8.扩展的分支层次结构列表

探索鲜为人知的变体

到目前为止,我们已经提到了一些主导景观的主要分叉。在本节中,我们精选了一些鲜为人知的分支,这些分支增强了 AsyncRAT 的功能,超出了默认版本中包含的功能。这些奇异的叉子通常是一个人或一组人的工作,它们占 AsyncRAT 样本体积的不到 1%。

非欧几里得抗治抗原虫

这个分支的突出之处主要在于它在默认插件之上包含新插件。虽然有些插件可能看起来微不足道或面向“有趣的东西”,但其他插件(如WormUsb.dll)具有明显的恶意目的。表 1 列出了偏离常规分支中标准插件基础的非欧几里得 RAT 插件的选择。

表 1.我们认为有趣的非欧几里得 RAT 插件选择

插件名称描述
Screamer.dll跳跃恐慌插件。
Piano.dll通用音频播放器。
Service.dllWindows 服务管理。
Maps.dll收集用户的地理位置信息。
WormUsb.dll恶意软件传播者插件。
Brute.dllSSH 和 FTP 暴力破解器。
签名Antivirus.dll简单的基于签名的文件匹配器。
cliper.dll将剪贴板数据替换为攻击者的加密货币钱包地址。

Screamer.dll

插件中内置了五个跳跃恐慌图像。攻击者发送一个命令,指示他们要使用的图像,以及要播放的 WAV 文件,以及触发跳跃恐慌的延迟。图 9 显示了攻击者可以选择的前三个预捆绑映像。

Figure 9. Three bundled jump scare images of the screamer plugin
图9.screamer 插件的三个捆绑跳跃惊吓图像

Piano.dll

该插件播放任意 WAV 文件。所有声音文件都存储在 %appdata%\Piano 中。piano.dll 支持三个命令:

  • SetSound – 将新的声音文件添加到 %appdata%\Piano,
  • PlayMisc – 播放来自 %appdata%\Piano 的请求的声音文件,以及
  • ClientAdd – 从 C&C 服务器检索多个声音文件。

Service.dll

该插件有助于管理 Windows 服务,例如启动、停止和暂停服务。

Maps.dll

这是一个简单的插件,用于从受害者那里收集地理位置信息。它使用 .NET GeoCoordinateWatcher 类注册回调函数,以便在每次位置可用时收集数据。收集的信息包括纬度、经度、用户名和计算机名称。

WormUsb.dll

该插件使用攻击者指定的任意有效负载破坏 PE 文件。

尽管WormUsb.dll术语是 Usb,但该插件根据提供的命令针对多个位置:

  • InfectExe – 破坏单个 PE 文件,
  • InfectExeInWindows – 针对个人文件夹(桌面、文档、下载、我的音乐)中的 PE 文件,以及
  • InfectUsbExe – 针对除 C 驱动器之外的所有驱动器中的 PE 文件。

在幕后,它的工作原理是将原始文件移动到临时位置。然后它会删除一个小存根来代替原始文件。然后,该存根的资源部分将填充以包含原始文件和指定的有效负载,这两个文件都使用在构建时生成的每个文件密钥进行压缩和加密。在此之后,恶意软件通过引入代理方法、添加自定义控制流混淆和变量重命名来混淆存根。作为最后的润色,它将原始图标和元数据嵌入到修改后的存根中。图 10 显示了负责破坏单个文件的函数,其原始方法名称。

Figure 10. Compromise function of a WormUsb.dll plugin
图 10.WormUsb.dll插件的妥协功能

当执行此类受损文件时,它首先解密、解压缩并运行有效负载程序,然后继续对原始程序执行相同的作。

Brute.dll

该插件支持从客户端对 SSH 和 FTP 协议进行暴力破解。攻击者向其提供三个参数:主机、登录名和密码,插件将尝试使用这些凭据进行连接。如果连接成功,凭据将发送回攻击者,并带有指示成功的标志。不难想象,攻击者可能会使用这种攻击在大量受感染的计算机上分发暴力破解,从而规避仅基于 IP 地址的限制。

签名Antivirus.dll

该插件的名称暗示它可能与防病毒功能有关。虽然这在技术上是正确的,但它也是有史以来最原始的手动防病毒解决方案的一个案例。该插件从攻击者那里接收 MD5 哈希列表,并将它们与它在每个磁盘上找到的所有 EXE 文件的哈希值进行比较。如果找到匹配的文件,它会触发名称奇怪的 DetectVirus 函数,该函数只会删除该文件而不进行任何进一步分析。这使得插件的名称充其量非常可疑。在恶意软件作者手中,它可能被用来删除竞争对手的恶意软件,或者实际上只是任何任意文件。

cliper.dll

这是一个独立的剪辑器,可以持续监控受害者的剪贴板,如果检测到加密货币钱包地址,它就会被攻击者提供的地址替换。攻击者提供的钱包仅在首次请求插件时发送;它们没有在插件中硬编码。此外,在图 11 中,我们还可以看到一些信用卡条目。该插件包含广泛的正则表达式列表,可以检测加密货币钱包和信用卡,在后者的情况下,它们只会被发送回攻击者。

Figure 11. Wallets and cards monitored by cliper.dll
图 11.cliper.dll监控的钱包和卡

杰森鼠

该变种于 2024 年被发现,显示出持续的活动迹象。有趣的是,它采用了晦涩难懂的变量命名约定,让人想起恶意软件作者所说的《杰森之书》中的“撒旦”术语。在图 12 中,您可以看到典型的 AsyncRAT 配置值(在 base64 中),但重命名了变量,而图 13 显示了恶意软件主要入口点的逻辑。除了通常的配置值外,此变体还通过引入国家/地区定位进一步扩展了客户端。

Figure 12. Partially obfuscated JasonRAT configuration values
图 12.部分混淆的 JasonRAT 配置值
图 13.显示重命名函数名称的主 JasonRAT 入口点
图 13.显示重命名函数名称的主 JasonRAT 入口点

另一个奇怪的功能是字符串混淆的选择。字符串的子集通过利用摩尔斯电码的扩展变体采用额外的混淆层。包括大小写字母,以及一些特殊字符。图 14 显示了使用扩展映射的编码注册表项字符串。

Figure 14. Extended Morse code used as string obfuscation in JasonRat
图 14.在 JasonRat 中用作字符串混淆的扩展摩尔斯电码

XieBroRAT

这是一个中文本地化的 RAT。它引入了一个新插件 BrowserGhost.dll,它是一个浏览器凭据窃取程序。另一个插件 Abstain.dll 通过建立反向连接来提供与 Cobalt Strike 服务器的交互。

为了扩大覆盖范围,恶意软件提供了几种不同语言的交付链。标准 .NET 客户端二进制文件可以通过 shellcode、VBS 或 JavaScript 包装和分发。

最后,作者通过大量借鉴开源项目,集成了 mimikatz、SharpWifiGrabber、SharpUnhooker 等工具,进一步扩展了恶意软件。

结论

AsyncRAT 的兴起及其随后的分叉凸显了开源恶意软件框架的固有风险。我们的分析揭示了一个多样化且不断发展的衍生品生态系统,从 DcRat 和 VenomRAT 等持续威胁到 JasonRAT 和 BoratRAT 等鲜为人知的新奇分叉,这些分支似乎更像是好奇心而不是可靠的威胁。所有这些分叉不仅扩展了 AsyncRAT 的技术能力,还展示了威胁行为者如何快速和创造性地调整和重新利用开源代码。

此类框架的广泛使用显着降低了有抱负的网络犯罪分子的进入门槛,即使是新手也能以最小的努力部署复杂的恶意软件。恶意软件开发的民主化——特别是考虑到法学硕士的日益普及以及滥用其功能的可能性——进一步加速了恶意工具的创建和定制,导致威胁形势迅速扩大且日益复杂。

鉴于这些趋势,可以合理地预期未来的分叉可能会包含更先进的混淆、模块化和规避功能。这种潜在的演变强调了主动检测策略和更深入的行为分析对于有效应对新出现的威胁的重要性。

有关我们在 WeLiveSecurity 上发布的研究的任何疑问,请通过 threatintel@eset.com 与我们联系。

ESET Research 提供私有 APT 情报报告和数据源。有关此服务的任何查询,请访问 ESET 威胁情报页面。

物联网

可以在我们的 GitHub 存储库中找到入侵指标 (IoC) 的完整列表。

文件

SHA-1文件名检波描述
F8E31B338123E38757F8B7099797119A038A3538Screamer.dllMSIL/AsyncRAT.C非欧几里得跳跃恐慌插件。
98223D2F8DF2F9E832AE081CD6E072A440C9A3CDPiano.dllMSIL/AsyncRAT.CNonEuclid 音频播放器插件。
CDEC9A1C73E3E21B1D70DDAA6BF139D8D2A197A5Maps.dllMSIL/AsyncRAT.C非欧几里得地理定位插件。
932C49EEE087D432D0DA10CC0640B11FD2C91203Service.dllMSIL/AsyncRAT.C非欧几里得 Windows 服务管理插件。
2FA98D088486BAC57FF60E072E28FEE5830E7B28WormUsb.dllMSIL/AsyncRAT.C非欧几里得恶意软件传播器插件。
62C9FEFA84067F695032A6939F07C3799AAD80A3Brute.dllMSIL/AsyncRAT.CNonEuclid SSH 和 FTP 暴力破解器插件。
FAD946F7ACF017F0C50C81BF379AABA3528AFBB3签名Antivirus.dllMSIL/AsyncRAT.C基于非欧几里得签名的文件匹配器插件。
51B8A5818B7031EDB59A2B2ECF160A78505880BAcliper.dllMSIL/AsyncRAT.CNonEuclid 剪贴板劫持插件。
4FB0CAAD6E345947EE2D30E795B711F91C6A4819Stub.exeMSIL/异步RAT.AAsyncRAT 客户端。
FD9CF01CEA7DE8631C34B988A7AAD55587A162FAStub.exeMSIL/异步RAT.A3LoshRAT 客户端。
B8AB93E958E0DE4BE2766B2537832EDB37030429Client.exeMSIL/异步RAT.ADcRat 客户端。
68B58483D0E4E7CC2478D6B4FC00064ADE3D7DB3Microsoft_Edge_Driver.exeMSIL/异步RAT.AVenomRAT 客户端。
4F69E0CE283D273B724CE107DF89F11C556A7A4EClient.exeMSIL/AsyncRAT.CBoratRAT 客户端。
E4F87568473536E35006D1BD4D4C26A8809F3F91Client.exeMSIL/异步RAT.A无政府状态小组客户端。
D10B8197732437E9BF840FEA46A30EFF62892A4EClient.exeMSIL/异步RAT.ACollapseRAT 客户端。
0DC28EA51F0D96E0D1BC78DF829C81A84332C5F1dwm.exeMSIL/异步RAT.AShadow X RAT 客户端。
E5B511E7550CBADE74E75EADE8F413A89D963FE5ClientAny.exeMSIL/异步RAT.ALMTeamRAT 客户端。
3124F58428184FDF75E21B1E5A58CADF9DD2BA03Stub.exeMSIL/异步RAT.APhoenixRAT 客户端。
8402AA507CF5B1BBFAB53E3BF7A7D4500796A978Client.exeMSIL/异步RAT.AEchoRAT 客户端。
AB2C6F9695346FAA9495B4AB837085C1524FFDDFClient.exeMSIL/异步RAT.AXieBroRAT 客户端。
3E6CD9D07B8ECE706697F332AC9F32DE5ECAF086tempClient.exeMSIL/AsyncRAT.CNonEuclid RAT 客户端。
FF4592A8BCB58F5CF6BD70B882E886EC6906EECDServant.exeMSIL/异步RAT.AJasonRAT 客户端。

MITRE ATT&CK技术

此表是使用 MITRE ATT&CK 框架版本 17 构建的。

策略身份证名字描述
防御规避T1562.001损害防御:禁用或修改工具DcRat 终止 Taskmgr.exe 和 MsMpEng.exe 等安全工具。
T1562.004损害防御:禁用或修改系统防火墙DcRat 利用 AMSI 和 ETW 旁路技术来逃避检测。
T1027.013混淆文件或信息:加密/编码文件JasonRAT 采用修改后的摩尔斯电码和晦涩难懂的变量名称来阻碍分析。
凭据访问T1539窃取网络会话 CookieDcRat 利用插件从受感染的机器上窃取 Discord 代币。
T1555.003来自密码存储的凭据:来自 Web 浏览器的凭据XieBroRAT 使用插件来收集浏览器凭据。
T1110.003蛮力:密码喷射NonEuclid 使用插件对 SSH 和 FTP 凭据进行暴力破解。
发现T1614.001系统位置发现:系统语言发现NonEuclid 使用一个插件从受感染的系统收集地理位置数据。
收集T1123型音频捕获DcRat 有一个麦克风插件,可以从受害者的设备捕获音频。
T1125型视频捕获DcRat 包括一个网络摄像头插件,允许远程访问受害者的摄像头。
T1115型剪贴板数据NonEuclid 使用一个监控剪贴板的插件来拦截和替换加密货币钱包地址。
冲击T1486型数据加密以产生影响DcRat 具有勒索软件插件,能够加密受害者系统上的文件。