窃听中的雷姆科斯分析网络人工制品和 C2 指挥结构

概述

Remcos 是一种远程访问木马(RAT),由德国公司 Breaking Security 于 2016 年 7 月首次推出。虽然最初是作为 Windows 系统远程管理的合法工具进行销售,但后来被网络犯罪分子广泛用于恶意目的。该恶意软件通常通过含有恶意附件的钓鱼电子邮件传播,例如带有嵌入宏的 Microsoft Office 文档或伪装成合法内容的 ZIP 文件。执行后,这些附件会将 Remcos 部署到受害者的系统中。在某些情况下,攻击者会利用已知漏洞来促进感染过程。

Remcos 为攻击者提供了广泛的功能,包括键盘记录、屏幕捕获、音频和视频录制以及远程命令执行。它还可以收集系统信息、窃取凭证和下载其他恶意有效载荷。该恶意软件的模块化架构允许添加新的功能,使其能够适应各种恶意活动。

最近观察到 Remcos 样本(版本 6.1.1 pro)通过垃圾邮件传播,邮件附件中包含一个恶意 7Z 压缩包。该压缩包包含一个严重混淆的批处理文件,旨在逃避检测。批处理文件中包含两个加密和压缩数据流,特别是 AES 加密数据流和 GZIP 压缩数据流,这些数据流在执行过程中会被解密和解压缩。这一过程最终导致 Remcos 有效载荷被部署到受害者的机器上。

技术细节

恶意批处理文件经过大量混淆处理,包含嵌入式 Base64 编码 PowerShell 代码。为了逃避检测,攻击者在整个脚本中插入了垃圾代码。例如,在第一行中,替换字符串 “ywg “后会显示一个 echo 命令,表明存在隐藏功能。

混淆批处理文件

图 1 – 经过混淆处理的批处理文件

执行时,批处理文件会执行嵌入式 PowerShell 脚本,该脚本会检查用户配置文件目录中是否存在 “dwm.bat “文件。如果该文件存在,它会逐行读取其内容,搜索包含标记 ::: 的行,并提取其后面的内容。这些内容是 Base64 编码的 PowerShell 代码,随后会被解码并执行。如果 “dwn.bat “文件不存在,脚本将直接终止。

嵌入式 PowerShell 脚本

图 2 – 嵌入式 PowerShell 脚本

绕过 AMSI 和 ETW

解码后的 PowerShell 脚本定义了一个名为 Invoke-SysRoutine 的函数,该函数实现了一种绕过反恶意软件扫描接口 (AMSI) 和 Windows 事件跟踪 (ETW) 的技术。为此,它在运行时动态解析系统 API 地址,并使用 .NET 互操作性和本地 Windows API 调用修改目标函数的内存,从而禁用安全遥测并逃避检测。

它通过在运行时解码 GetProcAddress 和 GetModuleHandle 等关键系统函数的名称,动态解析这些函数,从而使静态分析变得困难。脚本创建了自定义委托,以调用非托管代码,并使用 VirtualProtect 修改内存保护,以修补 AMSI 的 AmsiInitialize 函数。

AMSI 旁路

图 3 – AMSI 旁路

它会进一步扫描并修补内存中的多个 AMSI 提供程序,以确保完全停用。如果使用 -DisableSvc 标志,它还会锁定 ntdll.dll 中的 EtwEventWrite 函数,从而有效抑制安全事件记录。打补丁后会恢复内存保护,以保持系统稳定。

 ETW 补丁

图 4 ETW 补丁

解密和解压缩

成功绕过 AMSI 和 ETW 后,批处理文件中的嵌入式 PowerShell 脚本会定位标记 :: ,提取其后面的内容,然后使用反斜杠 (\) 作为分隔符分割这些数据。生成的 base64 编码值会存储到一个数组中,以便进一步处理。

读取加密元素的 PowerShell 脚本

图 5:PowerShell 脚本读取加密元素

然后,提取的数组元素被传递给一个解密函数,该函数在 CBC(加密块链)模式下使用 AES。该函数使用硬编码密钥和初始化向量(IV)对内容进行解密,如下代码片段所示。解密后的输出随后传递给另一个处理 GZIP 解压缩的函数。

 AES 解密

图 6 – AES 解密

两个数组元素解压缩后,脚本会提取两个可执行文件。第一个可执行文件包含一个空的 main() 函数,没有任何作用,而第二个可执行文件则负责加载 Remcos 有效载荷。

 使用 CyberChef 进行 AES 解密和 GZIP 压缩

图 7 – 使用 CyberChef 进行 AES 解密和 GZIP 压缩

然后,脚本将提取的可执行文件传递给一个函数,该函数使用反射加载,直接从 PowerShell 进程的内存中运行恶意二进制文件,而不将二进制文件存储在磁盘中。这种技术可以在内存中执行有效载荷,使检测和分析更具挑战性。

反射加载

图 8 – 反射载荷

从第一个数组元素中提取的可执行文件包含一个空的主函数,表明攻击者可能将其用作诱饵或规避策略,以避免被检测到。

雷姆科斯装载机

从第二个数组元素中提取的可执行文件将作为加载器,在受害者机器上加载 Remcos 有效载荷。执行时,加载器会加载 “ntdll.dll”,检索 “EtwEventWrite “函数的地址,并将该函数的内存保护更改为 PAGE_EXECUTE_READWRITE。

