伊朗黑客(APT-C-34)被发现对中东政府和军队进行间谍活动

阅读量183369

发布时间 : 2023-11-01 12:11:35

主要发现

  • Check Point Research (CPR) 正在监测隶属于情报与安全部 (MOIS) 的Scarred Manticore正在进行的伊朗间谍活动。
  • 这些攻击依赖于LIONTAIL,这是一种安装在 Windows 服务器上的高级被动恶意软件框架。出于隐蔽目的,LIONTIAL 植入程序利用对 Windows HTTP 堆栈驱动程序 HTTP.sys 的直接调用来加载驻留在内存中的有效负载。
  • 作为与Sygnia事件响应团队共同努力的一部分 ,利用多种取证工具和技术来揭示入侵和 LIONTAIL 框架的其他阶段。
  • 当前的活动在 2023 年中期达到顶峰,并在人们的关注下至少一年了。该活动针对中东地区的知名组织,重点关注政府、军队和电信部门,此外还有 IT 服务提供商、金融组织和非政府组织。
  • Scarred Manticore多年来一直在追求高价值目标 ,利用各种基于 IIS 的后门来攻击 Windows 服务器。其中包括各种自定义 Web shell、自定义 DLL 后门和基于驱动程序的植入程序。
  • 虽然 Scarred Manticore 行动背后的主要动机是间谍活动,但本报告中描述的一些工具与 MOIS 发起的针对阿尔巴尼亚政府基础设施的破坏性攻击(称为DEV-0861)有关。

介绍

Check Point Research 与Sygnia的事件响应团队合作 ,一直在跟踪和响应 Scarred Manticore 的活动,Scarred Manticore 是一个伊朗民族国家威胁组织,主要针对中东的政府和电信部门。Scarred Manticore 与多产的伊朗演员 OilRig(又名 APT34、EUROPIUM、Hazel Sandstorm)有联系,一直在追求高调组织,利用定制工具系统地窃取数据。

在最新的活动中,威胁行为者利用了 LIONTAIL 框架,这是一组复杂的自定义加载程序和内存驻留 shellcode 有效负载。LIONSTAIL 的植入程序利用 HTTP.sys 驱动程序的未记录功能从传入 HTTP 流量中提取有效负载。观察到的与 LIONTAIL 相关的恶意软件的多个变体表明,Scarred Manticore 会为每个受感染的服务器生成量身定制的植入程序,从而使恶意活动能够融入合法网络流量中,并且无法从合法网络流量中辨别出来。

我们目前以 Scarred Manticore 的身份追踪此活动,这是一个与DEV-0861最密切相关的伊朗威胁行为者 。尽管 LIONTAIL 框架本身似乎是独一无二的,并且与任何已知的恶意软件家族没有明显的代码重叠,但这些攻击中使用的其他工具与之前报告的活动重叠。最值得注意的是,其中一些最终与历史上的 OilRig 或 OilRig 附属集群相关联。然而,我们没有足够的数据来正确地将疤痕蝎狮归因于 OilRig,尽管我们确实相信它们可能相关。

疤痕蝎狮的工具和能力的演变表明了伊朗行为者在过去几年中所取得的进步。与之前 CPR 与伊朗有关的活动相比,最近 Scarred Manticore 行动中使用的技术明显更加复杂。

在本文中,我们对最新工具以及 Scarred Manticore 活动随时间的演变进行了技术分析。该报告详细介绍了我们对 Scarred Manticore 的了解,尤其是其新颖的恶意软件框架 LIONTAIL,但也概述了我们认为同一攻击者使用的其他工具集,其中一些工具集过去曾公开曝光过。这包括但不限于入侵阿尔巴尼亚政府基础设施所使用的工具、在中东备受瞩目的攻击中观察到的 Web shell,以及最近报道的基于 WINTAPIX 驱动程序的植入。

当我们完成这篇博文时,思科 Talos 的研究人员发表了对此活动部分内容的技术分析 。虽然它在某种程度上与我们的调查结果重叠,但我们的报告提供了额外的扩展信息、深入的见解以及关于此次行动背后的威胁行为者的更广泛的回顾。

狮尾框架

LIONTAIL 是一个恶意软件框架,包括一组自定义 shellcode 加载器和内存驻留 shellcode 有效负载。它的组件之一是用 C 语言编写的 LIONTAIL 后门。它是一个安装在 Windows 服务器上的轻量级但相当复杂的被动后门,使攻击者能够通过 HTTP 请求远程执行命令。后门为其配置中提供的 URL 列表设置侦听器,并执行攻击者向这些 URL 发送的请求中的有效负载。

