ESET 的安全研究人员近日发现了一种劫持 UEFI 的恶意软件,并将其命名为 BlackLotus。该恶意软件是首个可以在Win11系统上绕过 Secure Boot 的 UEFI bootkit 恶意软件。这个bootkit利用UEFI安全启动的Nday漏洞绕过安全启动并在启动过程中加载恶意的内核模块。设备一旦感染该恶意软件,就会在 Win11 系统中禁用 Defender、Bitlocker 和 HVCI 等防病毒软件。

BlackLotus UEFI bootkit

近年来发现的UEFI漏洞数量以及在合理的时间窗口内修复或取消易受攻击的二进制文件的失败都没有引起攻击者的注意。因此,第一个公开的绕过基本平台安全功能的UEFI bootkit——UEFI Secure Boot——现在已经成为现实。在这篇文章中,研究人员首次公开分析了该UEFI bootkit,它能够在启用了UEFI Secure Boot的最新Windows 11系统上运行。bootkit的功能及其单独的功能使研究人员相信研究人员正在处理一个被称为BlackLotus的 bootkit,UEFI bootkit至少从2022年10月起就开始在黑客论坛上以5000美元的价格出售。

UEFI bootkit的破坏性很大,它完全控制系统启动过程,因此能够禁用各种系统安全机制,并在系统启动的早期阶段部署自己的内核模式或用户模式有效负载。这使得他们可以非常隐秘地行动,并拥有很高的权限。到目前为止,只有少数几个在野外被发现并被公开报道,例如,研究人员在2020年发现的多个恶意EFI样本,或功能齐全的UEFI bootkit,如研究人员去年发现的ESPecter bootkit,或卡巴斯基研究人员发现的FinSpy bootkit。

与固件植入(如LoJax)相比,UEFI bootkit可能在隐蔽性方面有所下降。研究人员的团队于2018年发现了第一个野外UEFI固件植入,因为bootkit位于易于访问的FAT32磁盘分区上。然而,作为启动加载程序运行可以提供与固件植入几乎相同的功能,但无需克服多级SPI闪存防御,如BWE、BLE和PRx保护位,或硬件提供的保护(如Intel Boot Guard)。当然,UEFI Secure Boot阻碍了UEFI bootkit,但有一些不可忽视的已知漏洞可以绕过这一基本的安全机制。最糟糕的是,截止发文时,其中一些漏洞仍然很容易在最新系统上被利用,包括BlackLotus所利用的漏洞。

研究人员的调查始于对2022年末监测中的BlackLotus用户模式组件(一个HTTP下载器)的一些点击。经过初步评估,样本中发现的代码模式使研究人员发现了六个BlackLotus安装程序(包括VirusTotal和研究人员自己的遥测)。这使研究人员能够探索整个执行链,并意识到研究人员在这里处理的不仅仅是常规的恶意软件。

以下是有关BlackLotus的要点,以及与之相关的一系列事件的时间表:

1.它能够在启用UEFI Secure Boot的最新、完全修复的Windows 11系统上运行;

2.它利用一个超过一年的漏洞(CVE-2022-21894)绕过UEFI Secure Boot并为bootkit设置持久性,这是该漏洞第一次被公开使用;

3.尽管微软在2022年1月的更新中修复了该漏洞,但由于受影响的、有效签名的二进制文件仍未添加到UEFI取消列表中,因此该漏洞仍有可能被利用。BlackLotus就是利用了这一点,将其合法但易受攻击的二进制文件副本带到系统中,以利用该漏洞;

4.它能够禁用操作系统安全机制,如BitLocker, HVCI和Windows Defender;

5.一旦安装完毕,bootkit的主要目标是部署一个内核驱动程序(其中一个功能是保护bootkit不被删除),以及一个负责与C&C通信并能够加载其他用户模式或内核模式负载的HTTP下载器;

6.至少从2022年10月6日起,BlackLotus就在地下论坛上进行销售;

7.有趣的是,如果受攻击的主机位于以下地区,研究人员分析的一些BlackLotus安装程序不会继续进行bootkit安装:

Romanian (Moldova), ro-MDRussian (Moldova), ru-MDRussian (Russia), ru-RUUkrainian (Ukraine) , uk-UABelarusian (Belarus), be-BYArmenian (Armenia), hy-AMKazakh (Kazakhstan), kk-KZ

与BlackLotus相关的各事件的时间轴如下图所示。

1.png

与BlackLotus UEFI bootkit相关的主要事件时间轴

如上所述,自2022年10月6日起,bootkit已在地下论坛上销售。目前,研究人员还无法从监测数据中确定用于向受害者部署bootkit的确切传播渠道。研究人员从公开来源和监测数据中获得的BlackLotus样本数量很少,这证明只有很少的攻击者开始使用它。但是,在BlackLotus依赖的易受攻击的启动程序被取消之前,研究人员担心,如果这个bootkit落入知名的犯罪组织手中,情况会迅速发生变化,这是基于bootkit的易于部署和犯罪组织利用其僵尸网络传播恶意软件的能力。

幕后组织是BlackLotus吗?

BlackLotus属于一款相当全能的固件级 rootkit 恶意软件。特点是能够躲过各种删除操作,以及绕过先进的 Windows 防护措施。此前这类高级攻击能力,仅被拥有深厚背景的机构所拥有,比如情报威胁组织。

1.BlackLotus在黑客论坛上的宣称它具有集成的安全启动绕过。将易受攻击的驱动程序添加到UEFI取消列表目前是不可能的,因为该漏洞影响了数百个至今仍在使用的启动加载程序。

安全研究人员分析:它利用CVE-2022-21894来破坏安全启动,并在支持UEFI Secure Boot的系统上实现持久性。在撰写本文时,它使用的易受攻击的驱动程序仍然没有在最新的dbx中被取消。

2.BlackLotus在黑客论坛上宣称, bootkit具有内置的Ring0/Kernel保护,可以防止被删除。

安全研究人员分析:它的内核驱动程序保护属于EFI系统分区(ESP)上的文件句柄,可以不被关闭。作为额外的保护层,这些句柄会被持续监控,如果这些句柄中的任何一个被关闭,就会触发蓝屏死机(BSOD)。

3.BlackLotus在黑客论坛上宣称,它具有反虚拟机(anti-VM)、反调试和代码混淆功能,可以阻止被分析。

安全研究人员分析:它包含各种反虚拟机(anti-VM)、反调试和混淆技术,使其更难被复制或分析。

4.BlackLotus在黑客论坛上宣称其目的是充当HTTP下载器。

安全研究人员分析:它的最后一个组件充当HTTP下载器,如HTTP下载器部分所述。

5.BlackLotus在黑客论坛上宣称,HTTP下载器在一个合法的进程中以SYSTEM帐户运行。

安全研究人员分析:它的HTTP下载器在winlogon.exe进程上下文中运行。

6.BlackLotus在黑客论坛上的宣称,它是一个磁盘大小只有80kB的小型bootkit。

安全研究人员分析:能够获得的样本确实在80 kB左右。

7. BlackLotus在黑客论坛宣称,它可以禁用Windows内置的安全保护,如HVCI, Bitlocker, Windows Defender,并绕过用户帐户控制(UAC)。

安全研究人员分析:它可以禁用HVCI, Windows Defender, BitLocker并绕过UAC。

基于这些分析,研究人员可以肯定他们在野外发现的 bootkit是BlackLotus UEFI bootkit。

攻击概述

BlackLotus攻击链的简单步骤如下图所示。它由三个主要部分组成:

它首先执行安装程序(下图中的步骤1),该安装程序负责将bootkit的文件部署到EFI系统分区,禁用HVCI和BitLocker,然后重新启动计算机。

第一次重新启动后,利用CVE-2022-21894并随后记录攻击目标设备所有者的密钥(MOK),以便在启用UEFI Secure Boot的系统上实现持久性。然后重新启动设备(下图的步骤2- 4)。

在所有后续启动中,执行自签名的UEFI bootkit,并部署其内核驱动程序和用户模式有效负载(HTTP下载器)。这些组件能够一起从C&C服务器下载并执行额外的用户模式和驱动程序组件,并保护 bootkit不被删除(下图中的步骤5-9)。

2.png

BlackLotus的简单步骤

工件分析

尽管研究人员认为这是BlackLotus UEFI bootkit,但在分析的示例中没有发现任何引用此名称的内容。相反,该代码充满了对《暮蝉悲鸣时》(Higurashi When They Cry)动漫的引用,,例如,在单个组件名称中,例如Higurashi_installer_uac_module.dll和Higurashi _kernel.sys,以及用于签名bootkit二进制文件的自签名证书中(如下图所示)。

3.png

BlackLotus bootkit使用的自签名证书

此外,代码解密但从不使用包含来自BlackLotus开发者的消息的各种字符串(如下图所示),注意,hasherezade是一位著名的研究人员和各种恶意软件分析工具的开发者,或者只是一些来自各种歌曲、游戏或系列的随机引用。

4.png

BlackLotus开发者在代码中留下的消息示例

安装过程

研究人员首先分析了BlackLotus安装程序,bootkit似乎以安装程序的形式传播,有两个版本——离线和在线。这两者之间的区别在于它们获取合法(但易受攻击)的Windows二进制文件的方式,这些二进制文件后来被用于绕过安全启动。

在脱机版本中,Windows二进制文件嵌入在安装程序中;

在在线版本中,Windows二进制文件直接从Microsoft符号存储中下载。到目前为止,我们已经看到以下Windows二进制文件被BlackLotus bootkit滥用:

https://msdl.microsoft.com/download/symbols/bootmgfw.efi/7144BCD31C0000/bootmgfw.efi;https://msdl.microsoft.com/download/symbols/bootmgr.efi/98B063A61BC000/bootmgr.efi;https://msdl.microsoft.com/download/symbols/hvloader.efi/559F396411D000/hvloader.efi;

安装程序的目标很明确,它负责禁用Windows安全功能,如BitLocker磁盘加密和HVCI,并将多个文件(包括恶意bootkit)部署到ESP。完成后,它会重新启动受攻击的设备,让被释放的文件完成其工作,以确保每次系统启动时都会自动执行自签名的UEFIbootkit,无论UEFI Secure Boot保护状态如何。

初始化步骤

执行安装程序时,它会检查它是否有足够的权限(至少需要管理员)将其余文件部署到ESP,并执行其他需要提升进程的操作,如关闭HVCI或禁用BitLocker。如果不是这样的话,它会尝试通过使用此处详细描述的UAC绕过方法再次执行安装程序来提升,通过程序兼容性助手进行UAC绕过。

获得必要的权限后,它将继续,通过使用可用的Windows API函数读取SecureBoot UEFI变量的值来检查UEFI Secure Boot状态,并通过直接访问内存中的KUSER_SHARED_DATA结构字段NtMajorVersion和NtMinorVersion来确定Windows版本。它这样做是为了决定是否需要绕过UEFI Secure Boot来在受害者的系统上部署bootkit(因为安全启动支持最初是在Windows 8中添加的,并且可能不会在任何给定的设备上启用)。

在继续下一步之前,它将位于ESP:\EFI\Microsoft\Boot\目录中的合法Windows启动管理器(bootmgfw.efi)二进制文件重命名为winload.efi。此重命名的bootmgfw.exfi备份稍后将被bootkit用于启动操作系统,或者在从C&C服务器收到“卸载”命令时恢复原始启动链,详见C&C通信部分。

步骤1——部署文件

如果启用了UEFI Secure Boot,安装程序会将多个文件放入ESP:/EFI/Microsoft/Boot/和ESP:/system32/目录中。前者是Windows使用的标准目录,后者是安装程序创建的自定义文件夹。

表1提供了安装程序释放的文件列表,并简要说明了每个文件在执行链中的角色。稍后研究人员将详细解释执行链是如何工作的,现在只需注意,几个合法的Microsoft签名文件与恶意文件一起被释放。

表1:BlackLotus安装程序在启用UEFI Secure Boot的系统上部署的文件

5.png

如果受害者正在运行不支持UEFI Secure Boot的Windows版本,或者在UEFI Secure Boot被禁用的情况下,部署非常简单。部署恶意 bootkit唯一需要做的事情是将ESP:\EFI\Microsoft\Boot\目录中现有的Windows启动管理器(bootmgfw.efi)二进制文件替换为攻击者自己的自签名恶意UEFI应用程序。由于UEFI Secure Boot是禁用的(因此在启动期间不执行完整性验证),因此不需要利用,UEFI固件只是执行恶意启动管理器而不会导致任何安全违规。

步骤2——禁用受虚拟机监控程序保护的代码完整性(HVCI)

为了以后能够运行自定义的未签名内核代码,安装程序必须确保在系统上禁用了HVCI。已经有一位ESET研究人员在2022年就这个主题写了一篇内容文章(签名内核驱动程序——Windows内核的无防护网关):

基于虚拟化的安全(VBS)提供了几个保护功能,其中最突出的是hypervisor保护的代码完整性(HVCI),这也是一个独立的功能。HVCI在内核中强制执行代码完整性,并且只允许执行有签名的代码。它有效地防止了易受攻击的驱动程序被滥用来执行未签名的内核代码或加载恶意驱动程序(无论使用何种攻击方法),似乎恶意软件滥用易受攻击的驱动程序来加载恶意代码是微软实现这一功能的主要动机之一。

如下图所示,要禁用此功能,安装程序将HypervisorEnforcedCodeIntegrity注册表项下的Enabled注册表值设置为零。

6.png

负责禁用HVCI的BlackLotus安装程序函数的Hex-Rays反编译代码

步骤3——禁用BitLocker

安装程序禁用的下一个功能是BitLocker驱动器加密。这样做的原因是,BitLocker可以与受信任的平台模块(TPM)结合使用,以确保自系统上配置BitLocker驱动器加密以来,各种启动文件和配置(包括安全启动)未被篡改。考虑到安装程序修改了受攻击设备上的Windows启动链,在支持TPM的系统上保持BitLocker将导致下次启动时出现BitLocker恢复屏幕,并提示受害者系统已被攻击。

要禁用此保护,BlackLotus安装程序进行以下操作:

遍历Root\CIMV2\Security\MicrosoftVolumeEncryption WMI命名空间下的所有卷,并通过调用Win32_EncryptableVolume WMI类的GetProtectionStatus方法检查其保护状态;

对于受BitLocker保护的对象,它调用DisableKeyProtectors方法,DisableCount参数设置为零,这意味着保护将被挂起,直到手动启用;

在禁用了必要的保护并部署了所有文件后,安装程序将自己注册为在下次系统重新启动时删除,并重新启动计算机以继续利用CVE-2022-21894。


ESET 的安全研究人员近日发现了一种劫持 UEFI 的恶意软件,并将其命名为 BlackLotus。该恶意软件是首个可以在Win11系统上绕过 Secure Boot 的 UEFI bootkit 恶意软件。这个bootkit利用UEFI安全启动的Nday漏洞绕过安全启动并在启动过程中加载恶意的内核模块。设备一旦感染该恶意软件,就会在 Win11 系统中禁用 Defender、Bitlocker 和 HVCI 等防病毒软件。

BlackLotus UEFI bootkit

近年来发现的UEFI漏洞数量以及在合理的时间窗口内修复或取消易受攻击的二进制文件的失败都没有引起攻击者的注意。因此,第一个公开的绕过基本平台安全功能的UEFI bootkit——UEFI Secure Boot——现在已经成为现实。在这篇文章中,研究人员首次公开分析了该UEFI bootkit,它能够在启用了UEFI Secure Boot的最新Windows 11系统上运行。bootkit的功能及其单独的功能使研究人员相信研究人员正在处理一个被称为BlackLotus的 bootkit,UEFI bootkit至少从2022年10月起就开始在黑客论坛上以5000美元的价格出售。

