基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

admin 2025年5月24日16:36:59评论2 views字数 6724阅读22分24秒阅读模式
文章首发地址:https://xz.aliyun.com/news/17887文章首发作者:T0daySeeker

概述

前段时间,笔者关注到unit42安全团队发布了一篇《Off the Beaten Path: Recent Unusual Malware》报告,报告剖析了其工作中遇到的多个不寻常的恶意软件。在对其报告进行研读的过程中,一款被多个安全厂商归类为EquationDrug恶意软件的Bootkit程序引起了笔者的注意。

根据报告中的描述,unit42安全团队发现此样本是从「真实受害主机」上上传至VT平台的,由「美国密西西比大学」使用无效证书签名,颁发者为[email protected],并且其运行后,将在操作系统上「安装GRUB2引导加载程序」,因此,unit42安全团队将此样本定义为2024年最奇特的威胁样本之一。

为了进一步探究此Bootkit的功能,笔者使用了多种方法进行了对比分析,「发现此Bootkit可直接由NSA方程式组织的FUZZBUNCH工具进行远程加载调用。」

此外,笔者还注意到此Bootkit技术中多个值得深思的问题:

  • 此Bootkit的导出函数名与NSA方程式组织Windows平台下的多个恶意样本的导出函数名相同。「难道是为了兼容使用NSA方程式组织攻击平台?」
  • 此Bootkit程序并无特种木马功能行为,更像是一个测试样本,通过梳理,发现此Bootkit样本的上传地址、证书签名、内置图片资源、内置音频资源等浅层次特征(可自由替换)上均与美国相关,但在驻留内核驱动程序、加载内核驱动程序等深层次特征(不便替换)上,使用了中国傲梅分区助手中的驱动程序。「难道真的是因为中国的这款驱动程序最合适、好用?」
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

EquationDrug报毒原因

根据unit42安全团队的报告介绍,此Bootkit的报毒原因是由于使用了与NSA方程式组织恶意样本中相同的dll_u导出函数名称。

此Bootkit的导出函数截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

NSA方程式组织Windows平台下PC_Level3_dll恶意样本的导出函数截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

dll_u导出函数功能剖析

为了进一步剖析dll_u导出函数的作用及功能,笔者从两个角度对NSA方程式组织恶意样本的dll_u导出函数功能进行了剖析:

  • NSA方程式组织PC_Level3_dll恶意样本与PC_Level3_exe恶意样本入口点函数代码对比,观察其入口的函数代码是否相同?
  • 使用NSA方程式组织FUZZBUNCH工具远程注入PC_Level3_dll恶意样本,加载dll_u导出函数,观察PC_Level3_dll恶意样本是否可正常上线?

基于上述对比结果,笔者发现:「dll_u导出函数实际即为NSA方程式组织Windows平台下pc2.2_prep恶意样本的恶意代码入口函数。」

入口点函数代码对比

PC_Level3_dll恶意样本的dll_u导出函数截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

PC_Level3_exe恶意样本的main函数截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

FUZZBUNCH加载调用dll_u导出函数

为实现使用FUZZBUNCH工具加载调用PC_Level3_dll恶意样本的dll_u导出函数,笔者将基于如下流程进行操作:

  • 使用NSA方程式组织的DanderSpritz工具配置并生成PC_Level3_dll.configured后门程序;
  • 使用NSA方程式组织的FUZZBUNCH工具调用Doublepulsar插件远程注入PC_Level3_dll.configured木马程序,远程加载PC_Level3_dll.configured木马程序的dll_u导出函数;
  • 使用NSA方程式组织的DanderSpritz工具成功接收PC_Level3_dll.configured后门程序的上线请求;

DanderSpritz工具生成后门程序的操作截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

PC_Level3_dll.configured后门程序的导出函数截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

FUZZBUNCH工具调用Doublepulsar插件进行远程注入的操作截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

DanderSpritz工具「成功接收PC_Level3_dll.configured后门程序的上线请求」截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