LIONTAIL 后门组件是最新 Scarred Manticore 入侵中使用的主要植入物。利用面向公众的服务器的访问权限,威胁行为者链接一组被动植入程序来访问内部资源。到目前为止,我们看到的 LIONTAIL 后门的内部实例要么侦听 HTTP(s),类似于面向互联网的实例,要么在某些情况下使用命名管道来促进远程代码执行。

图 1 – LIONTAIL 恶意软件框架概述。

狮尾装载机

安装

我们观察到在受感染的 Windows 服务器上有 2 种后门安装方法:独立的可执行文件,以及通过 Windows 服务或合法进程劫持搜索顺序加载的 DLL。

C:\windows\system32 当作为 DLL 安装时,恶意软件会利用 Windows Server 操作系统发行版上某些 DLL 的缺失:将后门以 wlanapi.dll 或 的 形式放置到系统文件夹中 wlbsctrl.dll。默认情况下,Windows Server 安装中不存在这些。根据 Windows Server 版本,恶意 DLL 随后会由其他进程(例如 Explorer.exe)直接加载,或者威胁参与者会启用需要这些 DLL 的特定服务(默认情况下处于禁用状态)。

在 的情况下 wlbsctrl.dll,DLL 在 IKE 和 AuthIP IPsec 密钥模块 服务启动时加载。对于 wlanapi.dll,参与者启用可 扩展身份验证协议:

sc.exe config Eaphost start=auto
sc.exe start Eaphost

在将 LIONTAIL 部署为可执行文件的情况下,在某些情况下观察到的一个值得注意的特征是尝试将可执行文件伪装成 Cyvera Console(Cortex XDR 的一个组件)。

配置

恶意软件首先对包含恶意软件配置的结构执行一字节异或解密,该结构用以下结构表示:

QWORD var_0
QWORD var_8
QWORD magic_number
DWORD 结束字符串数
DWORD 侦听 URL 数
STRING 结束字符串
STRING []监听网址

该字段 定义 恶意软件侦听传入请求的listen_urls 特定 URL 前缀。

所有示例的 URL 列表都包含  http://+:80/Temporary_Listen_Addresses/ URL 前缀,这是默认的 WCF URL 保留 ,允许任何用户从该 URL 接收消息。其他示例包括模仿现有服务的端口 80、443 和 444(在 Exchange 服务器上)上的多个 URL,例如:
https://+:443/autodiscover/autodiscovers/
https://+:443/ews/exchanges/
https://+:444/ews/ews/

许多 LIONTAIL 示例包含定制配置,其中添加了多个与受感染服务器上现有 Web 文件夹相匹配的其他自定义 URL。由于实际 IIS 服务已获取现有文件夹的 URL,因此生成的有效负载在路径中包含其他随机字典单词。这些确保恶意软件通信融入合法流量,有助于使其更加不引人注目。

配置中所有前缀的主机  元素由一个加号 (+) 组成,这是一个匹配所有可能主机名的“强通配符” 。当应用程序需要为发送到一个或多个相对 URL 的请求提供服务时,强通配符非常有用,无论这些请求如何到达计算机或它们在主机标头中指定的站点(主机或 IP 地址)。

为了了解恶意软件如何在这些前缀上配置侦听器以及该方法如何随时间变化,我们暂停一下,对 Windows HTTP 堆栈进行简短介绍。

Windows HTTP 堆栈组件

Windows Server 2003 中引入了端口共享机制,该机制允许多个 HTTP 服务共享相同的 TCP 端口和 IP 地址。此机制封装在 HTTP.sys 中,HTTP.sys 是一个内核模式驱动程序,负责处理 HTTP请求,侦听传入的 HTTP 请求,并将它们定向到相关的用户模式进程或服务以进行进一步处理。

在驱动程序层之上,Windows 提供了 HTTP Server API, 这是一个用户模式组件,提供与 HTTP.sys 交互的接口。此外, 底层的Internet 信息服务( IIS) 依赖 HTTP API 与 HTTP.sys 驱动程序进行交互。以类似的方式,   .NET 框架中的HttpListener类是 HTTP Server API 的简单包装器。

图 2 – Windows 服务器上的 HTTP 堆栈组件的架构(来源)。

应用程序(或者在我们的例子中是恶意软件)接收和处理特定 URL 前缀请求的过程可以概述如下:

  1. 该恶意软件通过 Windows 操作系统提供的任何一种方式向 HTTP.sys 注册一个或多个 URL 前缀。
  2. 当收到 HTTP 请求时,HTTP.sys 会识别与请求前缀关联的应用程序,并将请求转发给恶意软件(如果恶意软件负责该前缀)。
  3. 然后,恶意软件的请求处理程序接收 HTTP.sys 拦截的请求并为其生成响应。

联合通讯