UEFI bootkit的破坏性很大,它完全控制系统启动过程,因此能够禁用各种系统安全机制,并在系统启动的早期阶段部署自己的内核模式或用户模式有效负载。这使得他们可以非常隐秘地行动,并拥有很高的权限。到目前为止,只有少数几个在野外被发现并被公开报道,例如,研究人员在2020年发现的多个恶意EFI样本,或功能齐全的UEFI bootkit,如研究人员去年发现的ESPecter bootkit,或卡巴斯基研究人员发现的FinSpy bootkit。

与固件植入(如LoJax)相比,UEFI bootkit可能在隐蔽性方面有所下降。研究人员的团队于2018年发现了第一个野外UEFI固件植入,因为bootkit位于易于访问的FAT32磁盘分区上。然而,作为启动加载程序运行可以提供与固件植入几乎相同的功能,但无需克服多级SPI闪存防御,如BWE、BLE和PRx保护位,或硬件提供的保护(如Intel Boot Guard)。当然,UEFI Secure Boot阻碍了UEFI bootkit,但有一些不可忽视的已知漏洞可以绕过这一基本的安全机制。最糟糕的是,截止发文时,其中一些漏洞仍然很容易在最新系统上被利用,包括BlackLotus所利用的漏洞。

研究人员的调查始于对2022年末监测中的BlackLotus用户模式组件(一个HTTP下载器)的一些点击。经过初步评估,样本中发现的代码模式使研究人员发现了六个BlackLotus安装程序(包括VirusTotal和研究人员自己的遥测)。这使研究人员能够探索整个执行链,并意识到研究人员在这里处理的不仅仅是常规的恶意软件。

以下是有关BlackLotus的要点,以及与之相关的一系列事件的时间表:

1.它能够在启用UEFI Secure Boot的最新、完全修复的Windows 11系统上运行;

2.它利用一个超过一年的漏洞(CVE-2022-21894)绕过UEFI Secure Boot并为bootkit设置持久性,这是该漏洞第一次被公开使用;

3.尽管微软在2022年1月的更新中修复了该漏洞,但由于受影响的、有效签名的二进制文件仍未添加到UEFI取消列表中,因此该漏洞仍有可能被利用。BlackLotus就是利用了这一点,将其合法但易受攻击的二进制文件副本带到系统中,以利用该漏洞;

4.它能够禁用操作系统安全机制,如BitLocker, HVCI和Windows Defender;

5.一旦安装完毕,bootkit的主要目标是部署一个内核驱动程序(其中一个功能是保护bootkit不被删除),以及一个负责与C&C通信并能够加载其他用户模式或内核模式负载的HTTP下载器;

6.至少从2022年10月6日起,BlackLotus就在地下论坛上进行销售;

7.有趣的是,如果受攻击的主机位于以下地区,研究人员分析的一些BlackLotus安装程序不会继续进行bootkit安装:

Romanian (Moldova), ro-MDRussian (Moldova), ru-MDRussian (Russia), ru-RUUkrainian (Ukraine) , uk-UABelarusian (Belarus), be-BYArmenian (Armenia), hy-AMKazakh (Kazakhstan), kk-KZ

与BlackLotus相关的各事件的时间轴如下图所示。

1.png

与BlackLotus UEFI bootkit相关的主要事件时间轴

如上所述,自2022年10月6日起,bootkit已在地下论坛上销售。目前,研究人员还无法从监测数据中确定用于向受害者部署bootkit的确切传播渠道。研究人员从公开来源和监测数据中获得的BlackLotus样本数量很少,这证明只有很少的攻击者开始使用它。但是,在BlackLotus依赖的易受攻击的启动程序被取消之前,研究人员担心,如果这个bootkit落入知名的犯罪组织手中,情况会迅速发生变化,这是基于bootkit的易于部署和犯罪组织利用其僵尸网络传播恶意软件的能力。

幕后组织是BlackLotus吗?

BlackLotus属于一款相当全能的固件级 rootkit 恶意软件。特点是能够躲过各种删除操作,以及绕过先进的 Windows 防护措施。此前这类高级攻击能力,仅被拥有深厚背景的机构所拥有,比如情报威胁组织。

1.BlackLotus在黑客论坛上的宣称它具有集成的安全启动绕过。将易受攻击的驱动程序添加到UEFI取消列表目前是不可能的,因为该漏洞影响了数百个至今仍在使用的启动加载程序。

安全研究人员分析:它利用CVE-2022-21894来破坏安全启动,并在支持UEFI Secure Boot的系统上实现持久性。在撰写本文时,它使用的易受攻击的驱动程序仍然没有在最新的dbx中被取消。

2.BlackLotus在黑客论坛上宣称, bootkit具有内置的Ring0/Kernel保护,可以防止被删除。

安全研究人员分析:它的内核驱动程序保护属于EFI系统分区(ESP)上的文件句柄,可以不被关闭。作为额外的保护层,这些句柄会被持续监控,如果这些句柄中的任何一个被关闭,就会触发蓝屏死机(BSOD)。

3.BlackLotus在黑客论坛上宣称,它具有反虚拟机(anti-VM)、反调试和代码混淆功能,可以阻止被分析。

安全研究人员分析:它包含各种反虚拟机(anti-VM)、反调试和混淆技术,使其更难被复制或分析。

4.BlackLotus在黑客论坛上宣称其目的是充当HTTP下载器。

安全研究人员分析:它的最后一个组件充当HTTP下载器,如HTTP下载器部分所述。

5.BlackLotus在黑客论坛上宣称,HTTP下载器在一个合法的进程中以SYSTEM帐户运行。

安全研究人员分析:它的HTTP下载器在winlogon.exe进程上下文中运行。

6.BlackLotus在黑客论坛上的宣称,它是一个磁盘大小只有80kB的小型bootkit。

安全研究人员分析:能够获得的样本确实在80 kB左右。

7. BlackLotus在黑客论坛宣称,它可以禁用Windows内置的安全保护,如HVCI, Bitlocker, Windows Defender,并绕过用户帐户控制(UAC)。

安全研究人员分析:它可以禁用HVCI, Windows Defender, BitLocker并绕过UAC。

基于这些分析,研究人员可以肯定他们在野外发现的 bootkit是BlackLotus UEFI bootkit。

攻击概述

BlackLotus攻击链的简单步骤如下图所示。它由三个主要部分组成:

它首先执行安装程序(下图中的步骤1),该安装程序负责将bootkit的文件部署到EFI系统分区,禁用HVCI和BitLocker,然后重新启动计算机。

第一次重新启动后,利用CVE-2022-21894并随后记录攻击目标设备所有者的密钥(MOK),以便在启用UEFI Secure Boot的系统上实现持久性。然后重新启动设备(下图的步骤2- 4)。

在所有后续启动中,执行自签名的UEFI bootkit,并部署其内核驱动程序和用户模式有效负载(HTTP下载器)。这些组件能够一起从C&C服务器下载并执行额外的用户模式和驱动程序组件,并保护 bootkit不被删除(下图中的步骤5-9)。

2.png

BlackLotus的简单步骤

工件分析

尽管研究人员认为这是BlackLotus UEFI bootkit,但在分析的示例中没有发现任何引用此名称的内容。相反,该代码充满了对《暮蝉悲鸣时》(Higurashi When They Cry)动漫的引用,,例如,在单个组件名称中,例如Higurashi_installer_uac_module.dll和Higurashi _kernel.sys,以及用于签名bootkit二进制文件的自签名证书中(如下图所示)。

3.png

BlackLotus bootkit使用的自签名证书

此外,代码解密但从不使用包含来自BlackLotus开发者的消息的各种字符串(如下图所示),注意,hasherezade是一位著名的研究人员和各种恶意软件分析工具的开发者,或者只是一些来自各种歌曲、游戏或系列的随机引用。

4.png

BlackLotus开发者在代码中留下的消息示例

安装过程

研究人员首先分析了BlackLotus安装程序,bootkit似乎以安装程序的形式传播,有两个版本——离线和在线。这两者之间的区别在于它们获取合法(但易受攻击)的Windows二进制文件的方式,这些二进制文件后来被用于绕过安全启动。

在脱机版本中,Windows二进制文件嵌入在安装程序中;

在在线版本中,Windows二进制文件直接从Microsoft符号存储中下载。到目前为止,我们已经看到以下Windows二进制文件被BlackLotus bootkit滥用:

https://msdl.microsoft.com/download/symbols/bootmgfw.efi/7144BCD31C0000/bootmgfw.efi;https://msdl.microsoft.com/download/symbols/bootmgr.efi/98B063A61BC000/bootmgr.efi;https://msdl.microsoft.com/download/symbols/hvloader.efi/559F396411D000/hvloader.efi;

安装程序的目标很明确,它负责禁用Windows安全功能,如BitLocker磁盘加密和HVCI,并将多个文件(包括恶意bootkit)部署到ESP。完成后,它会重新启动受攻击的设备,让被释放的文件完成其工作,以确保每次系统启动时都会自动执行自签名的UEFIbootkit,无论UEFI Secure Boot保护状态如何。

初始化步骤

执行安装程序时,它会检查它是否有足够的权限(至少需要管理员)将其余文件部署到ESP,并执行其他需要提升进程的操作,如关闭HVCI或禁用BitLocker。如果不是这样的话,它会尝试通过使用此处详细描述的UAC绕过方法再次执行安装程序来提升,通过程序兼容性助手进行UAC绕过。

获得必要的权限后,它将继续,通过使用可用的Windows API函数读取SecureBoot UEFI变量的值来检查UEFI Secure Boot状态,并通过直接访问内存中的KUSER_SHARED_DATA结构字段NtMajorVersion和NtMinorVersion来确定Windows版本。它这样做是为了决定是否需要绕过UEFI Secure Boot来在受害者的系统上部署bootkit(因为安全启动支持最初是在Windows 8中添加的,并且可能不会在任何给定的设备上启用)。

在继续下一步之前,它将位于ESP:\EFI\Microsoft\Boot\目录中的合法Windows启动管理器(bootmgfw.efi)二进制文件重命名为winload.efi。此重命名的bootmgfw.exfi备份稍后将被bootkit用于启动操作系统,或者在从C&C服务器收到“卸载”命令时恢复原始启动链,详见C&C通信部分。

步骤1——部署文件

如果启用了UEFI Secure Boot,安装程序会将多个文件放入ESP:/EFI/Microsoft/Boot/和ESP:/system32/目录中。前者是Windows使用的标准目录,后者是安装程序创建的自定义文件夹。

表1提供了安装程序释放的文件列表,并简要说明了每个文件在执行链中的角色。稍后研究人员将详细解释执行链是如何工作的,现在只需注意,几个合法的Microsoft签名文件与恶意文件一起被释放。

表1:BlackLotus安装程序在启用UEFI Secure Boot的系统上部署的文件

5.png

如果受害者正在运行不支持UEFI Secure Boot的Windows版本,或者在UEFI Secure Boot被禁用的情况下,部署非常简单。部署恶意 bootkit唯一需要做的事情是将ESP:\EFI\Microsoft\Boot\目录中现有的Windows启动管理器(bootmgfw.efi)二进制文件替换为攻击者自己的自签名恶意UEFI应用程序。由于UEFI Secure Boot是禁用的(因此在启动期间不执行完整性验证),因此不需要利用,UEFI固件只是执行恶意启动管理器而不会导致任何安全违规。

步骤2——禁用受虚拟机监控程序保护的代码完整性(HVCI)

为了以后能够运行自定义的未签名内核代码,安装程序必须确保在系统上禁用了HVCI。已经有一位ESET研究人员在2022年就这个主题写了一篇内容文章(签名内核驱动程序——Windows内核的无防护网关):

基于虚拟化的安全(VBS)提供了几个保护功能,其中最突出的是hypervisor保护的代码完整性(HVCI),这也是一个独立的功能。HVCI在内核中强制执行代码完整性,并且只允许执行有签名的代码。它有效地防止了易受攻击的驱动程序被滥用来执行未签名的内核代码或加载恶意驱动程序(无论使用何种攻击方法),似乎恶意软件滥用易受攻击的驱动程序来加载恶意代码是微软实现这一功能的主要动机之一。

如下图所示,要禁用此功能,安装程序将HypervisorEnforcedCodeIntegrity注册表项下的Enabled注册表值设置为零。

6.png

负责禁用HVCI的BlackLotus安装程序函数的Hex-Rays反编译代码

步骤3——禁用BitLocker

安装程序禁用的下一个功能是BitLocker驱动器加密。这样做的原因是,BitLocker可以与受信任的平台模块(TPM)结合使用,以确保自系统上配置BitLocker驱动器加密以来,各种启动文件和配置(包括安全启动)未被篡改。考虑到安装程序修改了受攻击设备上的Windows启动链,在支持TPM的系统上保持BitLocker将导致下次启动时出现BitLocker恢复屏幕,并提示受害者系统已被攻击。

要禁用此保护,BlackLotus安装程序进行以下操作:

遍历Root\CIMV2\Security\MicrosoftVolumeEncryption WMI命名空间下的所有卷,并通过调用Win32_EncryptableVolume WMI类的GetProtectionStatus方法检查其保护状态;

对于受BitLocker保护的对象,它调用DisableKeyProtectors方法,DisableCount参数设置为零,这意味着保护将被挂起,直到手动启用;

在禁用了必要的保护并部署了所有文件后,安装程序将自己注册为在下次系统重新启动时删除,并重新启动计算机以继续利用CVE-2022-21894。


为了窃取用户网络,攻击者会诱导用户安装proxyware程序,该程序会将设备的可用互联网带宽分配为代理服务器,这样攻击者可以将其用于各种任务,如测试、情报收集、内容分发或市场研究。

作为共享网络的回报,安装proxyware程序的用户可以从向客户收取的费用中获得抽成。例如,Peer2Profit服务显示,用户通过在数千台设备上安装该公司的程序,每月最高可以赚到6000美元。

趋势科技的研究人员最近分析了几个著名的“被动收入”应用程序,发现这些程序可能存在安全风险。所谓被动收入(Passive Income),就是不需要花费多少时间和精力,也不需要照看,就可以自动获得的收入。说白了就是不劳而获,躺着赚钱!

网上有很多教人们如何通过共享闲置的计算能力或未使用的网络带宽来获得“被动收入”。当用户在他们的计算机上安装这样的程序时,不管愿不愿意,系统就会成为分布式网络的代理。这个分布式网络的运营商可以通过向其付费客户销售代理服务来赚钱。

尽管托管“被动收入”程序的网站会强调合法其自身的合法性,但我们发现此类程序可能会给下载者带来安全风险。这是因为这些代理服务的一些付费客户可能将其用于不道德甚至非法的目的。

在本文中,我们研究了几个著名的“被动收入”应用程序,这些应用程序将会把它们的计算机变成住宅IP代理,这些代理被卖给客户,用作“住宅IP代理”。这些应用程序通常通过推荐程序进行推广,目前许多著名的YouTube和博客都在推广他们。

我们还调查了将“被动收入”应用程序与第三方库捆绑在一起的可疑开发商。这意味着并下载者不知道“被动收入”应用程序,而这些收入实际上都流向了开发者。这意味着,用户无法控制使用其家庭/移动IP地址执行的活动。

通过共享未使用的带宽就可以轻松在线赚钱?

