Salim Bitam

不再沉睡:SOMNIRECORD 的唤醒

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

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

简介

在监控 REF2924 活动组时,Elastic 安全实验室的研究人员发现了一个用 C++ 编写的新恶意软件家族,我们将其称为 SOMNIRECORD。 该恶意软件用作后门,并伪装成 DNS 与命令和控制 (C2) 进行通信,使攻击者能够绕过防火墙和入侵检测系统等网络安全控制。 与 NAPLISTENERSIESTAGRAPH 一样,这些因素使得很难使用严格基于网络的技术来检测和阻止它。

分析

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

在获得等待执行的命令数量后,后门通过发送 TXT 记录的 DNS 查询来单独检索每个命令。 后门在发送 DNS 查询之前,将先前生成的随机字符串添加到“-CMD”字符串中。 这允许后门单独接收每个命令并执行相应的操作。

命令处理

恶意软件的命令处理功能是一个关键组件,使其能够执行从 C2 服务器接收到的命令。 此功能处理命令并根据命令类型执行适当的操作。 在此恶意软件中,恶意软件可以执行五个命令:SYSPSLsleepECMWS

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) 的通信进行模式化,这使攻击者能够绕过网络出口控制和监控