对NOBELIUM APT组织武器工具集的分析
2021-12-28 14:50:0 Author: www.4hou.com(查看原文) 阅读量:16 收藏

攻击者 NOBELIUM最近加强了通过基于电子邮件的攻击,邮件钓鱼攻击自 2021 年初以来一直在进行。我们将继续监视这种主动攻击活动,并发布更多详细信息。在本文中,我们重点介绍了代表 NOBELIUM 使用的独特感染链的四个工具:EnvyScout、BoomBox、NativeZone 和 VaporRage。据观察,这些工具早在 2021 年 2 月就在野外使用,试图攻击各种敏感的外交和政府目标。

本文中讨论的每个 NOBELIUM 工具都是为灵活性而设计的,使使用者能够随着时间的推移适应场景。NOBELIUM 的安全能力可能影响了该工具集的设计,该工具集为在潜在高风险和高对抗环境中的使用者提供了更好的隐藏功能。这些安全功能是:

  • 使用可信通道:BoomBox是一款独特开发的下载程序,用于从攻击者控制的Dropbox帐户获取后期有效负载。所有初始通信都通过HTTPS利用Dropbox API。

  • 环境分析:与 NOBELIUM、BoomBox、VaporRage 和一些 NativeZone 变体使用的其他工具一致,样本会对受影响的系统环境进行一定程度的分析。

  • 混淆:VaporRage 是一个独特的 shellcode 加载器,被视为第三阶段的有效载荷。VaporRage 可以完全在内存中下载、解码和执行任意负载。这种设计和部署模式,其中还包括在受感染网站上暂存有效载荷,阻碍了传统的工件和取证调查,允许独特的有效载荷不被发现。

尽管自 2020 年底 SolarWinds 攻击事件曝光以来,社区知名度不断提高,但 NOBELIUM 仍继续以全球政府和外交实体为目标。我们预计,随着这些业务的进展,NOBELIUM 将继续完善其工具和策略,以面向全球目标。

0x01 EnvyScout:NV.html(恶意 HTML 文件)

NV.html被 Microsoft 跟踪为 EnvyScout,最好将其描述为一个能够对恶意 ISO 文件进行反混淆并将其写入磁盘的恶意投放器。EnvyScout 主要通过鱼叉式网络钓鱼电子邮件的附件发送给 NOBELIUM 的目标。

NV.html的 HTML

组件 #1:跟踪和凭据收集 URL

img

在 EnvyScout 的一种变体中,

第一个以file://协议处理程序为前缀,表示试图诱使操作系统通过端口 445 将敏感的 NTLMv2 信息发送到指定的攻击者控制的 IP 地址。 攻击者很可能正在运行凭据在这些事务的另一端捕获服务,例如 Responder。

第二个 URL 在分析时解析为与前者相同的 IP 地址,远程获取作为 HTML 诱饵一部分的图像。这种技术有时被称为“网络错误”,作为对 NOBELIUM 的各种读取返回,验证预期目标是否已打开恶意附件。

组件 #2:FileSaver JavaScript 帮助程序代码

img

EnvyScout 的第二部分是开源工具FileSaver的修改版本,旨在帮助通过 JavaScript 将文件写入磁盘。该代码直接从公开可用的变体中借用,并进行了细微改动,包括去除空格、将十六进制参数转换为十进制以及重命名变量。通过将此代码与下面详述的组件 #3 和 #4 相结合,NOBELIUM 有效地实现了HTML 走私方法。这种方法可以通过在执行时在动态更改的内容中隐藏已知恶意文件类型来规避对已知恶意文件类型的静态分析。

https://github.com/eligrey/FileSaver.js
https://outflank.nl/blog/2018/08/14/html-smuggling-explained/

组件 #3:混淆的 ISO 文件

img

EnvyScout 的第三部分包含存储为编码 blob 的有效负载。此有效负载通过使用单字节密钥对每个字符进行异或来解码,然后生成 Base64 有效负载,然后通过组件 #2 和 #4 解码并写入磁盘。

组件 #4:去混淆器和释放器脚本

img