在博客和YouTube网站上有很多帖子教人们如何通过简单的教程获得“被动收入”。这些教程的开发者通常通过推荐来赚钱,并同时推广几个“被动收入”应用程序。

使用“网络带宽共享”盈利方案的公司包括HoneyGain、TraffMonitizer、Peer2Profit、PacketStream和IPRoyal Pawns等。这些公司为用户提供了一种通过下载和运行他们的程序代理来被动地在线赚钱的方式。通常情况下,用户将分享他们的连接并获得积分,这些积分之后可以转换成实际的货币。

1.png

公司通过共享网络来宣传被动收入

寻求收入的人将下载该程序来分享他们的带宽并赚钱,但这些公司将带宽卖给需要住宅代理服务的客户。该公司网站列出了一些人们可能需要代理服务的原因:人口统计研究、绕开赌博和淘便宜货的地理限制,或者出于隐私原因,等等。

这些公司很容易找到,在谷歌上简单搜索“被动收入未使用带宽”,立即产生IPRoyal Pawns, Honeygain, PacketStream, Peer2Profit, EarnApp和Traffmonetizer等名称。一些人在论坛和讨论区甚至建议同时安装多个应用程序来赚更多的钱,或者运行多个虚拟机来增加潜在的利润。

2.png

Quora上关于如何增加被动收入的帖子

与普通用户相比,共享带宽在被动收入中所占的比例可能还不是最大的。根据一个博主分享的文章,推荐在博主收入中所占的比例甚至更大(在这个图表中超过50%)。

3.png

从被动收入、流量共享应用程序中获得的收入占比

尽管上图中的数字显而易见,但这位博主声称他每月大约赚20美元。但是用户并不能保证能够定期获得如此低水平的收益。而且,作为这种不确定收入的交换,用户被要求定期接受未知水平的风险。

劫持是怎么发生的?

这些“网络带宽共享”服务声称,用户的互联网连接将主要用于营销研究或其他类似活动。因此,共享互联网连接的人在网上赚钱的同时也成为了被营销的对象。

4.png

使用带宽共享声明

但情况真如此吗?为了检查和了解潜在用户加入此类程序可能面临的风险,我们记录并分析了来自几个不同网络带宽共享服务的大量出口节点(出口节点是安装了这些网络带宽共享服务的计算机)的网络流量。

从2022年1月至9月,我们记录了来自这些被动收入公司的出口节点的流量,并检查了通过出口节点输送的流量的性质。

首先,我们发现,来自其他应用程序合作伙伴的流量被输送到我们的出口节点,并且大部分流量是合法的。我们看到了正常的流量,例如浏览新闻网站、收听新闻流,甚至浏览在线购物网站。然而,我们也发现了一些可疑的联系。这些联系表明,一些用户在某些国家从事可疑或可能非法的活动。

可疑活动的摘要如下表所示。我们根据相似性来组织这些活动,并指出我们观察到这些活动的代理网络。

5.png

在大多数情况下,应用程序发布者可能不会对使用其代理服务的第三方的可疑或恶意活动承担法律责任。然而,那些安装了“网络带宽共享”应用程序的人无法控制甚至监控通过其出口节点的流量类型。因此,这些网络共享应用程序被归类为风险程序应用程序,我们称之为proxyware。

proxyware的可疑活动

上表概述了我们观察到的恶意和可疑活动,本节将进一步详细介绍这些活动。

我们观察到多个自动访问第三方SMS PVA提供商的实例。什么是SMS PVA服务?我们写了一篇关于SMS PVA服务以及它们经常被错误使用的博客。SMS PVA 服务是基于遍布各个国家的数千部被入侵的智能手机。有了这项服务,SMS PVA 用户可以精确地注册国家一级的账户,因此可以使用假装来自目标国家的虚假账户发起活动。简而言之,这些服务通常用于在线服务中的批量注册帐户。为什么人们经常将它们与代理结合使用?这些帐户通常绑定到特定的地理位置或地区,并且该位置或地区必须与注册过程中使用的电话号码相匹配。因此,SMS PVA服务的用户希望他们的出口IP地址与号码的位置相匹配,并且有时使用特定的服务(在服务仅在特定区域可访问的情况下)。

这些大量注册的账户(由住宅代理和SMS PVA服务提供帮助)通常被用于各种可疑的操作:针对个人用户的社会工程和欺诈,以及滥用各种在线业务的注册和促销活动,可能导致数千美元的经济损失。

潜在的点击欺诈是我们从这些网络中观察到的另一种类型的活动。做点击欺诈或静默广告网站,就是利用装有“被动收入”程序的电脑作为出口节点,在后台“点击”广告。广告商必须为无效点击付费(没有人真正看到广告),网络流量看起来几乎与普通用户在家点击广告相同。

SQL注入是一种常见的安全扫描,它试图利用用户输入验证漏洞来转储、删除或修改数据库内容。有许多工具可以自动执行此任务。然而,在许多国家,未经适当授权进行安全扫描和未经网站所有者书面许可进行SQL注入扫描都是犯罪活动,可能会被起诉。我们观察到许多试图从许多“被动收入”程序中探测SQL注入漏洞的尝试。这种流量是有风险的,分享他们的连接的用户可能会被卷入法律调查。

我们观察到的另一组具有类似风险的类似活动是工具扫描。这些扫描试图利用各种漏洞访问/etc/passwd文件,如果成功,则表明系统易受任意文件暴露的攻击,并允许攻击者获取服务器上的密码文件。黑客利用此类程序漏洞从易受攻击的网站检索任意文件。不用说,在没有服务器所有者的书面许可的情况下进行此类活动是非法的。

爬取政府网站可能根本不违法,通常存在一些合理使用条款,要求用户不要同时提出过多的查询,许多网站通过使用验证码服务来使用技术手段来防止大量爬行。我们观察到使用反验证码工具的自动化工具在试图访问政府网站时绕过这些限制。我们也见过从律师事务所和法院网站抓取法律文件的爬虫程序。

对个人身份信息(PII)的抓取在所有国家都可能是非法的,但这种行为值得怀疑,因为我们不知道这些信息后来会被滥用。在研究中,我们看到一个可疑的爬虫大量下载巴西公民的信息。这些信息包括姓名、出生日期、性别和CPF(相当于国家SSN)。显然,如果对此类活动进行调查,“被动收入”程序用户将是第一个接触点,因为登录这些网站的将是他们的IP地址。

注册了大量社交媒体账号的人可以将其用于多种用途,例如网络垃圾邮件、诈骗活动以及传播错误信息和宣传假新闻的木马。此类账户也经常被用来对商品和服务进行虚假评价。在收集的流量中,我们看到TikTok账户注册了非常规电子邮件地址。尽管这本身并不违法,但安装了“被动收入”程序的用户可能会被要求证明自己的身份,或者在正常浏览活动中通过更多的“验证你是人类”测试。这是因为有太多来自其家庭IP的注册帐户,他们可能被误认为与这些活动有关联。

如果你认为这些例子没有说服力,那么在2017年,一名俄罗斯公民被逮捕并被指控恐怖主义。此人正在运行Tor出口节点,有人利用它在反政府抗议期间发布支持暴力的信息。Proxyware类似于Tor出口节点,因为两者都将流量从一个用户引导到另一个用户。这个例子说明了如果你不知道使用你的计算机作为出口节点的人在做什么,你会给自己带来多大的麻烦。

其他未经用户同意运行的proxyware变体

在研究过程中,我们还发现了一组多余的应用程序,它们是作为自由程序工具分发的。然而,在我们看来,这些应用程序正在秘密地将用户的设备转变为代理节点。这些应用程序似乎在设备上安装了Proxyware功能,比如Globalhop SDK,但没有明确通知用户他们的设备将被用作被动出口节点。一些最终用户许可协议(EULA)文件可能会明确提到包含Globalhop SDK或应用程序的出口节点功能,而其他文件则没有。但是,在我们看来,仅在eula(很少有用户会阅读的文件)中包含通知并不能向用户提供公平的通知,即安装应用程序将导致未知第三方使用他们的设备作为出口节点。

6.png

剪贴板管理器的EULA告诉用户它包含具有“代理利用功能”的SDK,并且用户同意“共享部分互联网”。

无论哪种情况,此类程序仍然会给用户带来风险,“被动收入”只会支付给应用程序开发者。程序用户只能享受免费程序本身而没有“被动收入”。此类程序的例子包括:

Walliant——一款自动壁纸更换程序;

Decacopy剪贴板管理程序——一个用于存储用户最近复制粘贴的内容的程序;

EasyAsVPN——通常由欺骗用户安装的额外程序;

Taskbar System——一个改变任务栏颜色的应用程序;

Relevant Knowledge——广告程序;

RestMinder——一个提醒用户休息的闹钟程序;

Viewndow——固定选定应用程序窗口的程序;

Saferternet——基于DNS的网络过滤程序。

这些代理网络产生的网络流量类似于“被动收入”程序产生的流量,因为这两种类型的程序都是其提供商的出口节点。我们观察到以下恶意/有争议的活动。

7.png

总结

我们在本文中介绍了借着“网络带宽共享”的幌子实施“被动收入”程序如何使用其安装基地的住宅IP作为出口节点,以及恶意和可疑网络流量可能给用户带来的风险。

通过允许匿名人员将你的计算机用作出口节点,如果他们执行非法、滥用或与攻击相关的操作,你将承担最大的风险。这就是为什么我们不建议参加这样的计划。

“被动收入”提供商可能制定了某些自我约束的政策,但我们没有看到任何证据表明这些提供商对路由到出口节点的流量进行监管。如果他们这样做了,那么我们看到的非常明显的SQL注入流量应该已经被过滤掉了。如果这些提供商希望改进其策略,我们建议他们更加坦率地向程序用户表明,因为他们没权利控制其客户的行为。

有一些措施可以确保攻击和滥用受到限制,例如严格执行流量扫描、证书测试和其他技术,但执行这些策略是关键。我们就这些问题联系过的一些应用发行商回应称,他们通过应用合作伙伴的KYC (know-your-customer)实践来保护用户。这提供了一些保护,防止滥用作为出口节点的设备,然而,这些政策可以被伪造,或者客户可以找到规避它们的方法。

总而言之,这些应用程序的潜在用户,特别是在proxyware服务的当前实现下,需要意识到他们正在将自己暴露在未知的风险中,以换取不确定和可能不稳定的潜在“被动收入”。以下是一些防范上述风险的安全措施:

1.了解“被动收入”程序的风险,并考虑将其从笔记本电脑、台式机和移动设备中删除。

2.建议公司IT员工检查并删除公司计算机中的“被动收入”程序。

3.安装专业保护套件,因为这些产品已将本文中列出的应用程序列为Riskware。这些产品还阻止“被动收入”应用程序下载恶意应用程序。

为了窃取用户网络,攻击者会诱导用户安装proxyware程序,该程序会将设备的可用互联网带宽分配为代理服务器,这样攻击者可以将其用于各种任务,如测试、情报收集、内容分发或市场研究。

作为共享网络的回报,安装proxyware程序的用户可以从向客户收取的费用中获得抽成。例如,Peer2Profit服务显示,用户通过在数千台设备上安装该公司的程序,每月最高可以赚到6000美元。

趋势科技的研究人员最近分析了几个著名的“被动收入”应用程序,发现这些程序可能存在安全风险。所谓被动收入(Passive Income),就是不需要花费多少时间和精力,也不需要照看,就可以自动获得的收入。说白了就是不劳而获,躺着赚钱!

网上有很多教人们如何通过共享闲置的计算能力或未使用的网络带宽来获得“被动收入”。当用户在他们的计算机上安装这样的程序时,不管愿不愿意,系统就会成为分布式网络的代理。这个分布式网络的运营商可以通过向其付费客户销售代理服务来赚钱。

尽管托管“被动收入”程序的网站会强调合法其自身的合法性,但我们发现此类程序可能会给下载者带来安全风险。这是因为这些代理服务的一些付费客户可能将其用于不道德甚至非法的目的。

在本文中,我们研究了几个著名的“被动收入”应用程序,这些应用程序将会把它们的计算机变成住宅IP代理,这些代理被卖给客户,用作“住宅IP代理”。这些应用程序通常通过推荐程序进行推广,目前许多著名的YouTube和博客都在推广他们。

我们还调查了将“被动收入”应用程序与第三方库捆绑在一起的可疑开发商。这意味着并下载者不知道“被动收入”应用程序,而这些收入实际上都流向了开发者。这意味着,用户无法控制使用其家庭/移动IP地址执行的活动。

通过共享未使用的带宽就可以轻松在线赚钱?

在博客和YouTube网站上有很多帖子教人们如何通过简单的教程获得“被动收入”。这些教程的开发者通常通过推荐来赚钱,并同时推广几个“被动收入”应用程序。

使用“网络带宽共享”盈利方案的公司包括HoneyGain、TraffMonitizer、Peer2Profit、PacketStream和IPRoyal Pawns等。这些公司为用户提供了一种通过下载和运行他们的程序代理来被动地在线赚钱的方式。通常情况下,用户将分享他们的连接并获得积分,这些积分之后可以转换成实际的货币。

1.png

公司通过共享网络来宣传被动收入

寻求收入的人将下载该程序来分享他们的带宽并赚钱,但这些公司将带宽卖给需要住宅代理服务的客户。该公司网站列出了一些人们可能需要代理服务的原因:人口统计研究、绕开赌博和淘便宜货的地理限制,或者出于隐私原因,等等。

这些公司很容易找到,在谷歌上简单搜索“被动收入未使用带宽”,立即产生IPRoyal Pawns, Honeygain, PacketStream, Peer2Profit, EarnApp和Traffmonetizer等名称。一些人在论坛和讨论区甚至建议同时安装多个应用程序来赚更多的钱,或者运行多个虚拟机来增加潜在的利润。

2.png

Quora上关于如何增加被动收入的帖子

与普通用户相比,共享带宽在被动收入中所占的比例可能还不是最大的。根据一个博主分享的文章,推荐在博主收入中所占的比例甚至更大(在这个图表中超过50%)。

3.png

从被动收入、流量共享应用程序中获得的收入占比

尽管上图中的数字显而易见,但这位博主声称他每月大约赚20美元。但是用户并不能保证能够定期获得如此低水平的收益。而且,作为这种不确定收入的交换,用户被要求定期接受未知水平的风险。

劫持是怎么发生的?

这些“网络带宽共享”服务声称,用户的互联网连接将主要用于营销研究或其他类似活动。因此,共享互联网连接的人在网上赚钱的同时也成为了被营销的对象。

4.png

使用带宽共享声明

但情况真如此吗?为了检查和了解潜在用户加入此类程序可能面临的风险,我们记录并分析了来自几个不同网络带宽共享服务的大量出口节点(出口节点是安装了这些网络带宽共享服务的计算机)的网络流量。

从2022年1月至9月,我们记录了来自这些被动收入公司的出口节点的流量,并检查了通过出口节点输送的流量的性质。

首先,我们发现,来自其他应用程序合作伙伴的流量被输送到我们的出口节点,并且大部分流量是合法的。我们看到了正常的流量,例如浏览新闻网站、收听新闻流,甚至浏览在线购物网站。然而,我们也发现了一些可疑的联系。这些联系表明,一些用户在某些国家从事可疑或可能非法的活动。

可疑活动的摘要如下表所示。我们根据相似性来组织这些活动,并指出我们观察到这些活动的代理网络。

5.png

在大多数情况下,应用程序发布者可能不会对使用其代理服务的第三方的可疑或恶意活动承担法律责任。然而,那些安装了“网络带宽共享”应用程序的人无法控制甚至监控通过其出口节点的流量类型。因此,这些网络共享应用程序被归类为风险程序应用程序,我们称之为proxyware。