提取配置后,恶意软件使用相同的一字节异或来解密负责通过侦听提供的 URL 前缀列表来建立 C&C 通信通道的 shellcode。虽然面向网络的 Windows 服务器上的被动后门的概念并不新鲜,并且  早在 2019 年就  在疯狂劫持相同的 Windows DLL 中 观察到了这一点(由与中国相关的ShadowHammer 行动),但 LIONTAIL 开发人员提升了他们的方法。该恶意软件不使用 HTTP API,而是使用 IOCTL 直接与底层 HTTP.sys 驱动程序交互。这种方法更加隐蔽,因为它不涉及 IIS 或 HTTP API,这些通常由安全解决方案密切监控,但由于 HTTP.sys 的 IOCTL 没有记录,并且需要威胁行为者进行额外的研究工作,因此这不是一项简单的任务。wblsctrl.dll

首先,shellcode 使用以下 IOCTL 向 HTTP.sys 注册 URL 前缀:

  • 0x128000 –  UlCreateServerSessionIoctl – 创建 HTTP/2.0 会话。
  • 0x128010 –  UlCreateUrlGroupIoctl – 创建一个新的 UrlGroup。UrlGroup 是在服务器会话下创建的一组 URL 的配置容器,并继承其配置设置。
  • 0x12801d –  – 通过设置HttpServerBindingPropertyUlSetUrlGroupIoctl 将 UrlGroup 与请求队列关联 。
  • 0x128020 –  UlAddUrlToUrlGroupIoctl – 将 的数组添加 listen_urls 到新创建的 UrlGroup 中。
图 3 - HTTP.sys IOCTL 表。
图 3 – HTTP.sys IOCTL 表。

注册 URL 前缀后,后门会启动一个循环,负责处理传入的请求。end_string 循环继续,直到它从与后门配置中提供的URL 相同的 URL 获取请求 。

后门使用 0x124036 –  UlReceiveHttpRequestIoctl IOCTL 接收来自 HTTP.sys 的请求。

UlReceiveEntityBodyIoctl 根据受感染服务器的版本,使用 0x12403B –或(如果高于 20348)0x12403A – 接收请求正文 UlReceiveEntityBodyFastIo。然后通过将整个数据与数据的第一个字节进行异或来对其进行 Base64 解码和解密。这是在多个恶意软件系列中观察到的常见加密方法,包括但不限于 DEV-0861 的网络部署 反向代理

图 4 - LIONTAIL 有效负载的 C&C 解密方案。</p> <p>解密的有效负载具有以下结构:
图 4 – LIONTAIL 有效负载的 C&C 解密方案。

解密后的有效负载具有以下结构:

QWORD shellcode_size
_BYTE [] shellcode
QWORD shellcode_output (传入消息中应为0 )
QWORD shellcode_output_size (传入消息中应为0 )
QWORD MAGIC_NUM (必须为0x18 )
_BYTE []参数

恶意软件创建一个新线程并在内存中运行 shellcode。由于某种原因,它 在请求消息中使用shellcode_output和作为指向内存中相应数据的指针。shellcode_output_size

为了加密响应,恶意软件选择一个随机字节,使用它作为密钥对数据进行异或编码,将密钥添加到结果中,然后对整个结果进行 Base64 编码,然后使用 IOCTL 0x12403F 将其发送回 C&C 服务器–  UlSendHttpResponseIoctl.

LIONTAIL 网页外壳

除了 PE 植入之外,Scarred Manticore 还使用基于 Web shell 的 LIONTAIL shellcode 加载器版本。Web shell 的混淆方式与其他 Scarred Manticore .NET 负载和 Web shell 类似。

图 5 – LIONTAIL Web shell 的主要功能(已格式化,保留混淆)。

Web shell 获取带有 2 个参数的请求:

  • 要执行的 shellcode。
  • 要使用的 shellcode 的参数。

这两个参数的加密方式与其他通信相同:与第一个字节进行异或,然后进行 Base64 编码。

发送到基于 Web shell 的 shellcode 加载器的 shellcode 和参数的结构与 LIONTAIL 后门中使用的相同,这表明观察到的工件是更大框架的一部分,该框架允许根据演员的访问和需求。

使用命名管道的 LIONTAIL 版本

在我们的研究过程中,我们还发现了与LIONTAIL样本具有相似内部结构的装载机。该版本不是侦听 URL 前缀,而是从命名管道获取有效负载,并且可能被指定安装在无法访问公共网络的内部服务器上。恶意软件的配置有点不同:

QWORD var_0
QWORD var_8
QWORD var_10
双字var_18
DWORD dwOpenMode
DWORD dwPipeMode
DWORD nMaxInstances
DWORD nOutBufferSize
DWORD nInBufferSize
DWORD nDefaultTimeOut
STRING 管道名称

