针对美国国防承包商的后门SockDetour

admin 2022年3月3日20:47:27评论4 views字数 6050阅读20分10秒阅读模式

执行摘要

Unit 42 一直在跟踪APT 活动TiltedTemple,该活动使用了 Zoho ManageEngine ADSelfService Plus 中的漏洞CVE-2021-40539和 ServiceDesk Plus 中的漏洞 CVE-2021-44077 。攻击者使用多种技术来访问目标系统并保持持久性,瞄准了技术、能源、医疗保健、教育、金融和国防行业的十数个组织。在对该活动进行进一步分析时,发现了另一个复杂的工具 SockDetour。

SockDetour 是一个自定义后门,旨在用作备用后门,以防主要后门被删除。它在目标 Windows 服务器上无文件且无套接字地运行,因此很难被检测到。TiltedTemple活动中用于恶意软件分发的C2 基础设施之一托管了SockDetour 以及其它工具,例如内存转储工具和几个 webshell。研究人员将 SockDetour 作为 TiltedTemple 中的一项活动进行跟踪,但尚不能明确说明这些活动是来自单个还是多个攻击者。

根据 Unit 42 的遥测数据和对收集到的样本的分析,SockDetour 背后的攻击者一直专注于使用这些工具瞄准美国的国防承包商。有证据表明至少有4家国防承包商成为此次行动的目标,其中至少有一家已被入侵。

Unit 42 还认为,SockDetour 可能从 2019 年 7 月开始就已经存在。在公共存储库中没有发现任何其它的 SockDetour 样本,这意味着后门成功地隐藏了很长时间。

TiltedTemple 活动

TiltedTemple是一个APT 团伙组织的活动,利用各种初始访问媒介来攻击全球范围内的各种目标。最初针对 TiltedTemple 的报告侧重于利用 ManageEngineADSelfService Plus 服务器和ManageEngine ServiceDesk Plus的攻击。

TiltedTemple 活动已经攻击了技术、能源、医疗保健、教育、金融和国防行业的组织,并对这些行业和其它行业进行了侦察活动,包括美国五个州的基础设施。

而 SockDetour 托管在与 TiltedTemple 相关的基础设施上,但尚未确定这与单个攻击者还是多个攻击者有关。

SockDetour 瞄准美国国防

虽然 TitledTemple 活动起初被认为开始于 2021 年 8 月,但最近发现SockDetour 于 2021 年 7 月 27 日就从外部 FTP 服务器传送到美国国防承包商的 Windows 服务器。

FTP 服务器还托管了攻击者使用的其它工具,例如内存转储工具和 ASP Webshell。

在分析和跟踪这些指标后,发现还有至少3个美国国防承包商被同一攻击者盯上了。

SockDetour托管

托管 SockDetour 的 FTP 服务器是已被攻击的 Quality Network ApplianceProvider (QNAP) 小型办公室和家庭办公室 (SOHO) 网络附加存储 (NAS) 服务器。已知 NAS 服务器存在多个漏洞,包括远程代码执行漏洞CVE-2021-28799。2021 年 4 月,各种勒索软件家族在大规模感染活动中利用了此漏洞。SockDetour 背后的攻击者也可能利用这些漏洞来破坏 NAS 服务器。

SockDetour 分析

SockDetour 是一个以 64 位 PE 文件格式编译的自定义后门。它旨在用作备用后门,以防主要后门被检测到并删除。它适用于运行带有侦听 TCP 端口服务的 Windows 操作系统。它会劫持已存在的网络套接字的网络连接,并通过套接字与攻击者建立加密的 C2 通道。因此,SockDetour 既不需要打开监听端口来接收连接,也不需要调用外部网络来建立远程 C2 通道。这使得后门更难从主机和网络级别检测到。

为了让 SockDetour 劫持现有进程的套接字,它需要被注入到进程的内存中。出于这个原因,攻击者使用名为Donut framework 的开源 shellcode 生成程序将 SockDetour 转换为 shellcode ,然后使用PowerSploit 内存注入程序将 shellcode 注入目标进程。检测到的样本包含硬编码的目标进程 ID,这意味着攻击者手动从被入侵的服务器中选择注入的目标进程。

在将 SockDetour 注入目标进程后,后门会利用Microsoft Detours 库包,该包旨在监视和检测 Windows 上的 API 调用以劫持网络套接字。使用DetourAttach()函数,将hook附加到 Winsock 的accept()函数。有了hook,当连接到服务端口的新链接被建立,并调用 Winsock accept()API 函数时,对accept()函数的调用被定向到SockDetour 中定义的恶意 detour 函数。

其它非C2流量返回原服务进程,保证目标服务正常运行,不受干扰。