使用FUZZBUNCH远程注入Bootkit

基于上述研究对比结果,我们可知NSA方程式组织Windows平台下的pc2.2_prep恶意样本的dll_u导出函数实际即为其恶意样本的入口函数。

基于此,笔者琢磨:「能否使用FUZZBUNCH工具远程注入此Bootkit,远程加载其dll_u导出函数,以实现此Bootkit的恶意功能呢?」

为实现上述目的,笔者借助NSA方程式组织FUZZBUNCH工具对BIOS启动的Vmware虚拟机及UEFI启动的Vmware虚拟机进行了对比测试:

  • BIOS启动:成功注入并触发此Bootkit安装GRUB2引导加载程序的功能,Vmware虚拟机重启后,成功加载GRUB2引导加载程序,设置电脑背景为美利坚联盟国的战旗和播放美国dixie民谣歌曲;
  • UEFI启动:成功注入并触发此Bootkit安装GRUB2引导加载程序的功能,Vmware虚拟机重启后,未能成功加载GRUB2引导加载程序;

BIOS启动

Vmware虚拟机固件类型截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

使用FUZZBUNCH工具加载EternalBlue漏洞的攻击截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

使用FUZZBUNCH工具加载Doublepulsar插件「远程注入此Bootkit」的操作截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

Bootkit注入成功后,成功触发此Bootkit的功能模块,实现Vmware虚拟机的重启行为:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

重启Vmware虚拟机后,成功加载GRUB2引导加载程序,设置电脑背景为美利坚联盟国的战旗和播放美国dixie民谣歌曲:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

UEFI启动

Vmware虚拟机固件类型截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

略过中间相同操作流程。

重启Vmware虚拟机后,未能成功加载GRUB2引导加载程序的截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

Bootkit功能剖析

通过分析,发现此样本存在多个导出函数,具体功能如下:

  • install导出函数:用于通过创建计划任务的方式安装此Bootkit恶意程序;
  • dll_u导出函数:此恶意程序的核心功能代码函数;
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

创建计划任务

通过分析,发现install导出函数的具体功能如下:

  • 复制自身文件至系统C:Windowssystem32w32analytics.dll路径;
  • 先删除w32analytics计划任务;
  • 再创建w32analytics计划任务,计划任务内容为:schtasks /create /tn w32analytics /sc ONCE /st 07:00 /ru SYSTEM /tr "rundll32 w32analytics.dll,dll_u",功能为使用rundll32加载执行w32analytics.dll的dll_u导出函数;

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

运行后创建的计划任务内容截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

AI逆向分析zlib函数

通过分析,发现dll_u导出函数执行后,将通过下述截图中的sub_7FFE49734416函数,对样本文件中内置的0x60C5E0字节长度的数据进行运算,运算后的结果输出至下述截图中的BUFFER全局变量中。

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

进一步分析,发现sub_2277B4416函数中调用了sub_7FFE49731837函数,相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

sub_7FFE49731837函数的调用逻辑其实还挺复杂的,相关函数调用逻辑图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

由于sub_7FFE49731837函数代码的可读性不强,若非经验丰富的分析人员,否则仅通过人工分析是很难准备提取出此函数的功能的。

因此,笔者在这里直接借助了AI大模型对此函数功能进行了剖析。

基于AI大模型剖析结果如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

内存释放磁盘映像文件

基于AI大模型逆向分析剖析,我们可知dll_u导出函数执行后,将调用zlib解压函数对样本文件中内置的0x60C5E0字节长度的压缩数据进行解压缩,解压缩后的数据将输出至BUFFER全局变量中。

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

解压缩后的二进制内容如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

进一步分析,发现此二进制文件其实是一个磁盘映像文件,磁盘映像文件大小约35MB,相关截图如下:(磁盘映像文件中的创建时间为:2024/07/09 06:29)

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

动态获取API

进一步分析,发现dll_u导出函数执行后,还将动态获取多个API函数,相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