主 shellcode 首先将  字符串安全描述符 转换“D:(A;;FA;;;WD)” 为有效的、功能性的安全描述符。由于该字符串以“D”开头,因此它表示 DACL(自由访问控制列表) 条目,其通常具有以下格式:  entry_type:inheritance_flags(ACE_type; ACE_flags; rights; object_GUID; inherit_object_GUID; account_SID)。在这种情况下,安全描述符允许每个人 ( ) 对 ( )A文件进行所有访问 ( )。FAWD

然后,使用安全描述符  根据配置中提供的值创建命名管道。在我们观察到的样本中,所使用的管道名称为 \\.\pipe\test-pipe。

值得注意的是,与 HTTP 版本不同,该恶意软件没有采用任何更先进的技术来连接到命名管道、从中读取和写入。相反,它依赖于标准 kernel32.dll API,例如 CreateNamedPipe、 和 ReadFileWriteFile。

基于命名管道的 LIONTAIL 的通信与 HTTP 版本相同,具有相同的加密机制和相同的有效负载结构,在内存中作为 shellcode 运行。

LIONTAIL 内存组件

有效负载类型

LIONTAIL 加载程序解密从攻击者的 C&C 服务器接收到的有效负载及其参数后,首先解析该参数。它是一个描述 shellcode 要执行的有效负载类型的结构,并且根据有效负载的类型以不同的方式构建:

  • TYPE = 1 – 执行另一个 shellcode:
双字型// 1
QWORD shellcode_size
_BYTE []外壳代码
  • TYPE = 2 – 执行指定的API函数:
双字型// 2
CHAR [] 库名
CHAR [] api_name

API 执行的参数具有以下结构:

DWORD need_to_be_freed_flag
QWORD 参数大小
_BYTE []参数

下一阶段

为了让事情变得更复杂,Scarred Manticore 将最终的有效负载包装在嵌套的 shellcode 中。例如,从攻击者处收到的 shellcode 之一运行另一个几乎相同的 shellcode,后者又运行负责机器指纹识别的最终 shellcode。

此有效负载收集的数据是通过运行特定的 Windows API 或枚举注册表项来收集的,并包括以下组件:

  • 计算机名(使用 GetComputerNameW API)和域名(使用 GetEnvironmentVariableA API)
  • 标记系统是否为 64 位(使用 GetNativeSystemInfo API,检查通过 完成wProcessorArchitecture == 9)
  • 处理器数量(使用 GetNativeSystemInfo API 的 dwNumberOfProcessors)
  • 物理内存 ( GetPhysicallyInstalledSystemMemory)
  • 来自注册表项的数据 CurrentVersion (类型、名称长度、名称、数据长度、数据)
  • 来自注册表项的数据SecureBoot\State (相同的数据)
  • 来自注册表项的数据 System\Bios (相同的数据)

最终的结构包含所有收集到的信息,还包含一个错误代码位置,供威胁参与者用来找出他们使用的某些 API 无法按预期工作的原因:

DWORD 最后一个错误( GetComputerNameW )
DWORD Last_error ( GetPhysicallyInstalledSystemMemory )
DWORD 最后一个错误( GetEnvironmentVariableA )
DWORD Last_error ( NtOpenKey 当前版本)
DWORD Last_error ( NtQueryKey 当前版本)
DWORD 值数量(当前版本)
DWORD Last_error ( NtOpenKey SecureBoot\State )
DWORD Last_error ( NtQueryKey SecureBoot\State )
DWORD num_of_values ( SecureBoot\State )
DWORD Last_error ( NtOpenKey 系统\Bios )
DWORD Last_error ( NtQueryKey System\Bios )
DWORD 值数量(系统\Bios )
QWORD 处理器数量
QWORD Total_RAM
QWORD 刻度计数
QWORD is_64_bit
_CHAR [ 0X10 ]计算机名称
_CHAR [ 0X10 ]域名
_BYTE [] 当前版本_数据
_BYTE [] SecureBootState_data
_BYTE [] 系统Bios_数据

附加工具

除了使用 LIONTAIL 之外,我们还观察到 Scarred Manticore 还利用了其他自定义组件。

LIONHEAD 网络转发器

在一些受感染的交换服务器上,攻击者部署了 LIONHEAD,这是一个小型网络转发器。LIONHEAD 还使用与 LIONTAIL 相同的幻像 DLL 劫持技术安装为服务,并利用类似的机制将流量直接转发到 Exchange Web 服务 (EWS) 端点。

LIONHEAD 的配置与 LIONTAIL 不同:

双字超时 0x493E0
双字转发端口 444
STRING end_string ‘<已编辑>’
STRINGforward_server “localhost”
STRING 前向路径 “/ews/exchange.asmx”
STRING [] Listen_urls ‘https://+:443/<redacted>/’

后门 listen_urls 以与 LIONTAIL 相同的方式注册前缀并监听请求。对于每个请求,后门都会复制内容类型、cookie 和正文,并将其转发到 <forward_server>/<forward_path>:<forward port> 配置中指定的位置。forward_server 接下来,后门从接收原始请求的 URL获取响应 并将其发送回。