proxyware的可疑活动

上表概述了我们观察到的恶意和可疑活动,本节将进一步详细介绍这些活动。

我们观察到多个自动访问第三方SMS PVA提供商的实例。什么是SMS PVA服务?我们写了一篇关于SMS PVA服务以及它们经常被错误使用的博客。SMS PVA 服务是基于遍布各个国家的数千部被入侵的智能手机。有了这项服务,SMS PVA 用户可以精确地注册国家一级的账户,因此可以使用假装来自目标国家的虚假账户发起活动。简而言之,这些服务通常用于在线服务中的批量注册帐户。为什么人们经常将它们与代理结合使用?这些帐户通常绑定到特定的地理位置或地区,并且该位置或地区必须与注册过程中使用的电话号码相匹配。因此,SMS PVA服务的用户希望他们的出口IP地址与号码的位置相匹配,并且有时使用特定的服务(在服务仅在特定区域可访问的情况下)。

这些大量注册的账户(由住宅代理和SMS PVA服务提供帮助)通常被用于各种可疑的操作:针对个人用户的社会工程和欺诈,以及滥用各种在线业务的注册和促销活动,可能导致数千美元的经济损失。

潜在的点击欺诈是我们从这些网络中观察到的另一种类型的活动。做点击欺诈或静默广告网站,就是利用装有“被动收入”程序的电脑作为出口节点,在后台“点击”广告。广告商必须为无效点击付费(没有人真正看到广告),网络流量看起来几乎与普通用户在家点击广告相同。

SQL注入是一种常见的安全扫描,它试图利用用户输入验证漏洞来转储、删除或修改数据库内容。有许多工具可以自动执行此任务。然而,在许多国家,未经适当授权进行安全扫描和未经网站所有者书面许可进行SQL注入扫描都是犯罪活动,可能会被起诉。我们观察到许多试图从许多“被动收入”程序中探测SQL注入漏洞的尝试。这种流量是有风险的,分享他们的连接的用户可能会被卷入法律调查。

我们观察到的另一组具有类似风险的类似活动是工具扫描。这些扫描试图利用各种漏洞访问/etc/passwd文件,如果成功,则表明系统易受任意文件暴露的攻击,并允许攻击者获取服务器上的密码文件。黑客利用此类程序漏洞从易受攻击的网站检索任意文件。不用说,在没有服务器所有者的书面许可的情况下进行此类活动是非法的。

爬取政府网站可能根本不违法,通常存在一些合理使用条款,要求用户不要同时提出过多的查询,许多网站通过使用验证码服务来使用技术手段来防止大量爬行。我们观察到使用反验证码工具的自动化工具在试图访问政府网站时绕过这些限制。我们也见过从律师事务所和法院网站抓取法律文件的爬虫程序。

对个人身份信息(PII)的抓取在所有国家都可能是非法的,但这种行为值得怀疑,因为我们不知道这些信息后来会被滥用。在研究中,我们看到一个可疑的爬虫大量下载巴西公民的信息。这些信息包括姓名、出生日期、性别和CPF(相当于国家SSN)。显然,如果对此类活动进行调查,“被动收入”程序用户将是第一个接触点,因为登录这些网站的将是他们的IP地址。

注册了大量社交媒体账号的人可以将其用于多种用途,例如网络垃圾邮件、诈骗活动以及传播错误信息和宣传假新闻的木马。此类账户也经常被用来对商品和服务进行虚假评价。在收集的流量中,我们看到TikTok账户注册了非常规电子邮件地址。尽管这本身并不违法,但安装了“被动收入”程序的用户可能会被要求证明自己的身份,或者在正常浏览活动中通过更多的“验证你是人类”测试。这是因为有太多来自其家庭IP的注册帐户,他们可能被误认为与这些活动有关联。

如果你认为这些例子没有说服力,那么在2017年,一名俄罗斯公民被逮捕并被指控恐怖主义。此人正在运行Tor出口节点,有人利用它在反政府抗议期间发布支持暴力的信息。Proxyware类似于Tor出口节点,因为两者都将流量从一个用户引导到另一个用户。这个例子说明了如果你不知道使用你的计算机作为出口节点的人在做什么,你会给自己带来多大的麻烦。

其他未经用户同意运行的proxyware变体

在研究过程中,我们还发现了一组多余的应用程序,它们是作为自由程序工具分发的。然而,在我们看来,这些应用程序正在秘密地将用户的设备转变为代理节点。这些应用程序似乎在设备上安装了Proxyware功能,比如Globalhop SDK,但没有明确通知用户他们的设备将被用作被动出口节点。一些最终用户许可协议(EULA)文件可能会明确提到包含Globalhop SDK或应用程序的出口节点功能,而其他文件则没有。但是,在我们看来,仅在eula(很少有用户会阅读的文件)中包含通知并不能向用户提供公平的通知,即安装应用程序将导致未知第三方使用他们的设备作为出口节点。

6.png

剪贴板管理器的EULA告诉用户它包含具有“代理利用功能”的SDK,并且用户同意“共享部分互联网”。

无论哪种情况,此类程序仍然会给用户带来风险,“被动收入”只会支付给应用程序开发者。程序用户只能享受免费程序本身而没有“被动收入”。此类程序的例子包括:

Walliant——一款自动壁纸更换程序;

Decacopy剪贴板管理程序——一个用于存储用户最近复制粘贴的内容的程序;

EasyAsVPN——通常由欺骗用户安装的额外程序;

Taskbar System——一个改变任务栏颜色的应用程序;

Relevant Knowledge——广告程序;

RestMinder——一个提醒用户休息的闹钟程序;

Viewndow——固定选定应用程序窗口的程序;

Saferternet——基于DNS的网络过滤程序。

这些代理网络产生的网络流量类似于“被动收入”程序产生的流量,因为这两种类型的程序都是其提供商的出口节点。我们观察到以下恶意/有争议的活动。

7.png

总结

我们在本文中介绍了借着“网络带宽共享”的幌子实施“被动收入”程序如何使用其安装基地的住宅IP作为出口节点,以及恶意和可疑网络流量可能给用户带来的风险。

通过允许匿名人员将你的计算机用作出口节点,如果他们执行非法、滥用或与攻击相关的操作,你将承担最大的风险。这就是为什么我们不建议参加这样的计划。

“被动收入”提供商可能制定了某些自我约束的政策,但我们没有看到任何证据表明这些提供商对路由到出口节点的流量进行监管。如果他们这样做了,那么我们看到的非常明显的SQL注入流量应该已经被过滤掉了。如果这些提供商希望改进其策略,我们建议他们更加坦率地向程序用户表明,因为他们没权利控制其客户的行为。

有一些措施可以确保攻击和滥用受到限制,例如严格执行流量扫描、证书测试和其他技术,但执行这些策略是关键。我们就这些问题联系过的一些应用发行商回应称,他们通过应用合作伙伴的KYC (know-your-customer)实践来保护用户。这提供了一些保护,防止滥用作为出口节点的设备,然而,这些政策可以被伪造,或者客户可以找到规避它们的方法。

总而言之,这些应用程序的潜在用户,特别是在proxyware服务的当前实现下,需要意识到他们正在将自己暴露在未知的风险中,以换取不确定和可能不稳定的潜在“被动收入”。以下是一些防范上述风险的安全措施:

1.了解“被动收入”程序的风险,并考虑将其从笔记本电脑、台式机和移动设备中删除。

2.建议公司IT员工检查并删除公司计算机中的“被动收入”程序。

3.安装专业保护套件,因为这些产品已将本文中列出的应用程序列为Riskware。这些产品还阻止“被动收入”应用程序下载恶意应用程序。

趋势科技研究人员最近发现了一个新的后门,他们将其归因于之前报道过的被称为Earth Kitsune的攻击者。自2019年以来,“Earth Kitsune”一直在向主要对朝鲜感兴趣的个人传播自主开发的后门变体。在我们过去调查的许多示例中,攻击者通过使用了水坑攻击策略,攻击与朝鲜有关的网站,并将浏览器漏洞注入其中。在分析的最新活动中,Earth Kitsune使用了类似的策略,但没有使用浏览器漏洞,而是使用了社会工程。

在2022年底,研究人员发现一个亲朝组织的网站被入侵和修改,以传播恶意软件。当目标访问者试图在网站上观看视频时,攻击者注入的恶意脚本会显示一条消息提示,通知受害者视频编解码器错误,以诱使他们下载并安装木马编解码器安装程序。安装程序经过修复,加载了一个以前看不见的后门,我们称之为“WhiskerSpy”。此外,我们还发现攻击者采用了一种有趣的持久性技术,滥用了Google Chrome的本地消息主机。

1.png

WhiskerSpy感染链

在这篇文章中,我们将揭示Earth Kitsune所使用的WhiskerSpy后门的感染链和技术细节。

在2022年底,我们注意到一个亲朝网站在他们的视频页面中注入了恶意脚本。该脚本显示了一个带有虚假错误消息的弹出窗口,旨在诱使受害者安装伪装成高级视频编解码器AVC1的恶意包。

2.png

一个被攻破的亲朝网站的社会工程示例

这些网页被配置为只向目标IP地址列表中的访问者发送恶意脚本(没有这些IP地址的访问者不会收到恶意负载)。这种配置使得攻击难以被发现。幸运的是,我们设法在攻击者的服务器上找到了一个文本文件,其中包含与目标IP地址匹配的正则表达式。其中包括:

位于中国沈阳的IP地址子网;

一个位于日本名古屋的特定IP地址;

位于巴西的IP地址子网;

沈阳和名古屋的IP地址很可能是他们的真正目标。然而,我们发现巴西的目标IP地址大多属于一个商业VPN服务。我们认为,攻击者使用此VPN服务来测试其水坑攻击的部署。它还为我们提供了一个验证水坑攻击的机会,通过使用相同的VPN服务来成功接收恶意脚本。

3.png

原始页面(左侧)和带有注入脚本的页面(右侧)之间的网页内容比较

该网站加载带有以下重定向代码的恶意JavaScript(popup.js):

4.png

嵌入式JavaScript重定向到恶意安装程序下载

修复安装程序

安装程序文件是一个MSI安装程序,它封装了另一个NSIS安装程序。攻击者滥用了合法的安装程序(windows.10.codec.pack.v2.1.8.setup.exe - e82e1fb775a0181686ad0d345455451c87033cafde3bd84512b6e617ace3338e),并将其修复为包含恶意shellcode。该补丁包括增加的部分数量,从5个增加到6个(图5中的红色括号),并增加图像大小,为恶意shellcode创建额外的空间(图5中的绿色括号)。

5.png

原始(上)和修复(下)安装程序,在修复版本中某些参数的大小会增加

6.png

在修复的安装程序中新添加了.odata部分

修复后的安装程序的入口点被更改为立即跳转到shellcode。shellcode使用简单密钥(XOR 0x01)加密。

7.png

修复后的安装程序的入口点跳转到.odata部分的代码中

解密后,shellcode运行几个PowerShell命令来下载恶意软件的其他阶段。这些文件都是可执行文件,从一开始就有几百个字节,使用单字节密钥进行异或。

8.png

.odata部分中的Shellcode调用几个PowerShell命令来下载其他加载器

然后,它恢复原始入口点(总共15个字节),以确保原始安装程序按预期运行。

9.png

.odata部分中的Shellcode恢复安装程序的原始入口点

下载的二进制文件:加载器

通过OneDrive持久化的路径(Icon.jpg)

这包含路径\microsoft\onedrive\vcruntime140.dll,这是另一个下载文件(bg.jpg)以vcruntime140.dll的名称释放的位置。

持久性和加载器滥用OneDrive侧加载漏洞(Bg.jpg)

这是vcruntime140.dll (Microsoft C Runtime库)的修复版本。在本例中,函数memset被修复。从函数(retn)返回的值被一个跳转到覆盖(在新添加的.onda部分中)所取代,其中注入的代码从覆盖中读取字节,用一个单字节的密钥对它们进行异或处理,并将嵌入的有效负载注入到werfautl.exe进程中。覆盖层中的shellcode是主后门的加载器。

10.png

原始memset函数,注意地址0x18000C7D1处的指令返回(retn)


11.png

修复的memset函数,注意,地址0x18000C7D1的指令是跳转(jmp),以覆盖shellcode

该文件被放置在%LOCALAPPDATA%\microsoft\onedrive\目录中,这是onedrive应用程序的默认用户安装位置。此前有报道称,攻击者利用OneDrive侧加载漏洞,将虚假dll放置到该OneDrive目录中,以实现在受攻击计算机中的持久性。

持久性和加载程序使用恶意Google Chrome扩展(Favicon.jpg)

这是一个安装包,包含installer.exe(一个Google Chrome扩展安装程序)、NativeApp.exe(一个本地消息主机)和Chrome扩展文件(background.js、manifest.json和icon.png)。

NativeApp.exe是一个本地消息主机,使用标准输入(stdin)和标准输出(stdout)与Chrome扩展通信。注意扩展清单中的type = " stdio "。

12.png

扩展清单,请注意扩展ID (allowed_origins)路径导致被释放的可执行文件和type =标准输入/输出

13.png

在Google Chrome扩展选项卡中查看的恶意扩展

Background.js扩展脚本向onStartup消息添加一个监听器。该侦听器将“inject”命令发送到本机消息传递主机,有效地充当某种独特的持久性方法,因为恶意有效负载在每次Chrome浏览器启动时都会执行。

14.png

onStartup事件的处理程序(Chrome浏览器的启动)

NativeApp使用JSON格式的消息与Chrome扩展交换数据,并实现三个命令:execute、load和inject。

消息的格式如下: xx xx xx xx {“cmd”:””,”data”:””},其中 xx xx xx xx是以字节为单位的消息长度。“cmd”项必须包含一个已实现的命令值(execute、load和inject),而“data”项可能包含其他参数,如路径和要执行的程序。

以下是有效JSON消息的示例:

15.png

注意,每个消息的前面必须有一个4字节的小端序长度值。传递不可打印字符(0x00,如下图所示)可以通过使用PowerShell及其Get-Content cmdlet和-raw参数实现,然后通过管道“|”将该内容重定向到NativeApp。如果cmd.bin文件包含如下图所示的相同内容,NativeApp.exe将运行notepad.exe。

16.png

指示执行notepad.exe的消息,第一个DWORD 0x0000003f是以下JSON消息的长度

在当前实现中,inject命令没有参数。相反,它连接到硬编码的URL地址http://

主后门加载器(Help.jpg)

这是一个shellcode,加载另一个嵌入式可执行文件——我们命名为WhiskerSpy的主后门负载。

主有效载荷:WhiskerSpy

WhiskerSpy使用椭圆曲线密码(ECC)在客户端和服务器之间交换加密密钥。以下是已实现的后门命令:

交互式shell;

下载文件;

上传文件;

删除文件;

列表文件;

截图;

加载可执行文件并调用其导出;

向进程中注入shellcode;

设备ID被计算为位于系统管理生物系统(SMBIOS)的系统信息表中的16字节UUID的32位Fowler-Noll-Vo 哈希(FNV-1)。有关UUID值的更多详细信息,请参阅SMBIOS规范第33页。使用参数“RSMB”调用函数GetSystemFirmwareTable以检索原始SMBIOS表,然后对其进行解析以定位16字节UUID,该UUID已计算其FNV-1哈希。

对于与命令和控制(C&C)服务器的通信,后门生成一个随机的16字节AES密钥。它根据该密钥计算会话ID,作为32位Murmur3哈希。