通过这样的实现,SockDetour 能够在被入侵的 Windows 服务器中无文件和无套接字地运行,并作为备用后门,以防安全人员检测到并删除主后门。

针对美国国防承包商的后门SockDetour

图 1.SockDetour 工作流程

客户端认证与 C2 通信

由于 SockDetour 劫持了到合法服务端口的所有连接,它首先需要从混入合法服务流量的传入流量中验证C2流量,然后进行身份验证,以确保C2连接来自正确的客户端。

SockDetour 通过以下步骤实现对 C2 连接的验证和身份验证。

1. 首先,期望从客户端接收 137 字节的数据进行身份验证。认证数据结构如表1所示。

17 03 03

AA BB

CC DD EE FF

128-byte数据块

固定标头值伪装成 TLS 流量

payload数据大小

用于客户端身份验证的4-  byte变量

客户端认证数据块的数据签名

表 1.SockDetour 客户端认证数据结构

2. 读取前9个字节的数据。使用带有MSG_PEEK选项的recv()函数接收此数据,这样它就不会从套接字队列中删除数据来干扰合法服务的流量。

3. 验证数据是否以17 03 03开头,这通常被视为传输加密数据时 TLS 流量的标头。然而,这对于普通的 TLS 来说是不正常的——如果没有正确的 TLS 握手,TLS加密的会话将不会正常显示。

针对美国国防承包商的后门SockDetour

图 2.SockDetour 使用 MSG_PEEK 接收数据并验证数据

4. 检查payload数据AA BB的大小是否小于等于251。

5. 检查payload CC DD EE FF的4个字节是否满足以下条件:

        a)逐位与88 a0 90 82 AND后的结果为88 a0 90 82

        b)逐位与fd f5 fb efOR 后的结果为 fd f5 fb ef

6. 使用MSG_PEEK从同一数据队列中读取全部 137 字节的数据,以进行进一步的身份验证。

7. 构建一个 24 字节的数据块,如表 2 所示。

08 1c c1 78 d4 13  3a d7 0f ab

CC DD  EE FF

b3 a2 b8 ae 63 bb  03 e8 ff 3b

在  SockDetour 中硬编码的 10 个字节

从客户端接收到的4个字节进行身份验证

在  SockDetour 中硬编码的 10 个字节

表 2. 用于客户端身份验证的 24 字节数据块。

8.这 24 字节数据块使用嵌入的公钥根据表 1 中的 128 字节数据签名进行加密和验证,攻击者将通过使用相应的私钥对同一 24 字节数据块的哈希进行签名。

这样就完成了客户端身份验证步骤。成功验证后,SockDetour 使用没有MSG_PEEK选项的recv()函数接管 TCP 会话,该会话现在被验证为用于后门。

接下来,SockDetour 使用硬编码的初始向量值bvyiafszmkjsmqgl创建一个 160 位会话密钥,然后使用以下数据结构将其发送到远程客户端。

17 03 03

AA BB

CC DD EE FF

session_key

随机填充

固定标头值以伪装 TLS 流量

payload数据大小

会话密钥长度

160 位会话密钥

随机填充

表 3.SockDetour 向客户端发送会话密钥

在 TLS 等常见的加密协议中,会话密钥在传输之前使用公钥进行加密。但是,在该样本中,攻击者似乎忘记了该步骤并以纯文本形式传输密钥。

现在,在SockDetour和远程客户端之间共享了会话密钥后,C2连接通过被劫持的套接字进行了加密。

现在通过 SockDetour 和远程客户端之间共享的会话密钥,C2 通信通过被劫持的套接字进行加密。

插件功能

作为备用后门,SockDetour 仅提供加载插件 DLL 的一项功能。在会话密钥共享之后,SockDetour 从客户端接收到4个字节的数据,这表明 SockDetour 将在最终的payload交付阶段将接收的数据长度,大小预计小于或等于 5 MB。

收到的最终payload数据使用共享会话密钥进行加密。解密后,接收到的数据预计为 JSON 格式,包含两个对象app和args。app包含一个 base 64 编码的DLL,而args包含一个要传递给 DLL 的参数。SockDetour 将这个插件 DLL 加载到新分配的内存空间中,然后调用一个名为 ThreadProc 的导出函数,其函数参数如下:

{    "sock": hijacked_socket,    "key": session_key,    "args": arguments_received_from_client}

虽然没有发现插件 DLL 样本,但上述函数参数表明插件也可能通过被劫持的套接字进行通信,并使用会话密钥加密会话。因此,推测它的运作方式和SockDetour一样隐秘。

结论

