网络钓鱼使用Remcos RAT控制受害者设备
本帖最后由 tfrist 于 2022-4-13 03:12 编辑受影响的平台: Microsoft Windows
受影响的各方: Microsoft Windows 用户
影响:控制受害者的设备并收集敏感信息
严重级别:严重
Remcos RAT(Remote Access Trojan)最初是作为远程控制计算机的专业工具而设计的。
Remcos RAT 自 2016 年 7 月 21 日发布第一个版本以来一直被黑客滥用以秘密控制受害者的设备,因此被认为是恶意软件系列。Remcos RAT 是在线销售的商业软件。
https://www.ddosi.org/wp-content/uploads/2022/04/1-4.webp
图 1:在线销售的 Remcos RAT 示例
在这个网页上,它提供了两个版本:专业版(包含所有功能)和免费版(功能受限)。该分析基于黑客使用 Remcos RAT 来控制网络钓鱼活动提供的受害者设备,该活动最近被 Fortinet 的 FortiGuard 实验室捕获。在此分析中,您将了解到:
[*]网络钓鱼活动如何将 Remcos RAT 传送到受害者的设备上
[*]Remcos 如何在设备上执行
[*]它可以从受害者那里窃取哪些敏感信息
[*]Remcos 如何连接到其 C2 服务器
[*]这个 Remcos 提供什么命令来控制受害者的设备
网络钓鱼电子邮件
https://www.ddosi.org/wp-content/uploads/2022/04/2-3.webp
图 2:钓鱼邮件内容截图
从图 2 所示的电子邮件内容可以看出,黑客将钓鱼邮件伪装成来自受信任银行的付款通知,并要求收件人打开附有密码保护的 Excel 文件。
Excel 文件导致通过 VBS 和 PowerShell 下载 Remcos
在 Excel 程序中打开附加的 Excel 文档后,它会要求输入密码以查看文档,该密码已在电子邮件中提供。然后它在 Excel 程序中显示该文档,如图 3 所示。由于该文件包含宏代码,它显示一个黄色安全警告栏以警告受害者存在危险。
https://www.ddosi.org/wp-content/uploads/2022/04/3-3.webp
图 3:在 Excel 程序中打开 Excel 文档时显示的屏幕
该文件消息诱使受害者单击“启用内容”按钮以绕过警告并执行恶意宏代码。该宏有一个名为“Wookbook_Active()”的函数,当它打开时会自动调用。它的任务是将单元格中的 VBS 代码提取到文件“%AppData%\HobYQ.vbs”中,然后执行它。
为了保护 Remcos 有效负载文件,它使用了一种超级复杂的方式来下载它。通过这种方式,它同时执行 VBS 和 PowerShell 脚本代码。“HobYQ.vbs”运行一段动态拼接的PowerShell代码,从攻击者的服务器下载另一个VBS文件(“flip.vbs”)并运行。
接下来,“flip.vbs”继续从服务器下载一个文件(称为“mem.txt”),这是一段编码的VBS代码,稍后将在“flip.vbs”中执行以从服务器下载最终文件同一服务器,称为“faze.jpg”。在图 4 中,它显示了三个下载文件“flip.vbs”、“mem.txt”和“faze.jpg”的捕获流量。https://www.ddosi.org/wp-content/uploads/2022/04/4-2.webp
图4:“HobYQ.vbs”导致下载三个文件
图 4 底部显示了“faze.jpg”的部分响应包。当然,它不是图像文件,而是经过混淆的 PowerShell 代码文件。三个数组变量中定义了三段编码数据,在图 5 中用三个红框进行了简化。“faze.jpg”中携带的PowerShell代码由“flip.vbs”执行。
https://www.ddosi.org/wp-content/uploads/2022/04/5-2.webp
图 5:“faze.jpg”的简化 PowerShell 代码
然后让我在这里解释一下 PowerShell 代码是如何工作的。$MNB 和 $IRjR 这两个变量的值都是编码的 GZIP 压缩有效载荷(它们以“1F 8B…”开头)。解压后,$MNB 为 .Net Framework Dll 文件,$IRjR 为 Remcos 有效负载文件。
设置为变量“$qgRf”的二进制值是一种称为 tMCfkSD() 的动态解压缩方法。它调用 tMCfkSD() 将 .Net Dll 从 $MNB 解压缩到 $byUsWxe。最后,它通过调用“Load”将.Net Dll加载到当前的PowerShell执行环境中,并使用“RegAsm.exe”和压缩的Remcos Payload($IRjR)调用“toooyou”类中的函数“Black()”。
.Net Framework Dll 文件执行进程空心化
https://www.ddosi.org/wp-content/uploads/2022/04/6-2.webp
图 6:中断 .Net Dll toooyou.Black()
如图 6 所示,.Net Dll 名为 GC.dll。两个传递的参数显示在“Locals”中。它的代码被混淆了。根据我的分析,它首先从名为lime.dll的资源部分中动态提取了另一个Dll。接下来,它解压缩 Remcos 有效负载,
该有效负载将传递给一个名为“k78er0sdfffff.o70sdaf45gfg(System.String, Byte[])”的函数,该函数在调用该函数时来自lime.dll。实际上,此 Dll 用于执行将 Remcos 有效负载注入新创建的“RegAsm.exe”进程的进程空心化。
调用函数 (k78er0sdfffff.o70sdaf45gfg()) 后,它会从受害者设备上的以下位置找到“RegAsm.exe”。如果找不到文件,它将退出 PowerShell 而不运行 Remcos。
硬编码的位置列表:
array[<Module>.C1790263187] = "C:\\WINDOWS\\syswow64\\";
array[<Module>.C2710025604] = "C:\\WINDOWS\\system32\\";
array[<Module>.C3326009313] = "C:\\WINDOWS\\";
array[<Module>.C931285936] = "C:\\WINDOWS\\syswow64\\WindowsPowerShell\\v1.0\\";
array[<Module>.const_4] = "C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\";
array[<Module>.C3873335087] = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\";
在我的测试环境中,它在“C:\Windows\\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe”中有这个文件。您可能知道,它需要调用几个API来完成进程空心,
它们是:带有CREATE_SUSPENDED标志的CreateProcess()、WriteProcessMemory()、GetThreadContext()、SetThreadContext()等。如图 7 所示,即将调用 API CreateProcessA() 从 Lime.dll 创建一个挂起的 RegAsm.exe 进程。
https://www.ddosi.org/wp-content/uploads/2022/04/7-2.webp
图 7:使用 CREATE_SUSPENDED 标志调用 CreateProcessA()
当 Remcos 有效负载被注入并部署到 RegAsm.exe 时,将调用 API ResumeThread() 以使 RegAsm.exe 恢复以在受害者的设备上运行 Remcos RAT。
深入了解 Remcos 有效负载
根据我的分析,Remcos 是用带有模板的 C++ 语言编写的。我们已经捕获的是 2022 年 2 月 10 日发布的最新版本 3.4.0 Pro。我从本节剖析了 Remcos 有效负载文件,以了解它如何控制受害者的设备。
从过去几年的版本分析来看,Remcos 使用 RC4 加密对本地数据和 Remcos 与 C2 服务器之间的流量数据进行加密或解密。从 3.0.0 Pro 版本开始,它已将加密算法更改为 AES-128 位,用于加密或解密流量数据。
因此,它现在使用两种加密算法,RC4 用于本地数据,AES 用于此变体中的流量数据。
https://www.ddosi.org/wp-content/uploads/2022/04/8-2.webp
图 8:在“SETTINGS”资源中加密的 Remcos 配置块
每个 Remcos 在其 PE 资源部分中都包含一个 RC4 加密配置块,名为“SETTINGS”,如图 8 所示,其中第一个字节“B1”是后面红色框中的 RC4 密钥的大小,其余数据为加密的 Remcos 配置块。
Remcos 做的第一件事是解密配置块,这将在整个 Remcos 生命周期中被引用。它包含但不限于 C2 的服务器信息、Remcos 为攻击者分配的名称以识别受害者、注册表中的 Remcos 子键名称、
记录受害者键盘记录器和剪贴板数据的日志文件的名称、许多标志告诉 Remcos 如何启动它受害者设备中的功能,以及用于与 C2 服务器建立连接的身份验证数据。Remcos 的工作流程非常清晰,
它会根据配置块中定义的标志启动许多线程来执行自动启动工作。这包括:
[*]将 Remcos 添加到系统注册表中的自动运行组
[*]启动看门狗程序(Remcos 的守护程序)
[*]从输入设备(麦克风)记录受害者的音频输入
[*]在启动时捕获受害者的屏幕截图
[*]在受害者的设备上禁用 UAC(用户帐户控制)
[*]等等
Remcos 能够不时将受害者的敏感信息记录在日志文件中(文件名来自配置块),如键盘输入(键盘记录器)、系统剪贴板上的数据以及受害者的最顶层程序的标题为此,
它需要通过调用 API SetWindowsHookExA() 设置键盘挂钩,并启动一个线程以每 500 微秒检查一次。图 9 显示了设置此类挂钩的 ASM 代码片段。
https://www.ddosi.org/wp-content/uploads/2022/04/9-2.webp
图 9:设置键盘 Windows Hook
下面是 Remcos 从我的测试环境中获得的“logs.dat”示例,例如记录日期和时间、最上面的程序标题、受害者的空闲时间和剪贴板数据。
https://www.ddosi.org/wp-content/uploads/2022/04/10-1.webp
图:10:“log.dat”中保存的信息示例
Remcos 工作流程的下一步是根据配置块中的信息连接到其 C2 服务器。
与 C2 服务器通信
Remcos 使用 TLS v1.3 协议与 C2 服务器通信,正如我之前提到的,它在 TLS 握手和身份验证上由它自己实现(不使用 Windows API)。
Remcos 然后从受害者的系统中收集基本信息,并在第一个数据包中将其提交给 C2 服务器。第一个包的包号是4BH。通过AES加密的数据包如下所示。
https://www.ddosi.org/wp-content/uploads/2022/04/11-1.webp
图 11:AES 加密前的 4BH 数据包明文内容受害者的基本信息包含在此数据包中。
让我们看一下数据包结构。第一个“24 04 FF 00”是来自解密配置块的数据包魔术ID,随后的dword“A1 02 00 00”(21AH)是后面数据的大小,
下一个dword“4B 00 00 00”( 4BH) 是数据包编号。全部剩余数据是收集到的受害者设备的基本信息,包括但不限于:
[*]Remcos 指定名称“Shiesty”(来自配置块)
[*]受害者的用户名和计算机名
[*]Windows 版本信息,总 RAM (3757629400)(以字节为单位)
[*]Remcos 版本 (3.4.0 Pro)
[*]当前 RegAsm.exe 的完整路径,当前活动程序的标题(受害者正在使用)
[*]受害者的空闲时间
[*]系统正常运行时间
[*]中央处理器信息
[*]C2服务器主机
[*]Remcos 有效负载类型(EXE 或 DLL)
[*]
所有上述值字段都由分隔符分割 – “7C 1E 1E 1F 7C”(在字符串中显示为“|…|”)。只要 C2 服务器接收到这个 4BH 数据包,它就会在“连接”子选项卡中显示受害者,
如图 12 所示。此后,攻击者只需右键单击该项目(红色框)并选择他们想要的命令。
https://www.ddosi.org/wp-content/uploads/2022/04/12.webp
图 12:C2 服务器收到 4BH 数据包时的样子
同时,Remcos 注册了一个回调函数,该函数解析 C2 的命令并进入一个无限循环以等待来自攻击者的 C2 服务器的即将到来的控制命令。
控制命令
从注册的回调函数中,我们了解到这个 Remcos 变种提供了 87 个控制命令,这些命令分为以下几组:
[*]系统:屏幕截图、文件管理器、文件搜索、进程管理器等。
[*]监控:网络摄像头、麦克风、键盘记录器、屏幕记录器等。
[*]网络:代{过}{滤}理、下载器、打开网页等。
[*]额外:Dll Loader、Logins Cleaner、Audio Player 等。
[*]Remcos:重新连接、重新启动、显示、更新、关闭、卸载等。
[*]心跳包
C2 服务器每 40 秒向 Remcos 发送一个心跳包。一旦 Remcos 连接到 C2 服务器,心跳会确保这个 Remcos 处于活动状态。C2 的命令包格式相同。我以心跳包为例进行说明,如下图:24 04 FF 00 0C 00 00 00 01 00 00 00 30 7C 1E 1E 1F 7C 32 30在数据包魔术ID(“24 04 FF 00”)和数据包大小(0x0C)之后,“01 00 00 00”是心跳命令号(0x01),其余是命令数据被“7C 1E 1E 1F 7C”分割是 30(ASCII “0”)和 32 30(ASCII “20”)。Remcos 然后获取当前活动窗口的标题以及时间值,并将它们发送到包号 4CH 中的 C2 服务器。以下是控制命令列表:
NameC&C 编号描述
心跳01H心跳包。
屏幕截图10H在远程桌面上控制受害者的设备。
文件管理器98H受害者设备上的管理器文件系统。
文件搜索8FH在受害者的设备上搜索文件。
流程管理器06H管理器运行过程。
服务管理34H管理受害者的系统服务。
注册表编辑器2FH查看、编辑受害者的系统注册表。
已安装程序03H列出所有已安装的软件。
窗口管理器08H打开一个任务管理器类似的界面。
剪贴板管理器28H查看、设置和清空受害者的系统剪贴板。
命令行0EH使用命令启动 shell (cmd.exe)。
执行命令0DH在受害者的设备中执行命令,例如记事本。
远程脚本2EH在受害者的设备上执行 JS、VBS 和 Batch。
设置壁纸92H用图片设置受害者的桌面壁纸。
电源管理器27H注销、睡眠、休眠、关机和重新启动。
摄像头1BH控制受害者的摄像头工作
麦克风1DH打开受害者的音频输入设备,例如麦克风。
键盘记录器13H启动键盘记录器。
屏幕记录器10H启动屏幕记录器。
浏览器历史18H清除浏览器的历史记录。
代{过}{滤}理32H将代{过}{滤}理设置为受害者的设备。
打开网页0FH使用受害者的默认浏览器打开一个 URL。
聊天30H弹出聊天框与受害者聊天。
消息框26H向受害者弹出消息。
下载器B2H在受害者的设备上下载并执行文件。
DLL加载器2CH在受害者的设备上执行一个 Dll 模块。
音频播放器A3H向受害者播放音频声音。
登录清理器18H清除浏览器的登录名和 cookie。
更新24H更新 Remcos。
卸载22H从受害者的设备上卸载 Remcos。
关闭21H杀死当前正在运行的 Remcos。
重新开始23H重新启动 Remcos。
提权27H提升 Remcos 的权限。
除了列出的控制命令外,Remcos 还有很多子命令来支持子连接中的一些控制命令,例如服务管理器命令 34H 带有子命令:03H 停止服务,04H 暂停服务,01H 重新启动一项服务。
结论
在这篇分析博客中,我解释了网络钓鱼电子邮件如何将带有恶意宏的 Excel 文档传送到受害者的设备中。接下来,我们介绍了它如何执行多个 VBS 和 Powershell 脚本来下载 Remcos 有效负载,
以及 Remcos 有效负载如何由 .Net Dll 通过 Process Hollowing 部署到“RegAsm.exe”进程中。
然后,我根据其代码剖析了Remcos的工作流程,以及如何从PE资源部分解密配置块。我还解释了 Remcos 如何建立与其 C2 服务器的连接。
最后,通过几个例子,我详细阐述了明文控制和命令包的结构,以及Remcos能够使用哪些命令来控制受害者的设备和控制命令列表。 tfrist 发表于 2022-4-13 07:12
可见 打开office的文件要慎重啊!10个恶意软件里 有8个得是通过邮件发送附件的Office文件来传播的!
所以这种直接删除,不会点开看的 metoo2 发表于 2022-4-14 10:08
不要打开恶意邮件
邮件还好!里面的连接 尤其是附件千万要小心!不要随意点和打开! 不知怎的 排版真乱! 重新编辑了一下 比一开始显示的好很多了!呵呵 可见 打开office的文件要慎重啊!10个恶意软件里 有8个得是通过邮件发送附件的Office文件来传播的! 陌生邮件基本不打开,但是还是感谢您的分享 {:1_918:}陌生邮件不要乱点 最不安全的就是人了。 恶意软件无处不在 excel禁止或者通知运行宏 我说最近怎么公司的表格打开越来越慢了。