该转发器可用于绕过对 EWS 外部连接的限制,隐藏外部 EWS 数据的真正使用者,从而隐藏数据泄露。

网络外壳

Scarred Manticore 部署了多个 Web shell,包括之前 间接归因 于 OilRig 的那些。其中一些 Web shell 因其混淆性、命名约定和工件而脱颖而出。Web shell 保留了类和方法混淆以及与 Scarred Manticore 使用的许多其他 Web shell 和基于 .NET 的工具类似的字符串加密算法(与一个字节进行异或,密钥从第一个字节或前 2 个字节派生)在他们过去几年的攻击中。

其中一个 shell 是开源 XML/XSL 转换 Web shell  Xsl Exec Shell的经过严重混淆和稍微修改的版本。该 Web shell 还包含两个返回字符串“ ~/1.aspx”的混淆函数。这些函数从未被调用过,很可能是其他版本的残余,正如我们在 Scarred Manticore 之前使用的工具(例如 FOXSHELL)中观察到的那样,稍后将对此进行讨论:

图 6 - FOXSHELL Web shell 版本中保留了未使用的字符串。
图 6 – FOXSHELL Web shell 版本中保留了未使用的字符串。

瞄准

根据我们对利用 LIONTAIL 的最新一波攻击的了解,观察到的受害者遍布中东地区,包括沙特阿拉伯、阿拉伯联合酋长国、约旦、科威特、阿曼、伊拉克和以色列。大多数受影响的实体属于 政府、 电信、军事和 金融 部门以及 IT 服务提供商。然而,我们还观察到属于全球非营利人道主义网络的区域分支机构的 Exchange 服务器受到感染。

地理区域和目标概况符合伊朗的利益,也符合 MOIS 附属集群通常在间谍活动中针对的典型受害者概况。

图 7 – 目标国家。

此前,我们认为与 Scarred Manticore 一致的集群 DEV-0861 曾被公开 曝光 ,用于首次访问阿尔巴尼亚政府网络并从中窃取数据,以及从科威特、沙特等中东国家的多个组织中窃取电子邮件阿拉伯、土耳其、阿联酋和约旦。

归因和历史活动

至少从 2019 年开始,Scarred Manticore 在中东地区受感染的面向互联网的 Windows 服务器上部署了独特的工具。这些年来,他们的工具集经历了重大发展。它最初是基于开源的网络部署代理,随着时间的推移,它发展成为一个多样化且强大的工具集,利用自定义编写的组件和开源组件。

图 8 – Scarred Manticore 使用的多个恶意软件版本的代码和功能演变概述。

基于 Tunna 的 Web shell

与威胁行为者活动相关的最早样本之一基于 Tunna的 Web shell ,Tunna 是一种开源工具,旨在通过 HTTP 隧道传输任何 TCP 通信。Tunna Web shell 允许从外部连接到远程主机上的任何服务,包括那些被防火墙阻止的服务,因为与 Web shell 的所有外部通信都是通过 HTTP 完成的。远程主机的IP和端口在配置阶段发送到Web shell,在很多情况下,Tunna主要用于代理RDP连接。

威胁参与者使用的 Web shell 具有内部版本 Tunna v1.1g (Github 上仅提供 1.1a 版本)。与开源版本相比,最显着的变化是通过将数据与预定义字符串进行异 或并 在末尾szEncryptionKey 附加常量字符串来加密 请求和响应:K_SUFFIX

图 9 - 威胁行为者使用的“Tunna 1.1g”代理中的加密功能。
图 9 – 威胁行为者使用的“Tunna 1.1g”代理中的加密功能。
图 10 - Tunna 代理对数据进行解密和加密。
图 10 – Tunna 代理对数据进行解密和加密。

FOXSHELL:XORO 版本

随着时间的推移,代码被重构并失去了与 Tunna 的相似之处。我们将这个版本和所有后续版本跟踪为 FOXSHELL。

最大的变化是使用面向目标的方法将多个实体组织成类。大多数 FOXSHELL 版本中都保留以下类结构:

图 11 – FOXSHELL 中的类。

所有负责加密流量的功能都转移到了一个单独的 EncryptionModule 类中。此类加载嵌入在 FOXSHELL 主体内的 base64 编码字符串中的 .NET DLL,并调用其 encrypt 和 decrypt 方法:

图 12 - Web shell 内的 Base64 编码 EncryptionDll。
图 12 – Web shell 内的 Base64 编码 EncryptionDll。
图 13 - 负责加密和解密方法调用的 EncryptionModule 类。
图 13 – 负责加密和解密方法调用的 EncryptionModule 类。

