GhostContainer后门:针对亚洲高价值组织的Exchange服务器恶意软件分析

本文详细分析了GhostContainer后门,这是一种针对Microsoft Exchange服务器的高度定制化恶意软件,利用开源项目构建多功能后门,支持动态加载模块、代理转发和隐蔽通信,主要攻击亚洲政府机构和高科技公司。

GhostContainer后door for Exchange servers | Securelist

概述

在最近的应急响应(IR)案例中,我们发现高度定制化的恶意软件针对政府环境中的Exchange基础设施。通过分析检测日志和样本线索,推测Exchange服务器可能通过已知的N-day漏洞被入侵。深入分析恶意软件揭示了一个复杂的、多功能的backdoor,可通过下载额外模块动态扩展功能。我们将其命名为GhostContainer,它也被称为NightEagle(APT-Q-95)。

攻击者利用多个开源项目构建此backdoor。一旦加载,backdoor赋予攻击者对Exchange服务器的完全控制,允许执行一系列恶意活动。为逃避安全产品检测,恶意软件采用多种规避技术,并伪装成常见服务器组件以融入正常操作。此外,它可作为代理或隧道,可能将内部网络暴露给外部威胁或促进从内部设备窃取敏感数据。我们的遥测数据表明,此恶意软件可能是针对亚洲高价值组织(包括高科技公司)的APT活动的一部分。团队正在调查攻击活动的范围和程度以更好地理解威胁格局。

GhostContainer: the backdoor

  • MD5: 01d98380dfb9211251c75c87ddb3c79c
  • SHA1: 2bb0a91c93034f671696da64a2cf6191a60a79c5
  • SHA256: 87a3aefb5cdf714882eb02051916371fbf04af2eb7a5ddeae4b6b441b2168e36
  • Link time: 1970-01-01 12:00 AM UTC
  • File type: PE32 executable (EXE) (CLI) Intel 80386, for MS Windows Mono/.Net assembly
  • File size: 32.8 KB
  • File name: App_Web_Container_1.dll

文件名App_Web_Container_1.dll表明它充当“容器”。它包含三个关键类(Stub、App_Web_843e75cf5b63和App_Web_8c9b251fb5b3)和一个实用类(StrUtils)。文件由Exchange服务加载后,Stub类首先执行。它充当C2命令解析器,能够执行shellcode、下载文件、运行命令和加载额外的.NET字节码。最显著特性之一是创建App_Web_843e75cf5b63的实例,通过虚拟页面注入器加载web代理类(App_Web_8c9b251fb5b3)。

Stub: C2解析器和分发器

执行开始时,Stub类尝试绕过AMSI(反恶意软件扫描接口)和Windows事件日志。通过覆盖amsi.dll和ntdll.dll中的特定地址实现,以逃避AMSI扫描和Windows事件记录。

接下来,它从ASP.NET配置检索机器密钥(特别是验证密钥),并将其转换为字节数组。生成验证密钥的代码直接从开源项目machinekeyfinder-aspx复制。验证密钥使用SHA-256哈希确保长度为32字节,结果字节数组用于AES加密和解密(保护攻击者和Exchange服务器之间传输的数据)。

恶意软件的主要功能是接收攻击者请求并解析如下:

  • 从攻击者请求数据获取x-owa-urlpostdata的值,然后解码为Base64。
  • 使用上述生成的AES密钥对解码数据执行AES解密。解码数据的前16字节用作初始化向量(IV)。
  • 解压缩解密数据并根据命令ID(第一个字节)分发操作。

执行命令时,Stub检查当前用户是否为系统账户。如果不是,尝试通过使用应用程序域数据存储中的令牌模拟用户,允许应用程序以不同身份执行操作。

C2命令和功能

命令ID 描述
0 获取架构类型(如x86或x64)
1 将接收数据作为shellcode运行
2 执行命令行
3 在子线程中加载.NET字节码
4 发送GET请求
5 下载并保存文件
6 将提供的原始数据保存到文件
7 删除文件
8 读取文件内容
9 执行.NET程序并输出
10 调用虚拟页面注入器(创建App_Web_843e75cf5b63类实例)
11 迭代并删除定义文件夹及其子目录中包含App_Global的文件
14 并发执行HTTP POST请求到多个URL

每次命令执行时,生成XML格式响应,包含执行结果或返回值。XML中的value元素以硬编码字符串/wEPDwUKLTcyODc4开头,相同字符串在另一个开源项目ExchangeCmdPy.py中用于利用Exchange漏洞CVE-2020-0688。

通过进一步比较GhostContainer和ExchangeCmdPy.py开源项目的代码,观察到入口函数结构和关键字字符串高度相似。推测Stub类代码基于开源项目开发。怀疑Exchange攻击中利用的漏洞可能与CVE-2020-0688相关。

App_Web_843e75cf5b63: 虚拟页面注入器