在 32 位系统上,脚本会添加指令(0xC2 0x14),使函数立即返回,从而有效禁用 ETW 日志记录。在 64 位系统上,脚本会用 0xC3 指令替换 EtwEventWrite 函数的起始位置,使函数立即返回,而不执行任何操作。这一更改会禁用事件日志记录。一旦修改,脚本就会恢复原来的内存保护,以避免进一步更改,从而有效地将 EtwEventWrite 变为无操作,帮助恶意软件逃避安全工具的检测。

ETWEventWrite 补丁

图 9 – ETWEventWrite 补丁

在最后阶段,加载程序会在程序集的嵌入式资源中搜索名为 “xxxxxxxxxxxxxxxxxxxxxxxxxx.exe “的特定条目。如果该资源存在,加载程序就会使用 GetManifestResourceStream() 提取其内容。

提取的数据经过 GZIP 压缩和 AES 加密。解密时使用预定义的密钥和初始化向量。解密后,被识别为 Remcos 的有效载荷就会被执行,从而允许攻击者远程控制被入侵的系统。

网络和 C&C 连接详情

成功执行后,Remcos RAT 会向 geoplugin.net/json.gp 发送 GET 请求,根据受害者的公共 IP 地址检索其地理位置。该 API 响应包括国家、城市、地区、纬度、经度、时区等详细信息。收集到的数据有助于攻击者对受害者进行剖析,并根据地理位置调整其操作。

收集地理位置详细信息

图 10 – 收集地理位置详细信息

在完全控制受害者的机器之前,Remcos RAT 首先会收集系统信息并将其发送到命令与控制(C&C)服务器,以注册受感染的设备。它使用 TLS 启动与 C&C 服务器的安全连接,以促进加密通信。每个数据包都包含一个独一无二的标识符字节序列、传输数据的大小以及指定预期操作的命令 ID,如下图所示。

注册受害者设备的初始数据包

图 11- 注册受害者设备的初始数据包

Remcos 利用命令 ID 0x4B 将受害者机器上的详细系统和用户信息外泄到攻击者的命令与控制 (C2) 服务器。这些数据用于注册被入侵设备并建立对受感染主机的控制。在此过程中,通常会收集以下信息:

  • 设备名称和用户名
  • 受害者设备的位置
  • 操作系统信息
  • 内存状态
  • 雷姆科斯版本
  • Remcos 监控软件本地文件路径
  • 雷姆科斯完整路径
  • 活动计划名称
  • 用户权限级别
  • 系统正常运行时间
  • 空闲时间
  • 雷姆科斯指定名称
  • C&C 服务器 IP
  • Remcos 文件类型
  • 处理器信息

初始注册后,命令与控制 (C2) 服务器会向 Remcos 客户端发送 ID 为 0x01 的命令。该命令具有心跳或信息信标的功能,促使受感染的机器定期向攻击者发送状态更新。

灯塔数据包

图 12 – 信标数据包

作为回应,Remcos 会发送运行时系统遥测信息,如活动窗口标题、系统正常运行时间等,同时发送 0x4C 命令。这样,攻击者就能实时监控受感染机器的活动,并保持对设备的持续控制。

回应灯塔请求

图 13 – 对信标请求的响应

之后,C&C 服务器会使用命令 ID 0x11 向受感染机器发出请求,以检索在感染初始阶段收集到的地理位置信息。作为回应,Remcos 会使用相同的命令 ID 0x11 发回地理位置详细信息,如下图所示。

渗出地理位置详细信息

图 14 – 渗漏地理位置详细信息

我们还观察到,每当从 C&C 服务器下载文件时,都会使用命令 ID 0x44。具体来说,当检索带有 MZ 标头的文件时,通信内容包括命令 0x44,随后是文件内容,如下所示。

下载附加有效载荷

图 15 – 下载附加有效载荷(来源:malware-traffic-analysis.net))

统一 SASE 即服务如何帮助减少 Remcos 感染?

统一的 SASE 框架集成了网络安全和零信任访问控制,可抵御 Remcos RAT 等威胁,Remcos RAT 使用命令与控制 (C2) 通道进行数据外渗和远程操作。SASE 提供对网络流量的集中可视性,并在所有地点执行一致的安全策略。我们的内置安全功能(如高级 IDPS、SWG 和实时威胁情报)可检测 Remcos 活动的迹象,包括特定的命令 ID 和可疑的 HTTP 模式。通过检查出站 HTTP 通信,SASE 可以识别试图外泄地理位置数据或交付远程命令的行为,自动阻止未经授权的传输,最大限度地降低外泄风险。

MITRE ATT&CK 制图:TTPs

  • T1566.001 – 网络钓鱼:鱼叉式网络钓鱼附件
  • T1059.001 – 命令和脚本解释器:PowerShell
  • T1204.002 – 用户执行:恶意文件
  • T1027 – 混淆文件或信息
  • T1055.002 – 进程注入:可移植可执行文件注入
  • T1562.001 – 削弱防御:禁用或修改工具
  • T1003 – 操作系统凭证转储
  • T1082 – 系统信息检索
  • T1016 – 发现系统网络配置
  • T1071.001 – 应用层协议:网络协议
  • T1056.001 – 输入捕获:键盘记录
  • T1113 – 屏幕截图
  • T1123 – 音频采集
  • T1125 – 视频捕捉
  • T1041 – 通过 C2 通道进行渗透
  • T1020 – 自动渗出

参考资料


https://www.fortinet.com/blog/threat-research/new-campaign-uses-remcos-rat-to-exploit-victims