嵌入式加密模块的名称为 XORO.dll,其类以 Encryption.XORO 与基于 Tunna 的 Web shell 相同的方式实现解密和加密方法,并使用相同的硬编码值:

图 14 - XORO.dll 内的加密常量和解密函数。
图 14 – XORO.dll 内的加密常量和解密函数。

对 Web shell 的所有请求也封装在一个名为 的类中 Package,该类处理不同的 PackageTypes:Data、Config、OK、Dispose 或 Error。PackageType 由包的第一个字节定义,并且根据 Package 的类型,Web shell 解析包并应用配置(打开一个新的套接字到配置中指定的远程计算机,并应用新的 EncryptionDll(如果提供)) ),或处置现有套接字,或代理连接(如果包是数据类型):

图 15 - FOXSHELL 中的包处理。
图 15 – FOXSHELL 中的包处理。

FOXSHELL:Bsae64 版本(不是拼写错误)

这个版本的Web shell仍然是未混淆的,其内部版本在代码中指定:

常量字符串版本= “1.5”

Web shell 还包含嵌入其中的默认 EncryptionDll。该模块的名称是 Base64.dll,加密类(拼写错误为 Bsae64)公开了加密和解密方法。然而,两者都只是简单的base64编码:

图 16 - Base64.dll 中的加密和解密方法。
图 16 – Base64.dll 中的加密和解密方法。

虽然这种简单的编码可以在 Web shell 本身的代码中完成,但其他嵌入式 DLL 的存在,例如 XORO.dll (前面描述的),以及在配置阶段提供另一个 EncryptionDll 的能力,意味着攻击者更喜欢控制他们希望在某些环境中默认使用哪种特定类型的加密。

此版本中的其他更改是将 PackageType 重命名 Config 为 RDPconfig、 和 ConfigPackage , RDPConfigPackage表明参与者专注于代理 RDP 连接。这些类的代码保持不变:

图 17 – RDP 配置类。

最后,代码中的另一个条件处理 Web shell 接收非空参数的情况, WV-RESET, 该参数调用函数来关闭代理套接字 OK 并向攻击者发送响应:

图 18 - “关闭代理”WV-RESET 参数。
图 18 –“关闭代理”WV-RESET 参数。

Web shell 中的 Web shell:已编译的 FOXSHELL

上述版本针对中东国家的实体,例如沙特阿拉伯、卡塔尔和阿拉伯联合酋长国。该版本除了针对中东政府实体外,还是 2021 年 5 月针对阿尔巴尼亚政府的攻击的一部分 。通过利用面向互联网的 Microsoft SharePoint 服务器,攻击者部署 ClientBin.aspx 在受感染的服务器上来代理外部连接从而促进受害者在整个环境中的横向移动。

示例的详细信息可能有所不同,但在所有示例中,FOXHELL 都编译为 DLL 并以 base64 嵌入到基本 Web shell 中。编译后的 DLL 会被加载 System.Reflection.Assembly.Load,然后 ProcessRequest 调用其中的方法。App_Web_<random>.dll, 该 DLL 是用 .NET 编写的,并且具有指示 ASP.NET 动态编译的 DLL 的名称模式 。

图 19 – 加载 App_Web_*.dll 的 Web shell。

DLL App_Web* 受到类和方法混淆的影响,所有字符串都使用Base64、与第一个字节的XOR和AES的组合进行加密:

图 20 -inchpublic 函数负责字符串加密,展示了方法和类的混淆。
图 20 –inchpublic 函数负责字符串加密,展示了方法和类的混淆。

当 Web shell 编译为 DLL 时,它包含初始化存根,这可确保 Web shell 侦听正确的 URI。在这种情况下,初始化发生在以下代码中:

图 21 – Web shell App_Web_*.dll 中的初始化存根。

或者,反混淆后:

