Salim Bitam

不再睡眠:SOMNIRECORD 的警示

Elastic 安全实验室的研究人员发现了一个新的用 C++ 编写的恶意软件家族,我们称之为 SOMNIRECORD。该恶意软件充当后门,与命令和控制 (C2) 通信,同时伪装成 DNS。

阅读时间:4 分钟恶意软件分析
Not sleeping anymore: SOMNIRECORD's wake-up call

简介

在监控REF2924 活动小组的过程中,Elastic 安全实验室的研究人员发现了一个新的用 C++ 编写的恶意软件家族,我们称之为 SOMNIRECORD。该恶意软件充当后门,与命令和控制 (C2) 通信,同时伪装成 DNS,允许攻击者绕过网络安全控制,例如防火墙和入侵检测系统。与NAPLISTENERSIESTAGRAPH 一样,这些因素使得仅使用基于网络的技术难以检测和阻止它。

分析

执行后,SOMNIRECORD 首先生成一个由三个字符组成的随机字符串,用作正在运行的恶意软件实例的唯一标识符。然后,它通过附加随机的三字符字符串和字符串“-PROBE”到硬编码到二进制文件中的域名(“dafadfweer.top”)来探测域名。SOMNIRECORD 模拟 DNS 查询以检索排队等待后门执行的命令数量,每个命令都存储在关联域的TXT 记录中。

获取等待执行的命令数量后,后门通过发送TXT 记录的 DNS 查询来逐个检索每个命令。后门在发送 DNS 查询之前,会在“-CMD”字符串前加上之前生成的随机字符串。这允许后门分别接收每个命令并相应地执行它们。

命令处理

恶意软件的命令处理功能是一个关键组件,它使恶意软件能够执行从 C2 服务器接收到的命令。此功能处理命令并根据命令类型执行相应的操作。在此恶意软件中,恶意软件可以执行五个命令:SYS、PSL、sleep、ECMWS

SYS” 用于检索有关受感染机器的信息。执行此命令时,SOMNIRECORD 负载将收集有关计算机名称、处理器数量、OEM ID 和处理器类型的信息。这些信息可用于识别特定受感染机器。

PSL” 用于通过执行系统命令“tasklist”列出当前在受感染机器上运行的所有进程。

ECM” 允许恶意软件执行系统上已存在的任何软件,例如 cmd.exe。

sleep” 用于更改到 c2 服务器的信标间隔。

WS” 用于将基于 ASPX 的 webshell 部署到指定的路径。ASPX 硬编码到恶意软件本身。

为了将其命令结果传达给其 C2 服务器,SOMNIRECORD 采用了一种独特的技术,该技术涉及将执行的命令的输出编码为十六进制值,在“-DATA”字符串前加上之前生成的随机字符串,然后附加十六进制值。然后,恶意软件对子域执行 DNS 查询,允许将编码的命令输出传输到 C2 服务器,例如:XXX-DATA-68656c6c6f20776f726c64.dafadfweer.top

资源

Elastic 安全实验室已在我们公开的防护工件存储库中提供了 SOMNIRECORD 签名,点击此处

来源

代码相似性分析在发现对手使用的恶意代码来源方面发挥着重要作用。为了识别 SOMNIRECORD 的来源,我们发现了一个名为DNS-Persist 的开源项目,其中包含类似的逻辑。与 NAPLISTENER 一样,我们认为攻击者受到了该项目的启发,然后添加了修改以促进在特定目标环境中的成功。

关键要点

  • 攻击者使用开源项目表明他们正在采取措施根据自身需求定制现有工具,并可能试图对抗归因尝试。
  • SOMNIRECORD 使用 DNS 来模式化与其命令和控制 (C2) 的通信,这使攻击者能够绕过网络出口控制和监控。