如上所述,后门使用椭圆曲线密码(ECC)。我们可以从“.data”部分中存储的硬编码值确定椭圆曲线域参数。在下图中,你可以看到素数(p,黄色)、第一个系数a(红色)、第二个系数b(绿色)、生成器(基点,蓝色)和辅因子(h,橙色)。了解这些参数有助于我们确定“secp256r1”是所使用的曲线,因为我们可以看到列出的大多数常用椭圆曲线的所有重要常数,例如在tinyec项目中。

17.png

“secp256r1”曲线的硬编码参数

上图还显示了一个值(棕色),它表示硬编码服务器的公钥。

然后进行一系列计算(椭圆曲线Diffie–Hellman或ECDH密钥交换):

生成随机32字节客户端私钥(clientPrivKey);

通过将客户端私钥乘以曲线生成器来计算客户端公钥(clientPubKey = clientPrivKey * curve.g);

通过将客户端私钥乘以服务器公钥来计算sharedKey(sharedKey = clientPrivKey * serverPubKey);

这些计算的结果作为一个64字节二进制blob上传到C&C服务器,其中前32个字节是客户端公钥的x坐标,因为常用的共享函数f(P)是取点P的x坐标。后32个字节来自一个随机的16字节AES密钥。

C&C通信首先注册设备ID(函数号= 3;POST请求“l

18.png

注册新计算机

随后上传带有客户端公钥的x坐标和加密的AES密钥的64字节文件(函数号= 1;POST请求:l

19.png

注册一个新的会话密钥并上传

然后,WhiskerSpy定期向C&C服务器请求其应执行的任何任务(函数号= 2;POST请求“h

20.png

WhiskerSpy请求执行任务

接收的数据包(文件h

21.png

特殊类型的消息

WhiskerSpy实现标准函数。在分析代码时,我们注意到一些用于报告任务状态的状态代码,其中接收到的消息的第一个字(两个字节)是命令ID。注意,在命令包的情况下,所有命令的魔法值都相同,它位于命令ID之前,不显示在表2中。在活动数据包的情况下,magic值的第一个单词(2字节)用作命令ID,因此可以在表中找到0x70D值。

22.png

WhiskerSpy的后门命令

类似的后门

老版本的WhiskerSpy是32位可执行文件,只实现前面提到的函数的子集(1-5,8,0x70D是相同的,6 =退出进程;7 = 将文件释放到temp并执行),其余的函数都不存在。

通信不是通过HTTP协议,而是通过FTP协议。这意味着FTP名称和密码必须硬编码为二进制文件才能进行通信。此方法将当前的受害者数量泄漏为l<machineID><sessionID>和h<machineID<文件,这意味着,任何知道登录凭据的人都可以看到这些文件。FTP版本的后门还会检查调试器是否存在。如果存在,状态代码“HELO>”将发送到C&C服务器。

通过跟踪分析,研究人员将这次攻击归咎于Earth Kitsune。在与朝鲜相关的网站上注入恶意脚本,显示出与该组织以前的活动相似的攻击手法和受害特征。此外,在这次攻击中使用的WhiskerSpy的传播服务器和C&C服务器与我们之前对Earth Kitsune的研究有两个基础设施重叠。第一个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]]org和Earth Kitsune的域名rs[.]myftp[.]45[.]76[.]62[.]198。第二个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]org和updategoogle[.]servehttp[.]com,加上传播服务器microsoftware[.]sytes[.]net的域都解析为172[.]93[.]201[.]172。该IP地址也从Earth Kitsune的agfSpy后门使用的域selectorioi[.]ddns[.]net映射而来。

23.png

基础设施与Earth Kitsune重叠

总结

从技术角度来看,这种威胁非常有趣。它修复合法安装程序以隐藏其活动,使用鲜为人知的哈希算法来计算计算机ID和会话ID,并使用ECC来保护加密密钥。此外,所提出的持久性方法也是相当独特和罕见的。这表明Earth Kitsune不断在发展他们攻击能力。


趋势科技研究人员最近发现了一个新的后门,他们将其归因于之前报道过的被称为Earth Kitsune的攻击者。自2019年以来,“Earth Kitsune”一直在向主要对朝鲜感兴趣的个人传播自主开发的后门变体。在我们过去调查的许多示例中,攻击者通过使用了水坑攻击策略,攻击与朝鲜有关的网站,并将浏览器漏洞注入其中。在分析的最新活动中,Earth Kitsune使用了类似的策略,但没有使用浏览器漏洞,而是使用了社会工程。

在2022年底,研究人员发现一个亲朝组织的网站被入侵和修改,以传播恶意软件。当目标访问者试图在网站上观看视频时,攻击者注入的恶意脚本会显示一条消息提示,通知受害者视频编解码器错误,以诱使他们下载并安装木马编解码器安装程序。安装程序经过修复,加载了一个以前看不见的后门,我们称之为“WhiskerSpy”。此外,我们还发现攻击者采用了一种有趣的持久性技术,滥用了Google Chrome的本地消息主机。

1.png

WhiskerSpy感染链

在这篇文章中,我们将揭示Earth Kitsune所使用的WhiskerSpy后门的感染链和技术细节。

在2022年底,我们注意到一个亲朝网站在他们的视频页面中注入了恶意脚本。该脚本显示了一个带有虚假错误消息的弹出窗口,旨在诱使受害者安装伪装成高级视频编解码器AVC1的恶意包。

2.png

一个被攻破的亲朝网站的社会工程示例

这些网页被配置为只向目标IP地址列表中的访问者发送恶意脚本(没有这些IP地址的访问者不会收到恶意负载)。这种配置使得攻击难以被发现。幸运的是,我们设法在攻击者的服务器上找到了一个文本文件,其中包含与目标IP地址匹配的正则表达式。其中包括:

位于中国沈阳的IP地址子网;

一个位于日本名古屋的特定IP地址;

位于巴西的IP地址子网;

沈阳和名古屋的IP地址很可能是他们的真正目标。然而,我们发现巴西的目标IP地址大多属于一个商业VPN服务。我们认为,攻击者使用此VPN服务来测试其水坑攻击的部署。它还为我们提供了一个验证水坑攻击的机会,通过使用相同的VPN服务来成功接收恶意脚本。

3.png

原始页面(左侧)和带有注入脚本的页面(右侧)之间的网页内容比较

该网站加载带有以下重定向代码的恶意JavaScript(popup.js):

4.png

嵌入式JavaScript重定向到恶意安装程序下载

修复安装程序

安装程序文件是一个MSI安装程序,它封装了另一个NSIS安装程序。攻击者滥用了合法的安装程序(windows.10.codec.pack.v2.1.8.setup.exe - e82e1fb775a0181686ad0d345455451c87033cafde3bd84512b6e617ace3338e),并将其修复为包含恶意shellcode。该补丁包括增加的部分数量,从5个增加到6个(图5中的红色括号),并增加图像大小,为恶意shellcode创建额外的空间(图5中的绿色括号)。

5.png

原始(上)和修复(下)安装程序,在修复版本中某些参数的大小会增加

6.png

在修复的安装程序中新添加了.odata部分

修复后的安装程序的入口点被更改为立即跳转到shellcode。shellcode使用简单密钥(XOR 0x01)加密。

7.png

修复后的安装程序的入口点跳转到.odata部分的代码中

解密后,shellcode运行几个PowerShell命令来下载恶意软件的其他阶段。这些文件都是可执行文件,从一开始就有几百个字节,使用单字节密钥进行异或。

8.png

.odata部分中的Shellcode调用几个PowerShell命令来下载其他加载器

然后,它恢复原始入口点(总共15个字节),以确保原始安装程序按预期运行。

9.png

.odata部分中的Shellcode恢复安装程序的原始入口点

下载的二进制文件:加载器

通过OneDrive持久化的路径(Icon.jpg)

这包含路径\microsoft\onedrive\vcruntime140.dll,这是另一个下载文件(bg.jpg)以vcruntime140.dll的名称释放的位置。

持久性和加载器滥用OneDrive侧加载漏洞(Bg.jpg)

这是vcruntime140.dll (Microsoft C Runtime库)的修复版本。在本例中,函数memset被修复。从函数(retn)返回的值被一个跳转到覆盖(在新添加的.onda部分中)所取代,其中注入的代码从覆盖中读取字节,用一个单字节的密钥对它们进行异或处理,并将嵌入的有效负载注入到werfautl.exe进程中。覆盖层中的shellcode是主后门的加载器。

10.png

原始memset函数,注意地址0x18000C7D1处的指令返回(retn)


11.png

修复的memset函数,注意,地址0x18000C7D1的指令是跳转(jmp),以覆盖shellcode

该文件被放置在%LOCALAPPDATA%\microsoft\onedrive\目录中,这是onedrive应用程序的默认用户安装位置。此前有报道称,攻击者利用OneDrive侧加载漏洞,将虚假dll放置到该OneDrive目录中,以实现在受攻击计算机中的持久性。

持久性和加载程序使用恶意Google Chrome扩展(Favicon.jpg)

这是一个安装包,包含installer.exe(一个Google Chrome扩展安装程序)、NativeApp.exe(一个本地消息主机)和Chrome扩展文件(background.js、manifest.json和icon.png)。

NativeApp.exe是一个本地消息主机,使用标准输入(stdin)和标准输出(stdout)与Chrome扩展通信。注意扩展清单中的type = " stdio "。

12.png

扩展清单,请注意扩展ID (allowed_origins)路径导致被释放的可执行文件和type =标准输入/输出

13.png

在Google Chrome扩展选项卡中查看的恶意扩展

Background.js扩展脚本向onStartup消息添加一个监听器。该侦听器将“inject”命令发送到本机消息传递主机,有效地充当某种独特的持久性方法,因为恶意有效负载在每次Chrome浏览器启动时都会执行。

14.png

onStartup事件的处理程序(Chrome浏览器的启动)

NativeApp使用JSON格式的消息与Chrome扩展交换数据,并实现三个命令:execute、load和inject。

消息的格式如下: xx xx xx xx {“cmd”:””,”data”:””},其中 xx xx xx xx是以字节为单位的消息长度。“cmd”项必须包含一个已实现的命令值(execute、load和inject),而“data”项可能包含其他参数,如路径和要执行的程序。

以下是有效JSON消息的示例:

15.png

注意,每个消息的前面必须有一个4字节的小端序长度值。传递不可打印字符(0x00,如下图所示)可以通过使用PowerShell及其Get-Content cmdlet和-raw参数实现,然后通过管道“|”将该内容重定向到NativeApp。如果cmd.bin文件包含如下图所示的相同内容,NativeApp.exe将运行notepad.exe。

16.png

指示执行notepad.exe的消息,第一个DWORD 0x0000003f是以下JSON消息的长度

在当前实现中,inject命令没有参数。相反,它连接到硬编码的URL地址http://

主后门加载器(Help.jpg)

这是一个shellcode,加载另一个嵌入式可执行文件——我们命名为WhiskerSpy的主后门负载。

主有效载荷:WhiskerSpy

WhiskerSpy使用椭圆曲线密码(ECC)在客户端和服务器之间交换加密密钥。以下是已实现的后门命令:

交互式shell;

下载文件;

上传文件;

删除文件;

列表文件;

截图;

加载可执行文件并调用其导出;

向进程中注入shellcode;

设备ID被计算为位于系统管理生物系统(SMBIOS)的系统信息表中的16字节UUID的32位Fowler-Noll-Vo 哈希(FNV-1)。有关UUID值的更多详细信息,请参阅SMBIOS规范第33页。使用参数“RSMB”调用函数GetSystemFirmwareTable以检索原始SMBIOS表,然后对其进行解析以定位16字节UUID,该UUID已计算其FNV-1哈希。

对于与命令和控制(C&C)服务器的通信,后门生成一个随机的16字节AES密钥。它根据该密钥计算会话ID,作为32位Murmur3哈希。

如上所述,后门使用椭圆曲线密码(ECC)。我们可以从“.data”部分中存储的硬编码值确定椭圆曲线域参数。在下图中,你可以看到素数(p,黄色)、第一个系数a(红色)、第二个系数b(绿色)、生成器(基点,蓝色)和辅因子(h,橙色)。了解这些参数有助于我们确定“secp256r1”是所使用的曲线,因为我们可以看到列出的大多数常用椭圆曲线的所有重要常数,例如在tinyec项目中。

17.png

“secp256r1”曲线的硬编码参数

上图还显示了一个值(棕色),它表示硬编码服务器的公钥。

然后进行一系列计算(椭圆曲线Diffie–Hellman或ECDH密钥交换):

生成随机32字节客户端私钥(clientPrivKey);

通过将客户端私钥乘以曲线生成器来计算客户端公钥(clientPubKey = clientPrivKey * curve.g);

通过将客户端私钥乘以服务器公钥来计算sharedKey(sharedKey = clientPrivKey * serverPubKey);

这些计算的结果作为一个64字节二进制blob上传到C&C服务器,其中前32个字节是客户端公钥的x坐标,因为常用的共享函数f(P)是取点P的x坐标。后32个字节来自一个随机的16字节AES密钥。

C&C通信首先注册设备ID(函数号= 3;POST请求“l

18.png

注册新计算机

随后上传带有客户端公钥的x坐标和加密的AES密钥的64字节文件(函数号= 1;POST请求:l

19.png

注册一个新的会话密钥并上传

然后,WhiskerSpy定期向C&C服务器请求其应执行的任何任务(函数号= 2;POST请求“h

20.png

WhiskerSpy请求执行任务

接收的数据包(文件h

21.png

特殊类型的消息

WhiskerSpy实现标准函数。在分析代码时,我们注意到一些用于报告任务状态的状态代码,其中接收到的消息的第一个字(两个字节)是命令ID。注意,在命令包的情况下,所有命令的魔法值都相同,它位于命令ID之前,不显示在表2中。在活动数据包的情况下,magic值的第一个单词(2字节)用作命令ID,因此可以在表中找到0x70D值。

22.png

WhiskerSpy的后门命令

类似的后门

老版本的WhiskerSpy是32位可执行文件,只实现前面提到的函数的子集(1-5,8,0x70D是相同的,6 =退出进程;7 = 将文件释放到temp并执行),其余的函数都不存在。

通信不是通过HTTP协议,而是通过FTP协议。这意味着FTP名称和密码必须硬编码为二进制文件才能进行通信。此方法将当前的受害者数量泄漏为l<machineID><sessionID>和h<machineID<文件,这意味着,任何知道登录凭据的人都可以看到这些文件。FTP版本的后门还会检查调试器是否存在。如果存在,状态代码“HELO>”将发送到C&C服务器。

通过跟踪分析,研究人员将这次攻击归咎于Earth Kitsune。在与朝鲜相关的网站上注入恶意脚本,显示出与该组织以前的活动相似的攻击手法和受害特征。此外,在这次攻击中使用的WhiskerSpy的传播服务器和C&C服务器与我们之前对Earth Kitsune的研究有两个基础设施重叠。第一个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]]org和Earth Kitsune的域名rs[.]myftp[.]45[.]76[.]62[.]198。第二个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]org和updategoogle[.]servehttp[.]com,加上传播服务器microsoftware[.]sytes[.]net的域都解析为172[.]93[.]201[.]172。该IP地址也从Earth Kitsune的agfSpy后门使用的域selectorioi[.]ddns[.]net映射而来。

23.png

基础设施与Earth Kitsune重叠

总结

从技术角度来看,这种威胁非常有趣。它修复合法安装程序以隐藏其活动,使用鲜为人知的哈希算法来计算计算机ID和会话ID,并使用ECC来保护加密密钥。此外,所提出的持久性方法也是相当独特和罕见的。这表明Earth Kitsune不断在发展他们攻击能力。


趋势科技研究人员最近发现了一个新的后门,他们将其归因于之前报道过的被称为Earth Kitsune的攻击者。自2019年以来,“Earth Kitsune”一直在向主要对朝鲜感兴趣的个人传播自主开发的后门变体。在我们过去调查的许多示例中,攻击者通过使用了水坑攻击策略,攻击与朝鲜有关的网站,并将浏览器漏洞注入其中。在分析的最新活动中,Earth Kitsune使用了类似的策略,但没有使用浏览器漏洞,而是使用了社会工程。

在2022年底,研究人员发现一个亲朝组织的网站被入侵和修改,以传播恶意软件。当目标访问者试图在网站上观看视频时,攻击者注入的恶意脚本会显示一条消息提示,通知受害者视频编解码器错误,以诱使他们下载并安装木马编解码器安装程序。安装程序经过修复,加载了一个以前看不见的后门,我们称之为“WhiskerSpy”。此外,我们还发现攻击者采用了一种有趣的持久性技术,滥用了Google Chrome的本地消息主机。

1.png

WhiskerSpy感染链

在这篇文章中,我们将揭示Earth Kitsune所使用的WhiskerSpy后门的感染链和技术细节。

在2022年底,我们注意到一个亲朝网站在他们的视频页面中注入了恶意脚本。该脚本显示了一个带有虚假错误消息的弹出窗口,旨在诱使受害者安装伪装成高级视频编解码器AVC1的恶意包。

2.png

一个被攻破的亲朝网站的社会工程示例

这些网页被配置为只向目标IP地址列表中的访问者发送恶意脚本(没有这些IP地址的访问者不会收到恶意负载)。这种配置使得攻击难以被发现。幸运的是,我们设法在攻击者的服务器上找到了一个文本文件,其中包含与目标IP地址匹配的正则表达式。其中包括:

位于中国沈阳的IP地址子网;

一个位于日本名古屋的特定IP地址;

位于巴西的IP地址子网;

沈阳和名古屋的IP地址很可能是他们的真正目标。然而,我们发现巴西的目标IP地址大多属于一个商业VPN服务。我们认为,攻击者使用此VPN服务来测试其水坑攻击的部署。它还为我们提供了一个验证水坑攻击的机会,通过使用相同的VPN服务来成功接收恶意脚本。

3.png

原始页面(左侧)和带有注入脚本的页面(右侧)之间的网页内容比较

该网站加载带有以下重定向代码的恶意JavaScript(popup.js):

4.png

嵌入式JavaScript重定向到恶意安装程序下载

修复安装程序

安装程序文件是一个MSI安装程序,它封装了另一个NSIS安装程序。攻击者滥用了合法的安装程序(windows.10.codec.pack.v2.1.8.setup.exe - e82e1fb775a0181686ad0d345455451c87033cafde3bd84512b6e617ace3338e),并将其修复为包含恶意shellcode。该补丁包括增加的部分数量,从5个增加到6个(图5中的红色括号),并增加图像大小,为恶意shellcode创建额外的空间(图5中的绿色括号)。

5.png

原始(上)和修复(下)安装程序,在修复版本中某些参数的大小会增加

6.png

在修复的安装程序中新添加了.odata部分

修复后的安装程序的入口点被更改为立即跳转到shellcode。shellcode使用简单密钥(XOR 0x01)加密。

7.png

修复后的安装程序的入口点跳转到.odata部分的代码中

解密后,shellcode运行几个PowerShell命令来下载恶意软件的其他阶段。这些文件都是可执行文件,从一开始就有几百个字节,使用单字节密钥进行异或。

8.png

.odata部分中的Shellcode调用几个PowerShell命令来下载其他加载器

然后,它恢复原始入口点(总共15个字节),以确保原始安装程序按预期运行。

9.png

.odata部分中的Shellcode恢复安装程序的原始入口点

下载的二进制文件:加载器

通过OneDrive持久化的路径(Icon.jpg)

这包含路径\microsoft\onedrive\vcruntime140.dll,这是另一个下载文件(bg.jpg)以vcruntime140.dll的名称释放的位置。

持久性和加载器滥用OneDrive侧加载漏洞(Bg.jpg)

这是vcruntime140.dll (Microsoft C Runtime库)的修复版本。在本例中,函数memset被修复。从函数(retn)返回的值被一个跳转到覆盖(在新添加的.onda部分中)所取代,其中注入的代码从覆盖中读取字节,用一个单字节的密钥对它们进行异或处理,并将嵌入的有效负载注入到werfautl.exe进程中。覆盖层中的shellcode是主后门的加载器。

10.png

原始memset函数,注意地址0x18000C7D1处的指令返回(retn)


11.png

修复的memset函数,注意,地址0x18000C7D1的指令是跳转(jmp),以覆盖shellcode

该文件被放置在%LOCALAPPDATA%\microsoft\onedrive\目录中,这是onedrive应用程序的默认用户安装位置。此前有报道称,攻击者利用OneDrive侧加载漏洞,将虚假dll放置到该OneDrive目录中,以实现在受攻击计算机中的持久性。

持久性和加载程序使用恶意Google Chrome扩展(Favicon.jpg)

这是一个安装包,包含installer.exe(一个Google Chrome扩展安装程序)、NativeApp.exe(一个本地消息主机)和Chrome扩展文件(background.js、manifest.json和icon.png)。

NativeApp.exe是一个本地消息主机,使用标准输入(stdin)和标准输出(stdout)与Chrome扩展通信。注意扩展清单中的type = " stdio "。

12.png

扩展清单,请注意扩展ID (allowed_origins)路径导致被释放的可执行文件和type =标准输入/输出

13.png

在Google Chrome扩展选项卡中查看的恶意扩展

Background.js扩展脚本向onStartup消息添加一个监听器。该侦听器将“inject”命令发送到本机消息传递主机,有效地充当某种独特的持久性方法,因为恶意有效负载在每次Chrome浏览器启动时都会执行。

14.png

onStartup事件的处理程序(Chrome浏览器的启动)

NativeApp使用JSON格式的消息与Chrome扩展交换数据,并实现三个命令:execute、load和inject。

消息的格式如下: xx xx xx xx {“cmd”:””,”data”:””},其中 xx xx xx xx是以字节为单位的消息长度。“cmd”项必须包含一个已实现的命令值(execute、load和inject),而“data”项可能包含其他参数,如路径和要执行的程序。

以下是有效JSON消息的示例:

15.png

注意,每个消息的前面必须有一个4字节的小端序长度值。传递不可打印字符(0x00,如下图所示)可以通过使用PowerShell及其Get-Content cmdlet和-raw参数实现,然后通过管道“|”将该内容重定向到NativeApp。如果cmd.bin文件包含如下图所示的相同内容,NativeApp.exe将运行notepad.exe。

16.png

指示执行notepad.exe的消息,第一个DWORD 0x0000003f是以下JSON消息的长度

在当前实现中,inject命令没有参数。相反,它连接到硬编码的URL地址http://

主后门加载器(Help.jpg)

这是一个shellcode,加载另一个嵌入式可执行文件——我们命名为WhiskerSpy的主后门负载。

主有效载荷:WhiskerSpy

WhiskerSpy使用椭圆曲线密码(ECC)在客户端和服务器之间交换加密密钥。以下是已实现的后门命令:

交互式shell;

下载文件;

上传文件;

删除文件;

列表文件;

截图;

加载可执行文件并调用其导出;

向进程中注入shellcode;

设备ID被计算为位于系统管理生物系统(SMBIOS)的系统信息表中的16字节UUID的32位Fowler-Noll-Vo 哈希(FNV-1)。有关UUID值的更多详细信息,请参阅SMBIOS规范第33页。使用参数“RSMB”调用函数GetSystemFirmwareTable以检索原始SMBIOS表,然后对其进行解析以定位16字节UUID,该UUID已计算其FNV-1哈希。

对于与命令和控制(C&C)服务器的通信,后门生成一个随机的16字节AES密钥。它根据该密钥计算会话ID,作为32位Murmur3哈希。

如上所述,后门使用椭圆曲线密码(ECC)。我们可以从“.data”部分中存储的硬编码值确定椭圆曲线域参数。在下图中,你可以看到素数(p,黄色)、第一个系数a(红色)、第二个系数b(绿色)、生成器(基点,蓝色)和辅因子(h,橙色)。了解这些参数有助于我们确定“secp256r1”是所使用的曲线,因为我们可以看到列出的大多数常用椭圆曲线的所有重要常数,例如在tinyec项目中。

17.png

“secp256r1”曲线的硬编码参数

上图还显示了一个值(棕色),它表示硬编码服务器的公钥。

然后进行一系列计算(椭圆曲线Diffie–Hellman或ECDH密钥交换):

生成随机32字节客户端私钥(clientPrivKey);

通过将客户端私钥乘以曲线生成器来计算客户端公钥(clientPubKey = clientPrivKey * curve.g);

通过将客户端私钥乘以服务器公钥来计算sharedKey(sharedKey = clientPrivKey * serverPubKey);

这些计算的结果作为一个64字节二进制blob上传到C&C服务器,其中前32个字节是客户端公钥的x坐标,因为常用的共享函数f(P)是取点P的x坐标。后32个字节来自一个随机的16字节AES密钥。

C&C通信首先注册设备ID(函数号= 3;POST请求“l

18.png

注册新计算机

随后上传带有客户端公钥的x坐标和加密的AES密钥的64字节文件(函数号= 1;POST请求:l

19.png

注册一个新的会话密钥并上传

然后,WhiskerSpy定期向C&C服务器请求其应执行的任何任务(函数号= 2;POST请求“h

20.png

WhiskerSpy请求执行任务

接收的数据包(文件h

21.png

特殊类型的消息

WhiskerSpy实现标准函数。在分析代码时,我们注意到一些用于报告任务状态的状态代码,其中接收到的消息的第一个字(两个字节)是命令ID。注意,在命令包的情况下,所有命令的魔法值都相同,它位于命令ID之前,不显示在表2中。在活动数据包的情况下,magic值的第一个单词(2字节)用作命令ID,因此可以在表中找到0x70D值。

22.png

WhiskerSpy的后门命令

类似的后门

老版本的WhiskerSpy是32位可执行文件,只实现前面提到的函数的子集(1-5,8,0x70D是相同的,6 =退出进程;7 = 将文件释放到temp并执行),其余的函数都不存在。

通信不是通过HTTP协议,而是通过FTP协议。这意味着FTP名称和密码必须硬编码为二进制文件才能进行通信。此方法将当前的受害者数量泄漏为l<machineID><sessionID>和h<machineID<文件,这意味着,任何知道登录凭据的人都可以看到这些文件。FTP版本的后门还会检查调试器是否存在。如果存在,状态代码“HELO>”将发送到C&C服务器。

通过跟踪分析,研究人员将这次攻击归咎于Earth Kitsune。在与朝鲜相关的网站上注入恶意脚本,显示出与该组织以前的活动相似的攻击手法和受害特征。此外,在这次攻击中使用的WhiskerSpy的传播服务器和C&C服务器与我们之前对Earth Kitsune的研究有两个基础设施重叠。第一个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]]org和Earth Kitsune的域名rs[.]myftp[.]45[.]76[.]62[.]198。第二个重叠是WhiskerSpy的C&C域londoncity[.]hopto[.]org和updategoogle[.]servehttp[.]com,加上传播服务器microsoftware[.]sytes[.]net的域都解析为172[.]93[.]201[.]172。该IP地址也从Earth Kitsune的agfSpy后门使用的域selectorioi[.]ddns[.]net映射而来。

23.png

基础设施与Earth Kitsune重叠

总结

从技术角度来看,这种威胁非常有趣。它修复合法安装程序以隐藏其活动,使用鲜为人知的哈希算法来计算计算机ID和会话ID,并使用ECC来保护加密密钥。此外,所提出的持久性方法也是相当独特和罕见的。这表明Earth Kitsune不断在发展他们攻击能力。


长期以来,亚太地区国家一直是高级持续性威胁(APT)的重灾区。最近网络安全公司Group-IB发现了一波针对东南亚以及欧洲地区的攻击,目前暂将其命名为Dark Pink,截止发文还没有分析出其背后的攻击者,因此极有可能Dark Pink是一个全新的APT组织。为研究方便,本文就将其幕后组织称为Dark Pink APT组织。

有证据表明,“Dark Pink”活动早在2021年年中就开始了,2022年中后期激增。目前已确认的受害者包括菲律宾和马来西亚的两个军事机构,柬埔寨、印度尼西亚和波斯尼亚和黑塞哥维那的政府机构,以及越南的一个宗教组织。

攻击者正在利用一套新的战术、技术和程序,他们利用一个自定义工具包,包括TelePowerBot、KamiKakaBot、Cucky和Ctealer信息窃取器(所有名字都被称为Group-IB),旨在窃取政府和军事组织网络上的机密文件。特别值得注意的是,Dark Pink甚至有能力攻击连接到受攻击设备的USB设备,甚至访问受攻击设备上的即时通讯工具。此外,Dark Pink组织利用两种核心技术,其中一种是DLL侧加载和执行由文件类型关联触发的恶意内容(事件触发执行:更改默认文件关联)。

重要发现

在2022年6月至12月期间,Dark Pink对某个目标发动了七次攻击。

研究人员将Dark Pink的首次活动与攻击者利用的Github账户联系在一起,首次攻击发生在2022年6月。他们的活动在2022年的最后三个月达到顶峰,当时他们发动了四次攻击。

Dark Pink的受害者分布在五个亚太国家(越南、马来西亚、印度尼西亚、柬埔寨、菲律宾)和一个欧洲国家(波黑)。攻击对象包括军事机构、政府和发展机构、宗教组织和一个非营利组织。

Dark Pink APT的主要目标是进行商业间谍活动,窃取文件,从受攻击设备的麦克风中捕获声音,并从即时通讯工具中窃取数据。

Dark Pink最初的核心载体是针对鱼叉式网络钓鱼邮件,攻击者假扮成求职者。有证据表明,“Dark Pink”背后的组织扫描了发布空缺职位的网站,并伪装成求职者发送了电子邮件。

几乎所有工具都是定制,包括TelePowerBot和KamiKakaBot,以及Cucky和Ctealer窃取程序。整个调查过程中,我们只发现了一个公共工具:PowerSploit /Get-MicrophoneAudio。

Dark Pink APT使用了一种称为事件触发执行的罕见技术,通过更改默认文件关联,以确保恶意TelePowerBot恶意软件的启动。这些特殊攻击者利用的另一种技术是DLL侧加载,他们用它来避免在初始访问期间被发现。

攻击者创建了一组PowerShell脚本,用于在受害者和攻击者的基础设施之间进行通信,其目的是横向移动和网络侦察。

受攻击的基础设施和Dark Pink背后的攻击者之间的所有通信都基于Telegram API。

Dark Pink APT组织实施的攻击非常先进。他们利用复杂的自定义工具组合来攻破多个政府和军事组织的防御系统。首次发现是2022年6月在越南的一个宗教组织上注册的攻击。然而,在此之前,他们就一直很活跃,因为Group-IB研究人员发现了这些攻击者使用的Github账户,其活动可以追溯到2021年年中。根据研究,由攻击者初始化的恶意软件可以发出命令,让受攻击的设备从这个特定的Github帐户下载模块。有趣的是,在迄今为止的整个活动期间,攻击者似乎只使用了一个Github账户,这可能表明他们已经能够在很长一段时间内不被发现。

1.png

上图详细显示2021(上图)和2022年(下图)Dark Pink APT在Github账户上的活动

在2022年6月的攻击之后,Group-IB研究人员无法将任何其他恶意活动归因于Dark Pink。然而,这个APT组织在夏末突然活跃起来,当时Group-IB注意到2022年8月越南一家非营利组织遭受的攻击具有6月攻击的所有特征。这样,Group-IB就能够将9月份的一次攻击、10月份的两次攻击(一次成功,一次失败)、11月份的两次攻击和12月份的一次攻击统一在一起。2022年12月8日,印度尼西亚政府组织就被攻击了一次。

2.png

Dark Pink APT时间线和攻击目标

攻击链

Dark Pink攻击的复杂性体现在它执行了多个不同攻击链。攻击者能够用几种编程语言制作工具,这使他们在试图破坏防御基础设施并在受害者的网络上获得持久性时提供了很大的灵活性。因此,我们将讨论这些过程的不同步骤和阶段,但需要注意的是,大部分攻击都基于PowerShell脚本或命令,旨在启动受攻击网络和攻击者基础设施之间的通信。

最初的访问是通过成功的鱼叉式网络钓鱼邮件实现的,这些信息包含一个短链接,引导受害者下载恶意ISO映像,在一个示例中,Group-IB发现该映像存储在公共免费共享服务MediaFire上。一旦受害者下载了ISO映像,攻击者就可以使用三个不同的攻击链,我们将在下面详细介绍。

首先引起我们注意的是,攻击者和受害者设备之间的所有通信都是基于Telegram API的。由TelePowerBot和KamiKakaBot创建的自定义模块旨在通过攻击者控制的Telegram木马读取和执行命令。有趣的是,这些模块是用不同的编程语言开发的。TelePowerBot是用PowerShell脚本表示的,而KamiKakaBot则是在.NET上开发的,其中包含了窃取功能。自2021年9月以来,攻击者一直使用相同的Telegram木马程序。

此外,Dark Pink APT利用自定义Ctealer和Cucky从网络浏览器中窃取受害者的凭据。

首次访问

Dark Pink的成功很大程度上要归功于用于获得初始访问权限的鱼叉式网络钓鱼邮件。在一个示例中,Group-IB能够找到攻击者发送的原始电子邮件。在这个示例中,攻击者假扮成一名申请公关和传播实习生职位的求职者。在邮件中,攻击者提到他们在求职网站上发现了这个空缺,这可能表明攻击者扫描了求职板,并使用这些信息创建了高度相关的钓鱼电子邮件。

这些电子邮件包含一个链接到免费使用的文件共享网站的短URL,受害者可以从中选择下载一个ISO映像,其中包含攻击受害者网络所需的所有文件。在调查过程中,研究人员发现攻击者利用了几个不同的ISO映像,我们还注意到这些ISO映像中包含的文件因情况而异。根据目前掌握的信息,我们坚信攻击者会向每个受害者发送独特的电子邮件,我们认为攻击者可以通过电子邮件将恶意ISO镜像作为直接附件发送给受害者。

Dark Pink APT发送的原始鱼叉式钓鱼邮件截图,其中记录了文件共享网站上ISO映像的存储情况

鱼叉式网络钓鱼邮件中发送的ISO映像包含不同数量的文件。目前,在攻击者发送的所有ISO映像中发现了三种类型的文件:已签名的可执行文件、非恶意的诱饵文档(例如.doc、.pdf或.jpg)和恶意DLL文件。鉴于这封电子邮件与一个职位空缺有关,我们可以假设受害者首先会寻找所谓的申请人的简历,简历通常以MS Word文档的形式发送。然而,在Dark Pink攻击中,攻击者在ISO镜像中包含一个模仿MS Word文件的.exe文件。该文件在文件名中包含“.doc”,并包含MS Word图标,以此来迷惑受害者并认为该文件可以安全打开。

4.png

Group-IB发现一个ISO图像中包含的五个文件的屏幕截图。请注意,.doc和.dll文件位于隐藏视图中

如果受害者首先执行.exe文件,与.exe文件位于同一文件夹中的恶意DLL文件将自动运行。这是一种被称为DLL侧加载的攻击者使用的技术。DLL执行的主要功能是确保攻击者的核心恶意软件TelePowerBot获得持久性。在文件执行完成之前,诱饵文件(如信件、简历)会显示在受害者的屏幕上。

木马执行和持久性

目前Group-IB研究人员已完整了解了TelePowerBot或KamiKakaBot在受害者设备上启动的过程。如上所述,包含这两个恶意软件之一的恶意DLL文件可以位于鱼叉式网络钓鱼活动期间发送的ISO映像中。在Group-IB分析的一个案例中,攻击者使用了一系列MS Office文档并利用了模板注入(Template Injection),即攻击者在初始文档中插入指向包含恶意宏代码的模板文档的链接。在Group-IB研究人员检查的另外两个案例中,Dark Pink背后的攻击者通过DLL侧加载技术启动了他们的恶意软件。总的来说,我们发现了攻击者利用的三个不同的攻击链,我们将在下面详细介绍它们。

攻击链1:全包式ISO

攻击链的第一个变体导致ISO映像通过鱼叉式网络钓鱼邮件发送给受害者。此ISO映像包含一个恶意DLL文件,其中包含TelePowerDropper(名称是Group-IB定义的)。此DLL文件的主要目标是在受攻击设备的注册表中获得TelePowerBot的持久性。在某些情况下,DLL文件还可以启动攻击者的专有窃取程序,它会解析来自受害者设备上浏览器的数据,并将其存储在本地文件夹中。在初始访问期间,攻击者可以启动任何类型的窃取程序。Dark Pink可以在攻击的所有阶段发送特殊命令来下载和启动窃取程序。

5.png

攻击链1的完整示意图

需要注意的是,在此阶段DLL文件已打包。当文件启动时,它对自己进行解密,并将控制权传递给自己的解压缩版本。此外,一旦DLL文件启动,就会创建一个互斥锁。其中一个例子是gwgXSznM-Jz92k33A-uRcCCksA-9XAU93r5。完成此步骤后,启动TelePowerBot的命令将添加到自动运行中。这意味着每次用户登录系统时,TelePowerBot都会被启动。这可以通过通过路径HKCU\Environment\UserInitMprLogonScript创建注册表项来实现。新建的密钥值如下:

6.png

上面的代码显示,该命令启动了一个标准实用程序whoami,它显示有关该设备当前用户的信息。输出被重定向到文件并完成执行。

此时还不知道TelePowerBot如何开始,答案的关键是文件扩展名.abcd。简而言之,攻击者使用此扩展名创建一个文件,作为名为“事件触发执行:更改默认文件关联”的技术的一部分。其思想是添加一个处理程序来处理注册表项树中无法识别的文件扩展名。这在下面的截图中有详细说明。

7.png

创建扩展名为.abcd的文件时运行的详细命令截图

上面的屏幕截图详细介绍了在创建具有特定扩展名.abcd的文件时触发的PowerShell命令的一部分。PowerShell命令存储在base64视图中,并且高度模糊。这些命令的结果相对简单:读取注册表项、解密并启动TelePowerBot。

攻击链2:Github宏

攻击链的第二个变异与前一个几乎完全相同。唯一不同的是初始阶段使用的文件。在我们的分析过程中,我们发现攻击者使用命令在打开初始ISO文件中包含的.doc时自动从Github下载包含TelePowerBot的恶意模板文档。写入此模板文档的宏代码可以确保恶意软件的持久性。

8.png

攻击链2的完整示意图

在本例中,发送给受害者的ISO映像包含一个MS Word文档,导致从Github自动下载包含TelePowerBot的恶意模板文档。为了在初始访问期间避开检测,宏代码被写入模板文档。这种技术被称为模板注入。宏包含多个带有字段的表单,在执行过程中,这些表单字段的值将被读取并作为注册表项中的值建立。

这个技巧可以帮助恶意软件躲避检测,因为文档本身不包含任何恶意功能或代码。编码的文档包含带有几个参数的表单,这些文件中包含的宏可以读取这些值,并确保TelePowerBot在受害者的设备上具有持久性。

9.png

截图详细显示了两个包含预定义密钥和值的表单,这些密钥和值是由恶意宏代码写入到注册表中发送给受害者的MS Word文件中。

攻击链3:X(ML)标记点

我们将详细介绍的第三种也是最后一种攻击链变体是Group-IB分析的最近一次Dark Pink攻击中使用的一个,在2022年12月8日,攻击者破坏了印度尼西亚政府机构的网络。通过鱼叉式网络钓鱼电子邮件发送给受害者的ISO映像包含诱饵文档、已签名的合法MS Word文件和名为KamiKakaDropper的恶意DLL。此攻击载体的主要目标是在受攻击的设备上持久化KamiKakaBot。在这个攻击链中,XML文件位于加密视图中诱饵文档的末尾。与攻击链 1一样,恶意DLL文件是由DLL侧加载技术启动的。一旦DLL文件启动,启动下一阶段攻击链的XML文件将从诱饵文档中解密并保存在受攻击的设备中。

10.png

攻击链3的完整示意图

XML文件包含MSBuild项目,该项目包含执行.NET代码的任务。要了解有关此过程如何工作的详细信息,请参阅以下Microsoft文档。NET代码的逻辑很简单:启动KamiKakaBot,它本身位于XML文件(以base64格式打包和编码)中。打开此文件后,控制权将传递给KamiKakaBot。

11.png

解包并启动KakaKamiBot的XML文件内的代码片段

XML文件的路径在启动MSBuild时作为参数传递。运行MSBuild的命令位于注册表项(HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell)中,该注册表项是在DLL文件执行期间创建的。完成此步骤后,每当用户登录到系统时,MSBuild将运行。此外,DLL创建一个可重复的任务,将受害者从系统中注销。


长期以来,亚太地区国家一直是高级持续性威胁(APT)的重灾区。最近网络安全公司Group-IB发现了一波针对东南亚以及欧洲地区的攻击,目前暂将其命名为Dark Pink,截止发文还没有分析出其背后的攻击者,因此极有可能Dark Pink是一个全新的APT组织。为研究方便,本文就将其幕后组织称为Dark Pink APT组织。

有证据表明,“Dark Pink”活动早在2021年年中就开始了,2022年中后期激增。目前已确认的受害者包括菲律宾和马来西亚的两个军事机构,柬埔寨、印度尼西亚和波斯尼亚和黑塞哥维那的政府机构,以及越南的一个宗教组织。

攻击者正在利用一套新的战术、技术和程序,他们利用一个自定义工具包,包括TelePowerBot、KamiKakaBot、Cucky和Ctealer信息窃取器(所有名字都被称为Group-IB),旨在窃取政府和军事组织网络上的机密文件。特别值得注意的是,Dark Pink甚至有能力攻击连接到受攻击设备的USB设备,甚至访问受攻击设备上的即时通讯工具。此外,Dark Pink组织利用两种核心技术,其中一种是DLL侧加载和执行由文件类型关联触发的恶意内容(事件触发执行:更改默认文件关联)。

重要发现

在2022年6月至12月期间,Dark Pink对某个目标发动了七次攻击。

研究人员将Dark Pink的首次活动与攻击者利用的Github账户联系在一起,首次攻击发生在2022年6月。他们的活动在2022年的最后三个月达到顶峰,当时他们发动了四次攻击。

Dark Pink的受害者分布在五个亚太国家(越南、马来西亚、印度尼西亚、柬埔寨、菲律宾)和一个欧洲国家(波黑)。攻击对象包括军事机构、政府和发展机构、宗教组织和一个非营利组织。

Dark Pink APT的主要目标是进行商业间谍活动,窃取文件,从受攻击设备的麦克风中捕获声音,并从即时通讯工具中窃取数据。

Dark Pink最初的核心载体是针对鱼叉式网络钓鱼邮件,攻击者假扮成求职者。有证据表明,“Dark Pink”背后的组织扫描了发布空缺职位的网站,并伪装成求职者发送了电子邮件。

几乎所有工具都是定制,包括TelePowerBot和KamiKakaBot,以及Cucky和Ctealer窃取程序。整个调查过程中,我们只发现了一个公共工具:PowerSploit /Get-MicrophoneAudio。

Dark Pink APT使用了一种称为事件触发执行的罕见技术,通过更改默认文件关联,以确保恶意TelePowerBot恶意软件的启动。这些特殊攻击者利用的另一种技术是DLL侧加载,他们用它来避免在初始访问期间被发现。

攻击者创建了一组PowerShell脚本,用于在受害者和攻击者的基础设施之间进行通信,其目的是横向移动和网络侦察。

受攻击的基础设施和Dark Pink背后的攻击者之间的所有通信都基于Telegram API。

Dark Pink APT组织实施的攻击非常先进。他们利用复杂的自定义工具组合来攻破多个政府和军事组织的防御系统。首次发现是2022年6月在越南的一个宗教组织上注册的攻击。然而,在此之前,他们就一直很活跃,因为Group-IB研究人员发现了这些攻击者使用的Github账户,其活动可以追溯到2021年年中。根据研究,由攻击者初始化的恶意软件可以发出命令,让受攻击的设备从这个特定的Github帐户下载模块。有趣的是,在迄今为止的整个活动期间,攻击者似乎只使用了一个Github账户,这可能表明他们已经能够在很长一段时间内不被发现。

1.png

上图详细显示2021(上图)和2022年(下图)Dark Pink APT在Github账户上的活动

在2022年6月的攻击之后,Group-IB研究人员无法将任何其他恶意活动归因于Dark Pink。然而,这个APT组织在夏末突然活跃起来,当时Group-IB注意到2022年8月越南一家非营利组织遭受的攻击具有6月攻击的所有特征。这样,Group-IB就能够将9月份的一次攻击、10月份的两次攻击(一次成功,一次失败)、11月份的两次攻击和12月份的一次攻击统一在一起。2022年12月8日,印度尼西亚政府组织就被攻击了一次。

2.png

Dark Pink APT时间线和攻击目标

攻击链

Dark Pink攻击的复杂性体现在它执行了多个不同攻击链。攻击者能够用几种编程语言制作工具,这使他们在试图破坏防御基础设施并在受害者的网络上获得持久性时提供了很大的灵活性。因此,我们将讨论这些过程的不同步骤和阶段,但需要注意的是,大部分攻击都基于PowerShell脚本或命令,旨在启动受攻击网络和攻击者基础设施之间的通信。

最初的访问是通过成功的鱼叉式网络钓鱼邮件实现的,这些信息包含一个短链接,引导受害者下载恶意ISO映像,在一个示例中,Group-IB发现该映像存储在公共免费共享服务MediaFire上。一旦受害者下载了ISO映像,攻击者就可以使用三个不同的攻击链,我们将在下面详细介绍。

首先引起我们注意的是,攻击者和受害者设备之间的所有通信都是基于Telegram API的。由TelePowerBot和KamiKakaBot创建的自定义模块旨在通过攻击者控制的Telegram木马读取和执行命令。有趣的是,这些模块是用不同的编程语言开发的。TelePowerBot是用PowerShell脚本表示的,而KamiKakaBot则是在.NET上开发的,其中包含了窃取功能。自2021年9月以来,攻击者一直使用相同的Telegram木马程序。

此外,Dark Pink APT利用自定义Ctealer和Cucky从网络浏览器中窃取受害者的凭据。

首次访问

Dark Pink的成功很大程度上要归功于用于获得初始访问权限的鱼叉式网络钓鱼邮件。在一个示例中,Group-IB能够找到攻击者发送的原始电子邮件。在这个示例中,攻击者假扮成一名申请公关和传播实习生职位的求职者。在邮件中,攻击者提到他们在求职网站上发现了这个空缺,这可能表明攻击者扫描了求职板,并使用这些信息创建了高度相关的钓鱼电子邮件。

这些电子邮件包含一个链接到免费使用的文件共享网站的短URL,受害者可以从中选择下载一个ISO映像,其中包含攻击受害者网络所需的所有文件。在调查过程中,研究人员发现攻击者利用了几个不同的ISO映像,我们还注意到这些ISO映像中包含的文件因情况而异。根据目前掌握的信息,我们坚信攻击者会向每个受害者发送独特的电子邮件,我们认为攻击者可以通过电子邮件将恶意ISO镜像作为直接附件发送给受害者。

Dark Pink APT发送的原始鱼叉式钓鱼邮件截图,其中记录了文件共享网站上ISO映像的存储情况

鱼叉式网络钓鱼邮件中发送的ISO映像包含不同数量的文件。目前,在攻击者发送的所有ISO映像中发现了三种类型的文件:已签名的可执行文件、非恶意的诱饵文档(例如.doc、.pdf或.jpg)和恶意DLL文件。鉴于这封电子邮件与一个职位空缺有关,我们可以假设受害者首先会寻找所谓的申请人的简历,简历通常以MS Word文档的形式发送。然而,在Dark Pink攻击中,攻击者在ISO镜像中包含一个模仿MS Word文件的.exe文件。该文件在文件名中包含“.doc”,并包含MS Word图标,以此来迷惑受害者并认为该文件可以安全打开。

4.png

Group-IB发现一个ISO图像中包含的五个文件的屏幕截图。请注意,.doc和.dll文件位于隐藏视图中

如果受害者首先执行.exe文件,与.exe文件位于同一文件夹中的恶意DLL文件将自动运行。这是一种被称为DLL侧加载的攻击者使用的技术。DLL执行的主要功能是确保攻击者的核心恶意软件TelePowerBot获得持久性。在文件执行完成之前,诱饵文件(如信件、简历)会显示在受害者的屏幕上。

木马执行和持久性

目前Group-IB研究人员已完整了解了TelePowerBot或KamiKakaBot在受害者设备上启动的过程。如上所述,包含这两个恶意软件之一的恶意DLL文件可以位于鱼叉式网络钓鱼活动期间发送的ISO映像中。在Group-IB分析的一个案例中,攻击者使用了一系列MS Office文档并利用了模板注入(Template Injection),即攻击者在初始文档中插入指向包含恶意宏代码的模板文档的链接。在Group-IB研究人员检查的另外两个案例中,Dark Pink背后的攻击者通过DLL侧加载技术启动了他们的恶意软件。总的来说,我们发现了攻击者利用的三个不同的攻击链,我们将在下面详细介绍它们。

攻击链1:全包式ISO

攻击链的第一个变体导致ISO映像通过鱼叉式网络钓鱼邮件发送给受害者。此ISO映像包含一个恶意DLL文件,其中包含TelePowerDropper(名称是Group-IB定义的)。此DLL文件的主要目标是在受攻击设备的注册表中获得TelePowerBot的持久性。在某些情况下,DLL文件还可以启动攻击者的专有窃取程序,它会解析来自受害者设备上浏览器的数据,并将其存储在本地文件夹中。在初始访问期间,攻击者可以启动任何类型的窃取程序。Dark Pink可以在攻击的所有阶段发送特殊命令来下载和启动窃取程序。

5.png

攻击链1的完整示意图

需要注意的是,在此阶段DLL文件已打包。当文件启动时,它对自己进行解密,并将控制权传递给自己的解压缩版本。此外,一旦DLL文件启动,就会创建一个互斥锁。其中一个例子是gwgXSznM-Jz92k33A-uRcCCksA-9XAU93r5。完成此步骤后,启动TelePowerBot的命令将添加到自动运行中。这意味着每次用户登录系统时,TelePowerBot都会被启动。这可以通过通过路径HKCU\Environment\UserInitMprLogonScript创建注册表项来实现。新建的密钥值如下:

6.png

上面的代码显示,该命令启动了一个标准实用程序whoami,它显示有关该设备当前用户的信息。输出被重定向到文件并完成执行。

此时还不知道TelePowerBot如何开始,答案的关键是文件扩展名.abcd。简而言之,攻击者使用此扩展名创建一个文件,作为名为“事件触发执行:更改默认文件关联”的技术的一部分。其思想是添加一个处理程序来处理注册表项树中无法识别的文件扩展名。这在下面的截图中有详细说明。

7.png

创建扩展名为.abcd的文件时运行的详细命令截图

上面的屏幕截图详细介绍了在创建具有特定扩展名.abcd的文件时触发的PowerShell命令的一部分。PowerShell命令存储在base64视图中,并且高度模糊。这些命令的结果相对简单:读取注册表项、解密并启动TelePowerBot。

攻击链2:Github宏

攻击链的第二个变异与前一个几乎完全相同。唯一不同的是初始阶段使用的文件。在我们的分析过程中,我们发现攻击者使用命令在打开初始ISO文件中包含的.doc时自动从Github下载包含TelePowerBot的恶意模板文档。写入此模板文档的宏代码可以确保恶意软件的持久性。

8.png

攻击链2的完整示意图

在本例中,发送给受害者的ISO映像包含一个MS Word文档,导致从Github自动下载包含TelePowerBot的恶意模板文档。为了在初始访问期间避开检测,宏代码被写入模板文档。这种技术被称为模板注入。宏包含多个带有字段的表单,在执行过程中,这些表单字段的值将被读取并作为注册表项中的值建立。

这个技巧可以帮助恶意软件躲避检测,因为文档本身不包含任何恶意功能或代码。编码的文档包含带有几个参数的表单,这些文件中包含的宏可以读取这些值,并确保TelePowerBot在受害者的设备上具有持久性。

9.png

截图详细显示了两个包含预定义密钥和值的表单,这些密钥和值是由恶意宏代码写入到注册表中发送给受害者的MS Word文件中。

攻击链3:X(ML)标记点

我们将详细介绍的第三种也是最后一种攻击链变体是Group-IB分析的最近一次Dark Pink攻击中使用的一个,在2022年12月8日,攻击者破坏了印度尼西亚政府机构的网络。通过鱼叉式网络钓鱼电子邮件发送给受害者的ISO映像包含诱饵文档、已签名的合法MS Word文件和名为KamiKakaDropper的恶意DLL。此攻击载体的主要目标是在受攻击的设备上持久化KamiKakaBot。在这个攻击链中,XML文件位于加密视图中诱饵文档的末尾。与攻击链 1一样,恶意DLL文件是由DLL侧加载技术启动的。一旦DLL文件启动,启动下一阶段攻击链的XML文件将从诱饵文档中解密并保存在受攻击的设备中。

10.png

攻击链3的完整示意图

XML文件包含MSBuild项目,该项目包含执行.NET代码的任务。要了解有关此过程如何工作的详细信息,请参阅以下Microsoft文档。NET代码的逻辑很简单:启动KamiKakaBot,它本身位于XML文件(以base64格式打包和编码)中。打开此文件后,控制权将传递给KamiKakaBot。

11.png

解包并启动KakaKamiBot的XML文件内的代码片段

XML文件的路径在启动MSBuild时作为参数传递。运行MSBuild的命令位于注册表项(HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell)中,该注册表项是在DLL文件执行期间创建的。完成此步骤后,每当用户登录到系统时,MSBuild将运行。此外,DLL创建一个可重复的任务,将受害者从系统中注销。


研究人员在OEM厂商的外围设备中发现了多个漏洞,这影响了这些OEM厂商(Razer、EVGA、MSI、AMI)的许多用户。这些漏洞源于一个众所周知的易受攻击的驱动程序,通常被称为WinIO/WinRing0。

本文会重点介绍一个有趣的TOCTOU漏洞案例(CVE-2022-25637),以及其他一些漏洞。

众所周知,MSI开发了一个名为MSI Dragon Center的便捷工具,其目的是检索有关计算机统计信息(即GPU/CPU使用情况)并控制硬件相关设置。

不过从实际反馈来看,它运行得并不好,出现了许多UI问题并且加载时间慢。有研究人员在调整MSI电脑上风扇的速度时,无疑发现了其中的问题,很可能是MSI使用了内核驱动程序。本文的作者检查证实了MSI使用内核驱动程序来执行Dragon Center提供的一些功能,即风扇控制功能是通过WMI对象或供应商特定的API(如NvAPI_GPU_SetCoolerLevels)完成的,并没有在Dragon Center代码中实现。此外,Dragon Center加载了一个名为WinIO的驱动程序,这显然与风扇控制的逻辑无关。综合上述事件,我开始研究WinIo驱动程序,因为它可能会构成一个有趣的攻击面。

WinIO是由www.internals.com开发的著名内核驱动程序(该网站已不再在线,但可以通过archive.org访问)。WinIO驱动程序库允许32位和64位Windows用户模式进程直接访问I/O端口、MSR寄存器和物理内存,它已被许多供应商广泛使用。由于它具有强大的功能,因此责任重大,驱动程序应该只允许特权用户使用这些功能。

然而,在WinIo中,情况有所不同,任何用户都可以与之交互,包括沙盒应用程序。WinIo可以简单地在设备对象上设置一个安全描述符,以避免低权限用户与其交互,如下面的代码片段所示。

1.png

将SDDL应用于设备对象

我在我的设备上发现的WinIo版本是驱动程序的早期版本(我们怀疑它是WinIo 2.0版),即使是最简单的漏洞也极易对其发起攻击,一个简单的DeviceIoControl请求可能会破坏堆栈。通过使用具有IOCTL代码0x80102040的DeviceIoControl发送I/O请求,研究人员得到了一个memmove方法。

2.png

WinIo调度函数:易受攻击的memmove/memcpy

此memmove缺少任何参数检查。更准确地说,它属于控制长度参数,该参数源自SystemBuffer。因此,通过指定大于IOPM本地变量长度的长度,我们可以很容易地破坏堆栈。因此,我们可以重写本地堆栈数据,这是一个经典的缓冲区溢出场景,它可以导致重写调用方的返回指针,再加上使用ROP链,最终导致权限升级。

然而,存在另一个漏洞,即通过物理内存映射的权限升级,这允许我们拥有一个强大的R/W原语。

3.png

WinIO中的任意内存R/W函数

此时,会出现一个问题,这个代码库是否可以用于其他地方\驱动程序?

寻找其他易受攻击的程序

我们在VirusTotal中编写了一个相对简单的查询,并找到了114个潜在驱动程序的匹配项,,这些潜在驱动程序可能与我们的脆弱驱动程序共享相同的代码库。

通过快速浏览一些驱动程序的逆向代码,许多供应商似乎使用了WinIo驱动程序的相同易受攻击的代码库。

其中Razer Synapse Service.sys特别引起了我的注意。

4.webp.jpg

Razer Synapse Servicesys VirusTotal结果

三个异常的Razer Synapse

研究人员的设备上安装的是Razer Synapse,Razer Synapse(雷蛇云驱动)是款云端软件,配合Razer的键鼠使用,可以把游戏配置文件、宏,已经鼠标等的设置参数同步到云端。Razer Synapse加载了一些驱动程序,其中之一是Razer Synape服务。sys–具有不同名称的WinIo驱动程序。通常,当加载WinIo驱动程序时,不会对设备对象设置安全限制。然而,在这种情况下,它有一个限制性的安全描述符。

5.webp.jpg

应用于Razer驱动程序的SDDL

此时,通常应该放弃此驱动程序,即使它是错误的,因为为了与此驱动程序交互,你需要具有高权限,这意味着你已经可以执行特权操作。

在Windows中,如果你以admin+的身份开始,那么让驱动程序做一些异常的操作并不会被视为是不安全的事情。由于驱动程序没有设置安全描述符,所以这一定是在其他地方完成的。

根据MSDN的描述:“设备对象的安全性可以由放置在INF文件中或传递给IoCreateDeviceSecure的SDDL字符串指定。”

现在,我们应该仔细分析一下INF文件,但令人惊讶的是,并没有INF文件!

不得不说这是一个很奇怪的情况,我们怀疑Razer Synapse Service.exe将SDDL设置为驱动程序创建的设备对象。为此,我们监控了Procmon中的系统,并注意到该程序负责加载Razer Synapse Service.sys驱动程序。

6.webp.jpg

准备安装 “Razer Synapse Service.sys”

我们需要对Razer Synapse Service.exe进行逆向工程,以了解它在何处应用安全描述符。幸运的是,它是用C#编写的,这将使我们的逆向工程工作更容易,因为我们可以使用reflector。

通过遍历模块列表,找出哪个模块负责加载内核驱动程序。我们将不同的模块反编译回C#(我们使用了DnSpy),然后继续查找与服务控制管理器(SC管理器)进行的任何通信。我们发现负责此事的模块是LibreHardwareMonitorLib(开源)。

如果我们仔细观察代码,就会发现一些奇怪的东西。

7.webp.jpg

我们可以看到,在第11-14行中,服务尝试打开驱动程序创建的设备对象的句柄,然后为其设置新的安全描述符。我的意思是,他们在用户模式下使用了正确的方法,但他们一开始就不应该在用户模式空间中这样做。

如上所述,应用SDDL应该在内核中完成,并在设备创建时完成。事实上,它没有在内核空间中发生,这导致设备对象持有一个默认的安全描述符,该描述符允许低权限用户与设备对象交互。

这是检查使用时间漏洞的典型案例。如果我们能够利用这个短时间段获取设备对象的句柄,那么我们就可以滥用WinIo的漏洞。

漏洞利用

“Razer Synapse Service”配置为自动启动。因此,我们不能从低权限用户的角度随意重新启动它。要利用该漏洞,就是要在不重新启动服务的情况下重新创建竞争条件(race condition)。

事实证明,使用synapse3提供的更新机制,触发这种情况相对容易。每当安装新更新或新插件时,Razer Synapse Service将重新启动。

重新启动过程包括卸载WinIo驱动程序,然后重新加载。因此,允许我们触发竞争条件。这是通过安装一个新模块来完成的,这一操作不需要特权,因为Synsapse3支持Alexa、Chroma Connect、Chroma Studio、Philips HUE等模块。

8.webp.jpg

模块列表Synapse 3

如果我们选择安装其中一个模块,synapse3进程将通过命名管道向Razer Central Service发送命令,以安装所选模块。

RazerCentralService.exe启动模块安装,包括停止和启动RazerSynapse服务,从而卸载和加载驱动程序。为此,我们创建了一个POC,该POC完成了整个过程,在POC触发模块安装期间,一个无限的while循环尝试使用CreateFile API打开设备对象的句柄。我们设法在安全描述符更改之前打开了设备的句柄,换句话说,我们赢得了竞争。此时,服务更改安全描述符并不重要,因为我们拥有设备对象的有效句柄。

现在我们可以自由地与设备对象交互,可以利用WinIo的一些漏洞。在本文的POC中,我们利用了MSR R/W原语。写入MSR原语允许我们重写IA32_LSTAR MSR。这个特定的MSR保存着指向处理系统调用的内核函数的指针(KiSystemCall64Shadow)。通过重写函数指针,我们可以实现任意的内核代码执行。

根据@_xeroxz的经验,我们使用称为msrexec的工具轻松地开发了MSR写入原语漏洞。

总结

这项研究是我们修设备风扇时无意中发现的一个漏洞,通过利用一个很酷的竞争条件,导致在内核中运行代码。