公开音乐会this_medal () {
根据。AppRelativeVirtualPath = “~/1.aspx”
if ( !concertthis_medal.__ initialized ) {
Concertthis_medal。__fileDependency = 基础。GetWrappedFileDependency (新字符串{ “~/1.aspx” }) ;
Concertthis_medal。__初始化=真;}

此初始化将 FOXSHELL 设置为侦听相对路径上的请求 ~/1.aspx,我们将其视为与涉及 LIONTAIL 的攻击相关的其他 Web shell 中未使用的工件。

在内部,该 DLL 具有相同的“ 1.5FOXSHELL”版本,其中包括 WV-RESET 停止代理的参数以及与以前版本相同的默认 Bsae64 加密 DLL。

基于IIS ServerManager和HTTPListener的独立后门

自 2020 年中期以来,除了 FOXSHELL 作为代理流量的手段之外,我们还观察到一个相当复杂的独立被动后门,它用 .NET 编写,旨在部署在 IIS 服务器上。它使用与 FOXSHELL 类似的技术进行混淆并伪装成 System.Drawing.Design.dll. SDD 后门此前曾 由沙特研究人员进行过分析 ,但从未归因于特定的威胁行为者或活动。

联合通讯

SSD 后门通过受感染计算机上的 HTTP 监听器建立 C&C 通信。它是使用两个类来实现的:

  • ServerManager  – .NET 中 System.Web.Administration 命名空间的一部分,用于管理和配置 Windows 服务器上的 Internet 信息服务 (IIS),例如获取配置、创建、修改或删除 IIS 站点、应用程序和应用程序池。
  • HTTPListener  – .NET Framework 中的一个类,用于创建自定义 HTTP 服务器,独立于 IIS 并基于 HTTP API。

ServerManager 用于提取 IIS 服务器托管的站点并构建要侦听的 URL 前缀的 HashSet:

图 22 –angleoppose_river 函数的混淆代码,该函数
根据 IIS 服务器上配置的站点和绑定构建 URL 前缀的哈希集(Illdefy数组提供相对的 URls)。

在这种特定情况下,恶意软件样本中配置的唯一相对 URI 是Temporary_Listen_Addresses。然后,恶意软件使用 HttpListener 类开始侦听指定的 URL 前缀:

图 23 – HttpListener 启动代码。</p> <p><strong>C&C 命令执行</strong>
图 23 – HttpListener 启动代码。

C&C命令执行

该后门具有多种功能:使用 执行命令 cmd.exe、上传和下载文件、使用指定参数执行进程以及运行其他 .NET 程序集。

图 24 - SDD 后门的请求处理程序。
图 24 – SDD 后门的请求处理程序。

首先,如果 POST 请求正文包含数据,则恶意软件会解析该数据并将该消息作为其支持的 4 个命令之一进行处理。否则,如果请求包含参数 Vet,则恶意软件只需从 Base64 解码其值并使用 执行它 cmd /c。如果这些都不成立,则恶意软件会处理心跳机制:如果请求 URL 包含 wOxhuoSBgpGcnLQZxipa 小写字符串,则恶意软件会 连同响应UsEPTIkCRUwarKZfRnyjcG13DFA 一起 发回200 OK 。

POST 请求中的数据使用 Base64 和简单的基于 XOR 的加密进行加密:

图 25 – 命令解密算法。

解密消息数据后,恶意软件按照以下顺序对其进行解析:

DWORD 命令类型
DWORD 命令名称长度
STRING 命令名称
STRING 数据
图 26 - 处理可能的 SDD 后门命令类型的开关。
图 26 – 处理可能的 SDD 后门命令类型的开关。

根据威胁行为者的说法,可能的命令包括:

  • “Command” – 使用指定参数执行进程。在本例中,将解析数据以提取进程名称及其参数。
  • “Upload” – 将文件上传到受感染系统中的指定路径。
  • “Download” – 将指定文件发送给威胁参与者。
  • “Rundll” – 加载程序集并使用指定参数运行它(如果存在)。

响应数据的构建方式与请求相同(返回命令类型、命令名称和输出),然后使用与请求相同的基于 XOR 的算法进行加密。

WINTAPIX驱动程序

最近,Fortinet 披露了 一波针对中东目标(主要是沙特阿拉伯,但也有约旦、卡塔尔和阿拉伯联合酋长国)的攻击,其中涉及研究人员命名为 WINTAPIX 的内核模式驱动程序。尽管安装驱动程序的确切感染链尚不清楚,但它们仅针对 IIS 服务器,因为它们使用 IISServerManager对象。高级执行流程如下:

  1. WINTAPIX 驱动程序已加载到内核中。
  2. WINTAPIX 驱动程序枚举用户模式进程以查找具有本地系统权限的合适进程。
  3. WINTAPIX 驱动程序将嵌入的 shellcode 注入到先前找到的进程中。shellcode 是使用开源 Donut 项目生成的,该项目允许创建位置无关的 shellcode,能够从内存加载和执行 .NET 程序集。
  4. 注入的 shellcode 加载并执行加密的 .NET 负载。

除了已经熟悉的类、方法和字符串混淆之外,最终的有效负载还使用商业混淆器进行混淆,并且它结合了 SDD 后门和 FOXSHELL 代理的功能。ServerManager为了实现这两个目标,它使用与HTTPListenerSSD 后门类似的方式侦听两组 URL 前缀。

驱动程序负载中使用的 FOXSHELL 版本设置为 1.7. 此版本中引入的主要增强功能是使用已知的挂起事件日志服务线程技术来绕过事件日志。Bsae64.dll与 FOXSHELL 1.5 版相比,驱动程序中硬编码的默认 EncryptionDll 是相同的,并且核心代理结构在很大程度上保持不变。

图 27 - .NET 负载中硬编码的版本。
图 27 – .NET 负载中硬编码的版本。
图 28 - 嵌入式 FOXSHELL 1.7 类结构。
图 28 – FOXSHELL 1.7 类结构。

由于已经提供了对WINTAPIX 驱动程序及其版本SRVNET2的广泛分析 ,这里我们仅强调这些工具与其他讨论的加强其从属关系的工具之间的主要重叠部分:

  • 与 SDD 后门相同的代码库,包括基于相同字符串值wOxhuoSBgpGcnLQZxipa 和 UsEPTIkCRUwarKZfRnyjcG13DFA.
  • 相同支持的后门命令类型和使用相同密钥的加密。
  • 与 FOXSHELL 相同的代码库、结构和功能。
  • 相同的混淆和加密方法。

外表

LIONTAIL 框架组件与 FOXSHELL、SDD 后门和 WINTAPIX 驱动程序共享类似的混淆和字符串工件。目前,我们不知道有任何其他威胁行为者在使用这些工具,我们根据多个代码重叠和共享的受害者情况将它们全部归因于 Scarred Manticore。

结论

在过去几年中,人们观察到 Scarred Manticore 在中东国家进行了多次秘密行动,包括获取该地区电信和政府组织的访问权限,并维持和利用这种访问权限数月,以系统性地从受害者系统中窃取数据。通过检查他们的活动历史,可以明显看出威胁行为者在改进其攻击和增强依赖于被动植入的方法方面已经取得了多大的进展。

虽然 LIONTAIL 代表了 FOXSHELL 进化的逻辑进程,并且仍然具有一些独特的特征,使我们能够将涉及 LIONTAIL 的攻击归因于 Scarred Manticore,但它从其他观察到的变体中脱颖而出。LIONTAIL 框架不使用常见的、通常受监视的方法来实现侦听器:它不再依赖 Internet 信息服务 (IIS)、其模块或 .NET 框架提供的任何其他选项和库来以编程方式管理 IIS。相反,它通过直接与 HTTP.sys 驱动程序交互来利用 Windows HTTP 堆栈的最低级别。此外,它显然允许威胁行为者定制植入程序、其配置参数和加载程序的文件传输类型。所有这些都增强了植入物的隐形能力,使它们能够长时间逃避检测。

我们预计“疤痕狮蝎”行动将持续下去,并可能根据伊朗的长期利益扩散到其他地区。虽然疤痕狮蝎最近的大部分活动主要集中在维持秘密访问和数据提取,但阿尔巴尼亚政府网络遭受攻击的令人不安的例子提醒人们,民族国家行为者可能会与情报同行合作并共享访问权限机构。

Check Point 客户仍然受到保护

Check Point 客户在使用IPS、Check Point  Harmony Endpoint威胁模拟时,仍能免受本报告中详述的攻击。

IPS:

后门.WIN32.Liontail.A/B

威胁模拟:

APT.Wins.Liontail.C/D

国际奥委会

daa362f070ba121b9a2fa3567abc345edcde33c54cabefa71dd2faad78c10c33
f4639c63fb01875946a4272c3515f005d558823311d0ee4c34896c2b66122596 2097320e71990865f04b9484858d279875cf5c66a5f6d12c819a34e2385da838
67560e05383e38b2fcc30df84f0792ad095d5594838087076b214d849cde9542 4f6351b8fb3f49ff0061ee6f338cd1af88893ed20e71e211e8adb6b90e50a3b8
f6c316e2385f2694d47e936b0ac4bc9b55e279d530dd5e805f0d963cb47c3c0d 1485c0ed3e875cbdfc6786a5bd26d18ea9d31727deb8df290a1c00c780419a4e 8578bff36e3b02cc71495b647db88c67c3c5ca710b5a2bd539148550595d0330
c5b4542d61af74cf7454d7f1c8d96218d709de38f94ccfa7c16b15f726dc08c0 9117bd328e37be121fb497596a2d0619a0eaca44752a1854523b8af46a5b0ceb e1ad173e49eee1194f2a55afa681cef7c3b8f6c26572f474dec7a42e9f0cdc9d a2598161e1efff623de6128ad8aafba9da0300b6f86e8c951e616bd19f0a572b 7495c1ea421063845eb8f4599a1c17c105f700ca0671ca874c5aa5aef3764c1c 6f0a38c9eb9171cd323b0f599b74ee571620bc3f34aa07435e7c5822663de605 3875ed58c0d42e05c83843b32ed33d6ba5e94e18ffe8fb1bf34fd7dedf3f82a7 1146b1f38e420936b7c5f6b22212f3aa93515f3738c861f499ed1047865549cb b71aa5f27611a2089a5bbe34fd1aafb45bd71824b4f8c2465cf4754db746aa79 da450c639c9a50377233c0f195c3f6162beb253f320ed57d5c9bb9c7f0e83999
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66