EnvyScout 的最后一个组件是一个简短的代码片段,负责解码 Base64 编码/XOR'd blob 中的 ISO,并将其作为NV.img保存到磁盘,并使用 mime 类型“application/octet-stream”。在感染的这个阶段,用户应该通过双击打开下载的 ISO NV.img。

EnvyScout 变体 #1:

img

在攻击者的网络钓鱼活动的某些迭代版本中,EnvyScout 包含被window.location.pathname调用的守护进程,并利用其值来确保返回的字符数组中的前两个条目是“C”和“:”。如果不满足这个条件,表明样本不是从C:驱动器执行,那么嵌入的 ISO 就不会写入磁盘。

img

EnvyScout 变体 #2:

img

在至少一个 EnvyScout 实例中,我们观察到了对正在执行的浏览器环境的进一步枚举,其中用户代理用于确定 Windows 机器是否收到了 ISO 负载。

1.NV.img(恶意 ISO 文件)

当目标用户通过双击打开NV.img时,Windows 10 上的默认行为是在下一个可用驱动器上安装 ISO 映像。Windows 资源管理器随后会在一个窗口中显示已安装 ISO 的内容,类似于用户打开文件夹或压缩档案时看到的内容。

img

如上所示,挂载的 ISO 包含一个可见文件,一个名为NV的快捷方式文件。但是,在 Windows 中调整文件和文件夹设置以显示隐藏文件和文件夹会暴露一个名为NV的隐藏文件夹和一个名为BOOM.exe的隐藏可执行文件:

img

用户很可能会与NV.lnk进行交互,但是手动执行隐藏文件BOOM.exe也会导致系统被感染。下面详细介绍了每个文件的各个内容。

2.NV.pdf(钓鱼文件)

挂载的 ISO 中隐藏的 NV 目录包含一个名为NV.pdf的诱饵 PDF 文件:

img

如本分析稍后所述,NV目录的内容通过BOOM.exe显示给用户。

3.NV.lnk(恶意快捷方式)

NV.lnk是隐藏文件BOOM.exe的快捷方式、启动器。如下所示,该快捷方式利用了一个二进制文件 (LOLBin) 来使用以下硬编码的快捷方式目标值来代理BOOM.exe的执行:C:\Windows\System32\rundll32.exe c:\ windows\system32\advpack.dll,注册OCX BOOM.exe。

img

还发现了此 LNK 文件的变体,其中包含以下快捷方式目标值:C:\Windows\System32\cmd.exe /c start BOOM.exe。

图标通常是文件夹,旨在诱使目标用户认为他们正在打开文件夹的快捷方式。

还观察到已知 LNK 文件的以下目标:

  • C:\Windows\System32\rundll32.exe IMGMountingService.dll MountImgHelper

  • C:\Windows\System32\rundll32.exe diassvcs.dll InitializeComponent

  • C:\Windows\System32\rundll32.exe MsDiskMountService.dll DiskDriveIni

  • C:\Windows\system32\rundll32.exe data/mstu.dll,MicrosoftUpdateService

0x02 BoomBox:BOOM.exe(恶意下载器)

BOOM.exe被微软追踪为“BoomBox”,可以说是一个恶意下载程序。下载器负责下载和执行感染的下一阶段组件。这些组件是从 Dropbox 下载的(使用硬编码的 Dropbox Bearer/Access 令牌)。

执行时,BoomBox 确保在其当前工作目录中存在名为NV 的目录。如果该目录存在,BoomBox 会在新的 Windows 资源管理器窗口中显示NV目录的内容(让用户打开 PDF 文件)。

img

接下来,BoomBox 确保系统上不存在以下文件:%AppData%\Microsoft\NativeCache\NativeCacheSvc.dll(此文件将在本分析的后面部分介绍)。BoomBox 会枚举受害者系统的各种受害者主机信息,例如受害者系统的主机名、域名、IP 地址和用户名,以编译以下字符串:

img

接下来,BoomBox 使用硬编码的加密密钥“123do3y4r378o5t34onf7t3o573tfo73”和初始化向量 (IV) 值“1233t04p7jn3n4rg”对上面的主机信息字符串进行加密。为了将数据伪装成 PDF 文件的内容,BoomBox 将 PDF 的magic标记添加到上面的 AES 加密主机信息字符串中:

img

BoomBox 继续将上述数据(伪装成 PDF 文件)上传到 Dropbox 中的一个专门针对每个受害者的系统文件夹。出于演示目的,下面包含用于将文件/数据上传到 Dropbox 的示例 HTTP(s) POST 请求。

img

为确保文件已成功上传到 Dropbox,BoomBox 使用一组正则表达式值来检查来自 Dropbox 的 HTTP 响应。如下所示,正则表达式用于检查从 Dropbox 收到的 HTTP 响应中是否存在is_downloadable、path_lower、content_hash和size字段。值得注意的是,即使上传操作不成功,BoomBox 也会忽略此检查的结果并继续进行。

img

接下来,BoomBox 从 Dropbox 下载加密文件。出于演示目的,下面显示了用于从 Dropbox 下载加密文件的示例 HTTP(s) POST 请求。

img

从 Dropbox 成功下载加密文件后,BoomBox 丢弃加密文件头部的前 10 个字节和尾部的 7 个字节,然后使用硬编码的加密密钥“123do3y4r378o5t34onf7t3o573tfo73”和 IV 值对文件的其余部分进行 AES 解密“1233t04p7jn3n4rg”。BoomBox 将解密后的文件写入文件系统%AppData%\Microsoft\NativeCache\NativeCacheSvc.dll。然后,它通过创建名为MicroNativeCacheSvc的 Run 注册表值来为NativeCacheSvc.dll建立持久性:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MicroNativeCacheSvc

Run 注册表值使用以下命令填充,该命令用于使用rundll32.exe并通过调用其名为“ _configNativeCache ”的导出函数来执行NativeCacheSvc.dll:

rundll32.exe %AppData%\Microsoft\NativeCache\NativeCacheSvc.dll _configNativeCache

接下来,BoomBox 从 Dropbox 路径/tmp/readme.pdf下载第二个加密文件,丢弃加密文件头部的前 10 个字节和结尾的 7 个字节,然后对文件的其余部分进行 AES 解密(使用与上述相同的 AES IV 和密钥)。它在%AppData%\SystemCertificates\CertPKIProvider.dll 中写入解密文件,然后使用与上面相同的rundll32.exe命令继续执行先前删除的文件NativeCacheSvc.dll。

如果系统已加入域,BoomBox 会执行 LDAP 查询以通过过滤器(&(objectClass=user)收集所有域用户的专有名称、SAM 帐户名称、电子邮件和显示名称等数据) (objectCategory=person))。

img

枚举数据经过 AES 加密(使用与之前相同的 IV 和密钥),封装在伪造的 PDF 文件中,并上传到 Dropbox 路径/new/

0x03 NativeZone:NativeCacheSvc.dll(恶意加载器)

NativeCacheSvc.dll,被称为“NativeZone”,最恰当的描述是一个恶意加载器,它负责利用rundll32.exe加载恶意下载组件CertPKIProvider.dll。

NativeCacheSvc.dll的恶意功能位于configNativeCache的 DLL 导出函数中。

img

如上所示,导出函数通过调用名为eglGetConfigs的导出函数执行rundll32.exe来加载*%AppData%\SystemCertificates\Lib\* CertPKIProvider.dll。

0x04 VaporRage:CertPKIProvider.dll(恶意下载器)

CertPKIProvider.dll,被称为“VaporRage”,被描述为一个 shellcode 下载器。此版本的 VaporRage 包含 11 个导出函数,包括eglGetConfigs,它包含 DLL 的恶意功能。

img

正如前面所提到的,NativeZone利用RUNDLL32.EXE执行eglGetConfigs的导出功能CertPKIProvider.dll。执行时,导出函数首先确保系统上存在 NativeZone DLL %AppData%\Microsoft\NativeCache\NativeCacheSvc.dll(否则会终止)。接下来,导出功能向合法但受到攻击的 WordPress 站点holescontracting[.]com发出 HTTP(s) GET 请求。GET 请求由动态生成和硬编码的值组成,例如:

img

GET 请求的目的是首先将系统注册为受到威胁,然后从 WordPress 站点下载 XOR 编码的 shellcode blob。成功下载后,导出函数 XOR 对 shellcode blob 进行解码(使用硬编码的多字节 XOR 密钥“346hrfyfsvvu235632542834”)。

img

然后通过跳转到可执行内存区域中 shellcode blob 的开头,继续在内存中执行解码的 shellcode。下载、解码、执行过程无限期地重复,大约每小时一次,直到从内存中卸载 DLL。VaporRage 可以执行其 C2 服务器提供的任何兼容 shellcode,包括 Cobalt Strike 阶段 shellcode。

定制 Cobalt Strike 加载器

NOBELIUM 使用了多个自定义 Cobalt Strike Beacon 加载器(可能使用自定义 Artifact Kit 模板生成)来启用其恶意活动。其中包括 TEARDROP、Raindrop 和其他自定义加载器。

img

新的加载器 DLL 包含诱饵导出名称和函数,以及从合法应用程序借用的代码和字符串。新的 NativeZone 加载器可以分为两种变体:

  • 变体 #1:这些加载器嵌入了编码/加密的 Cobalt Strike Beacon  shellcode

  • 变体#2:这些加载器从另一个附带文件(例如,RTF 文件)加载编码/加密的 Cobalt Strike Beacon  shellcode。

在接下来的部分中,我们将讨论我们在调查中观察到的一些新的 NativeZone Cobalt Strike Beacon 变体。

NativeZone 变体 #1

与之前的 NOBELIUM 自定义 Cobalt Strike 加载器(例如 TEARDROP 和 Raindrop)类似,这些 NativeZone 加载器负责解码/解密嵌入式 Cobalt Strike Beacon 阶段 shellcode 并在内存中执行它。一些 NativeZone 加载程序具有反分析反调试功能以阻止对样本的分析。

在这些版本的 NativeZone 中,攻击者使用了各种编码和加密方法来混淆嵌入的 shellcode。例如,在下面的示例中,NativeZone 变体使用简单的字节交换解码算法来解码嵌入的 shellcode:

img

img

另一个示例采用不同的解码方法来解码嵌入式 shellcode,如下所示:

img

另一个示例采用去混淆方法,利用 AES 加密算法解密嵌入的 shellcode,如下所示:

img

下面显示了另一个利用 AES 解密嵌入式 Cobalt Strike shellcode blob 的 NativeZone 示例:

img

另一个具有不同解码方法以及利用CreateThreadpoolWait()执行解码的 shellcode blob 的示例如下:

img

下面是一个反分析技术的例子,加载程序检查受害者系统是 Vmware 还是 VirtualBox VM:

img

img

NativeZone 变体 #2

与变体 #1 不同,NativeZone 变体 #2 样本不包含编码/加密的 Cobalt Strike Beacon  shellcode。相反,这些样本从样本随附的文件中读取 shellcode。例如,在 RTF 文件旁边观察到一个 NativeZone 变体 #2 样本。RTF 文件兼作诱饵文件和 shellcode 载体文件。RTF 文件包含正确的 RTF 文件结构和数据,后跟编码的 shellcode blob(从偏移量0x658开始):

img

当 NativeZone DLL 被加载/执行时,它首先向用户显示 RTF 文档。

如上所述,相同的 RTF 还包含编码的 Cobalt Strike shellcode。如下所示,NativeZone DLL 继续从 RTF 文件中提取 shellcode(从文件偏移 0x658 开始,如上所示),解码 shellcode 并在受害系统上执行:

img

0x05 IOCs

与此活动相关的 NOBELIUM IOC 在MSTIC GitHub 上以 CSV格式提供。

https://raw.githubusercontent.com/microsoft/mstic/master/Indicators/May21-NOBELIUM/May21NOBELIUMIoCs.csv

本文翻译自:https://www.microsoft.com/security/blog/2021/05/28/breaking-down-nobeliums-latest-early-stage-toolset/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/mNYr
如有侵权请联系:admin#unsafe.sh