此类基于另一个开源项目PageLoad_ghostfile.aspx,设计使用VirtualProvider等类创建幽灵页面。它包含几个继承自多个系统类的类,负责创建虚拟ASPX页面并重写某些方法。它将使用两个提供的参数(fakePageName和fakePath)创建虚拟页面。此方法的目的是运行.NET反射加载器(假页面–见附录II)并绕过文件检查。加载器作为Base64编码的.aspx源代码硬编码到程序中。

此假页面用于定位当前域中的web代理类App_Web_8c9b251fb5b3并执行其静态方法AppWebInit。一旦创建,攻击者开始向其发送请求,然后由App_Web_8c9b251fb5b3接收和解析。

App_Web_8c9b251fb5b3: web代理

App_Web_8c9b251fb5b3是GhostContainer样本中的核心组件,通常通过假页面(App_Web_843e75cf5b63)间接加载。此类包括web代理、socket转发和隐蔽通信功能,是结合web代理和隧道模块的典型示例。

创建此类实例时,静态值utcDate初始化为当前日期和时间。为识别当前类版本,假页面选择并调用具有最大utcDate值的版本。

此类中只有两个函数。AppWebInit()函数作为模块的实际入口点,通过假.aspx页面中的反射动态调用。在函数StrTr中,它在解码Base64编码字符串前实现自定义字符串转换机制。

再次将此算法链接到开源项目Neo-reGeorg。函数名StrTr及其代码完全相同。通过比较代码,清楚此类是Neo-reGeorg的高度定制版本。

模块的主要行为专注于解析攻击者发送到假网页的请求。接收请求时,首先检查标头。其进一步行为可能因识别到的标头而异:

  • Qprtfva标头:标识代理转发请求。
  • Dzvvlnwkccf标头:标识socket通信请求。
  • 其他情况,恶意软件响应字符串""。

如果标头是Qprtfva,恶意软件通过完成以下步骤建立web代理:

  • 解码Base64编码字符串获取目标URL。
  • 克隆原始请求内容(除Qprtfva外的标头和正文)。
  • 将请求转发到解码的目标地址。
  • 将目标响应内容作为本地响应返回。

如果标头是Dzvvlnwkccf,恶意软件在互联网和内部网络之间建立或管理长寿命TCP隧道连接。为同时识别和维护不同socket对象,它为每个socket对象定义名称,然后将该名称与socket对象配对保存在全局存储中。socket名称包含在标头Dzvvlnwkccf值的前22字节中。确切活动包含在请求的命令部分,从字节23开始。模块接受以下socket通信命令。

命令 描述
1iGBIM1C5PmawX_1McmR7StamYn23jpfQoENPlm19cH42kceYkm8ch4x2 从加密标头提取IP和端口,尝试连接,并保存socket。
vfhafFQZ4moDAvJjEjplaeySyMA 关闭socket并从全局存储中移除。
M4LubGO0xaktF_YgZpsiH3v1cJ4dloAPOZKdG8AK4UxM 将HTTP请求正文内容转换为socket数据并发送到内部主机。
NYIJVBf2PXRn7_BWxFyuheu1O0TuE9B0FtF0O 从内部网络接收数据,编码后作为HTTP响应正文返回给攻击者。

StrUtils: 字符串和XML格式处理类

StrUtils看起来像是用于拆分和修剪字符串以及拆分、提取和取消转义XML元素的实用类。然而,目前只有少数函数被其他三个类引用,即负责:

  • 将接收数据拆分为多个部分
  • 修剪文件路径的关闭字符

在任何类中未找到对XML取消转义函数的引用。

基础设施

GhostContainer backdoor不建立到任何C2基础设施的连接。相反,攻击者从外部连接到受感染服务器,其控制命令隐藏在正常Exchange web请求中。因此,尚未识别任何相关IP地址或域。

受害者

到目前为止,已识别此活动的两个目标:关键政府机构和高科技公司。两个组织均位于亚洲地区。

归因

此APT攻击中使用的样本与任何已知恶意软件没有结构相似性。它合并了多个开源项目的代码,这些项目公开可访问,可能被全球黑客或APT组利用。因此,基于代码相似性的归因不可靠。根据我们的遥测,攻击无法与其他攻击活动关联,因为攻击者未暴露任何基础设施。

结论

基于所有进行的分析,明显攻击者高度擅长利用Exchange系统并利用各种与渗透IIS和Exchange系统相关的开源项目。他们深入理解Exchange web服务如何操作,并在组装和扩展公开可用代码以创建和增强复杂间谍工具方面表现出非凡专业知识。我们认为这是一个成熟且高度专业的团队。我们继续跟踪其活动。

入侵指标(IoC)

01d98380dfb9211251c75c87ddb3c79c App_Web_Container_1.dll

恶意软件技术

  • 定向攻击
  • 恶意软件描述
  • 恶意软件
  • Backdoor
  • Microsoft Exchange
  • 开源
  • GhostContainer
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计