验证操作系统版本

进一步分析,发现dll_u导出函数执行后,将调用函数验证当前操作系统版本,用以判断是否执行释放并加载ampa驱动程序的函数代码:

  • 若当前 Windows 操作系统版本为 Windows Vista或更高系统版本,则调用释放并加载ampa驱动程序的函数代码;
  • 若当前 Windows 操作系统版本为Windows XP或更早系统版本,则无需执行释放ampa驱动程序的函数代码;

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

释放并加载ampa驱动程序

进一步分析,发现dll_u导出函数执行后,将通过如下步骤加载ampa驱动程序:

  • 释放ampa.sys驱动程序:从样本资源段中释放ampa.sys驱动程序;
  • 调整进程权限:调整进程权限为SeLoadDriverPrivilege(加载驱动程序特权),用以允许进程加载或卸载设备驱动程序到Windows内核中;
  • 创建ampa服务:通过创建注册表的方式创建ampa服务;(「备注:在 Windows 系统中,加载驱动程序时通常需要创建服务」
  • 调用NtLoadDrive函数加载ampa驱动程序;

从资源段释放ampa.sys驱动程序

从样本资源段中释放ampa.sys驱动程序的相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

调整进程权限

调整进程权限的相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

创建ampa服务

创建ampa服务的相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

加载ampa驱动程序

加载ampa驱动程序的相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

写磁盘映像文件至每个磁盘

进一步分析,发现dll_u导出函数执行后,将根据操作系统版本的不同,调用不同的设备命名空间路径,将前述释放的磁盘映像文件写入至每个磁盘中:

  • 若当前 Windows 操作系统版本为 Windows Vista或更高系统版本,则调用“\.wowrtDRDISK%u”设备命名空间路径写磁盘映像文件;
  • 若当前 Windows 操作系统版本为Windows XP或更早系统版本,则调用“\.PhysicalDrive%u”设备命名空间路径写磁盘映像文件;

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

卸载并清理ampa驱动

成功在系统磁盘写入磁盘映像文件后,样本将清理ampa驱动程序:

  • 卸载ampa驱动程序;
  • 删除ampa服务;
  • 用零字节重写C:WindowsSystem32ampa.sys驱动程序文件;
  • 删除C:WindowsSystem32ampa.sys驱动文件;

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

重启系统

最后,此样本将调整进程权限为SeShutdownPrivilege特权,允许此Bootkit进程执行系统重启操作。

相关代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁
基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

加载执行磁盘映像文件

当系统重新启动后,系统将加载磁盘中新写入的磁盘映像文件(GRUB2引导加载程序),「成功开机后,将设置电脑背景为美利坚联盟国的战旗和播放美国dixie民谣歌曲。」

相关截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

ampa.sys驱动程序剖析

尝试提取Bootkit资源段中的ampa.sys驱动程序,对其进一步分析,发现此驱动程序文件其实是国内【傲梅分区助手】软件中的内核驱动程序。

相关VT截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

网络中关于ampa.sys驱动程序的描述:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

ampa.sys驱动程序的数字签名信息如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

尝试安装傲梅分区助手,对比ampa.sys驱动程序的Hash信息,发现Hash信息相同,相关截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

值得深思的问题

一款所有信息均与美国相关的Bootkit程序,为什么要内置使用中国的驱动程序?

磁盘映像文件剖析

尝试提取Bootkit内存中释放的磁盘映像文件,对其进一步分析,发现此磁盘映像文件实际是一个GRUB2引导加载程序,由如下几部分组成:

  • 主引导记录(MBR)
  • 引导分区
  • /grub2/grub.cfg配置文件

MBR剖析

结合维基百科关于主引导记录的介绍,梳理发现主引导记录MBR由三部分组成:

  • 启动代码:偏移位置为0x00--0x1BE
  • 硬盘分区表:偏移位置为0x1BE--0x1FD
  • 结束标志:偏移位置为0x1FE--0x1FF,值为55 AA

相关截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

IDA反编译后的启动代码截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

维基百科介绍如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

引导分区剖析

通过对引导分区进行剖析,发现引导分区中存在多个目录及文件:

  • grub2目录
    • locale目录
    • i386-pc目录
    • fonts目录
    • grubenv文件
    • grub.cfg配置文件
  • EFI目录
    • GRUBX64.EFI
    • BOOTX64.EFI
    • grub.cfg配置文件:文件内容为:configfile /grub2/grub.cfg
    • debian目录
    • BOOT目录
  • image.png文件
  • dixie.play文件

相关截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

/grub2/grub.cfg配置文件

结合grub官方文档对/grub2/grub.cfg文件进行剖析,发现/grub2/grub.cfg文件实际即为GRUB引导加载程序的配置文件,用于控制操作系统的启动过程。

进一步对/grub2/grub.cfg文件内容进行剖析,梳理关键代码功能如下:

  • load_video函数:用于加载GRUB的视频驱动模块,以支持启动过程中的图形输出
  • set linux_gfx_mode=:不强制指定图形模式
  • load_video:加载视频驱动模块
  • insmod gfxterm:加载GRUB的图形终端模块(gfxterm)
  • insmod png:允许GRUB显示PNG格式的图像
  • terminal_output gfxterm:将GRUB的终端输出设置为图形终端(gfxterm),而不是默认的文本终端
  • background_image /image.png:将image.png文件设置为GRUB菜单的背景图片
  • sleep 60:暂停60秒
  • play /dixie.play:播放音频文件

/grub2/grub.cfg配置文件内容如下:

function load_video {if [ x$feature_all_video_module = xy ]; then    insmod all_videoelse    insmod efi_gop    insmod efi_uga    insmod ieee1275_fb    insmod vbe    insmod vga    insmod video_bochs    insmod video_cirrusfi}set linux_gfx_mode=export linux_gfx_modeload_videoinsmod gfxterminsmod pngterminal_output gfxtermbackground_image /image.pngechosleep 60play /dixie.playconfigfile /grub2/grub.cfg

grub官方文档介绍如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

模拟Bookit原理制作GRUB2引导U盘

基于此,我们已基本了解此Bootkit的原理及功能:「借助ampa.sys驱动程序,将内置的GRUB2引导加载程序写入系统磁盘,用以实现破坏操作系统引导的目的。」

为了能够更直观的理解此Bootkit破坏操作系统引导的过程,笔者尝试将此Bootkit样本内存中释放的GRUB2引导加载程序制作成类似于windows PE盘的方式,用以复现此Bootkit的攻击场景:

  • 使用winhex工具将此Bootkit样本内存中提取的磁盘映像文件克隆至U盘中;
  • 选择一台以BIOS引导启动的VMware虚拟机作为操作主机;
  • 参考《VMware虚拟机设置U盘启动与BIOS设置教程》(https://blog.csdn.net/awfiihmmmm/article/details/105543257)文章,将U盘作为物理磁盘添加至VMware虚拟机中;
  • 以U盘启动,触发加载U盘中的GRUB2引导加载程序,成功开机后,「VMware虚拟机将设置电脑背景为美利坚联盟国的战旗和播放美国dixie民谣歌曲」

winhex工具克隆U盘的操作截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

成功克隆后,U盘磁盘空间如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

VMware虚拟机添加U盘作为虚拟机硬盘:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

进入虚拟机固件,选择U盘对应的硬盘启动VMware虚拟机:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

成功开机后,「VMware虚拟机将设置电脑背景为美利坚联盟国的战旗和播放美国dixie民谣歌曲,此行为与Bootkit加载运行后的场景相同」

相关截图如下:

基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

原文始发于微信公众号(T0daySeeker):基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月24日16:36:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于GRUB2的Bootkit:疑似与NSA方程式组织关联的新型恶意软件威胁https://cn-sec.com/archives/4019162.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息