SockDetour 是一个后门,旨在隐藏在目标 Windows 服务器上,以便在主后门出现故障时充当备用后门。它在合法服务进程中无文件加载,并使用合法的网络套接字建立自己的加密 C2 通道。

尽管可以轻松地修改它,但 SockDetour 样本的编译时间戳表明,它可能至少从 2019 年 7 月开始就已经存在,而没有对 PE 文件进行任何更新。另外,没有在公共存储库中找到其它的 SockDetour 样本。这表明该后门已成功地隐藏了很长时间。

插件 DLL 仍然未知,但它也有望通过 SockDetour 的加密通道传递,在内存中无文件加载并通过劫持套接字进行通信,从而非常秘密地运行。

另外需要注意的是,托管SockDetour的NAS服务器类型通常被小型企业使用。此样本作为重要提醒,建议组织在补丁发布时及时修复此类服务器。

IoC

SockDetour PE

0b2b9a2ac4bff81847b332af18a8e0705075166a137ab248e4d9b5cbd8b960df

PowerSploit 内存注入程序分发SockDetour

80ed7984a42570d94cd1b6dcd89f95e3175a5c4247ac245c817928dd07fc9540

bee2fe0647d0ec9f2f0aa5f784b122aaeba0cddb39b08e3ea19dd4cdb90e53f9

a5b9ac1d0350341764f877f5c4249151981200df0769a38386f6b7c8ca6f9c7a

607a2ce7dc2252e9e582e757bbfa2f18e3f3864cb4267cd07129f4b9a241300b

11b2b719d6bffae3ab1e0f8191d70aa1bade7f599aeadb7358f722458a21b530

cd28c7a63f91a20ec4045cf40ff0f93b336565bd504c9534be857e971b4e80ee

ebe926f37e7188a6f0cc85744376cdc672e495607f85ba3cbee6980049951889

3ea2bf2a6b039071b890f03b5987d9135fe4c036fb77f477f1820c34b341644e

7e9cf2a2dd3edac92175a3eb1355c0f5f05f47b7798e206b470637c5303ac79f

bb48438e2ed47ab692d1754305df664cda6c518754ef9a58fb5fa8545f5bfb9b

嵌入在 SocketDetour 中的公钥

-----BEGIN PUBLIC KEY -----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWD9BUhQQZkagIIHsCdn/ wtRNXcYoEi3Z4PhZkH3mar20EONVyXWP / YUxyUmxD + aTOVp3NB +XYOO9LqQEAWgyGndXyyuDssLWTb7z54n8iDu2pqiAEvJ6h18iwf0EwZ1BzPBDS1Kw +JE4tYIR860rD1DBul0u6OURqMPb5eZT1bQIDAQAB ----- END PUBLIC KEY -----

用于检测内存中 SockDetour 的 YARA 规则

rule apt_win_sockdetour{  meta:    author = "Unit 42 - PaloAltoNetworks"    date = "2022-01-23"    description = "Detects SockDetour in memory or in PE format"    hash01 = "0b2b9a2ac4bff81847b332af18a8e0705075166a137ab248e4d9b5cbd8b960df"  strings:    $public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWD9BUhQQZkagIIHsCdn/wtRNXcYoEi3Z4PhZkH3mar20EONVyXWP/YUxyUmxD+aTOVp3NB+XYOO9LqQEAWgyGndXyyuDssLWTb7z54n8iDu2pqiAEvJ6h18iwf0EwZ1BzPBDS1Kw+JE4tYIR860rD1DBul0u6OURqMPb5eZT1bQIDAQAB"    $json_name_sequence = {61 70 70 00 61 72 67 73 00 00 00 00 73 6F 63 6B 00 00 00 00 6B 65 79 00 61 72 67 73 00 00}    $verification_bytes = {88 [4] A0 [4] 90 [4] 82 [4] FD [4] F5 [4] FB [4] EF}    $data_block = {08 [4] 1C [4] C1 [4] 78 [4] D4 [4] 13 [4] 3A [4] D7 [4] 0F [4] AB [4] B3 [4] A2 [4] B8 [4] AE [4] 63 [4] BB [4] 03 [4] E8 [4] FF [4] 3B}    $initial_vector = {62 [4] 76 [4] 79 [4] 69 [4] 61 [4] 66 [4] 73 [4] 7A [4] 6D [4] 6B [4] 6A [4] 73 [4] 6D [4] 71 [4] 67 [4] 6C}   condition:    any of them}

原文链接:

https://unit42.paloaltonetworks.com/sockdetour/

原文始发于微信公众号(维他命安全):针对美国国防承包商的后门SockDetour

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月3日20:47:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   针对美国国防承包商的后门SockDetourhttps://cn-sec.com/archives/813842.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息