Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

渗透技巧 1年前 (2023) admin
339 0 0

导言

我们发现了一个新的后门程序,我们将其归因于我们之前讨论过的高级持续威胁行为体,即地球Kitsune。从2019年开始,“地球狐”就一直在向目标分发自研后门的变种,目标主要是对朝鲜感兴趣的个人。在我们过去调查过的许多案件中,威胁行为者使用了水坑战术,破坏了与朝鲜有关的网站,并向其中注入了浏览器漏洞。在我们这里分析的最新活动中,地球Kitsune使用了类似的策略,但不是使用浏览器漏洞,而是使用社会工程。

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

           Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

图1. WhiskerSpy感染链

交付分析

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

图2.亲朝网站遭社会工程攻击

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

1.位于日本名古屋的特定IP地址

2.位于巴西的IP地址子网

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图3.原始页面(左)和注入脚本的页面(右)之间的网页内容比较

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

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

修补的安装程序

安装程序文件是 MSI安装程序 包裹着另一个 NSIS安装程序。该威胁行为者滥用合法安装程序(windows.10.codec.pack.v2.1.8.setup.exe -e82 e1 fb 775 a0181686 ad 0 d345455451 c87033 cafde 3bd 84512 b6 e617 ace 3338 e)并对其进行修补以包含恶意外壳代码。贴片包含更多的节段,从5节增加到6节(图5中的红色括号)和 增加图像大小,为恶意外壳代码(图5中的绿色括号)创建额外空间。

 Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

图5.原始(上图)和修补(下图)安装程序。某些参数的大小增加了,并且在修补版本中增加了一个部分

 Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

图6.修补安装程序中新增的.odata部分

修补后的安装程序的入口点更改为立即跳转到外壳代码。外壳代码用一个简单的密钥(XOR 0x01)加密。

 Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

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

解密后,外壳代码运行几个PowerShell命令以下载恶意软件的其他阶段。这些文件是可执行文件,从一开始就有几百个字节,用 一个字节的密钥进行异或运算。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图8. odata节中的Shellcode调用几个PowerShell命令来下载其他加载程序

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

图9. odata段中的shell代码恢复安装程序的原始入口点

下载的二进制文件:装载机

通过OneDrive实现持久性的路径(Icon.jpg)

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

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

这是vcruntime140.dll(Microsoft C运行时库)的修补版本。在本例中,对函数memset进行了修补,如图10和11所示。从函数返回(retn)被替换为跳转到覆盖(在新添加的.odata部分中),其中注入的代码从覆盖读取字节,将它们与1字节密钥异或,并将嵌入的有效负载注入werfautl.exe进程。覆盖层中的shell代码是主后门的加载程序。

   Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门   

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

             

图11.已修补的memset函数。请注意,地址0x18000C7D1处的指令是跳转(jmp),以覆盖外壳代码

该文件被放置在%LOCALAPPDATA%microsoftonedrive目录中,这是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”。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

图12.扩展清单。注意扩展ID(allowed_origins)路径指向删除的可执行文件,并且type = standard input/output。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

             

图13.在Google Chrome扩展选项卡中看到的恶意扩展

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

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

NativeApp使用JSON格式的消息与Chrome扩展交换数据,并实现三个命令:执行、加载和注入。

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

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

{“cmd”:”execute”,”data”:[“c:windowssystem32notepad.exe”]}

{“cmd”:”load”,”data”:[“c:temphello-world-x64.dll”,”MessageBoxThread”]}

{“cmd”:”inject”,”data”:[“”]}

注意,每条消息前面必须有一个4字节的little-endian长度值。传递不可打印字符(如图15所示的0x 00)可以通过使用PowerShell及其 获取内容cmdlet,然后通过管道重定向此内容“|“添加到本机应用程序。如果cmd.bin文件包含与图15所示相同的内容,NativeApp.exe将运行notepad.exe。

powershell获取内容。指令bin-原始| NativeApp.exe

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 

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

在当前实现中,inject命令没有参数。而是连接到硬编码的URL地址http:///help[.] jpg格式,下载,解码并运行主要的有效载荷,这是一个后门。

主后门加载程序(Help.jpg)

这是一个加载另一个嵌入式可执行文件的外壳代码- 我们命名为WhiskerSpy的主后门有效负载。

主要有效载荷:胡须间谍

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

交互式外壳

下载文件

上载文件

删除档桉

列表文件

截图

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

将外壳代码注入进程

计算机ID计算为32位 福勒诺尔沃 位于系统信息表中的16字节UUID的散列(FNV-1 的 系统管理BIOS (英文)SMBIOS系统).有关UUID值的详细信息,请参见的第33页 SMBIOS规范。该功能 获取系统固件表使用参数“RSMB”调用以检索原始SMBIOS表,然后对其进行解析以定位16字节UUID,计算其FNV-1散列。

用于与命令和控制(C)通信&C)服务器时,后门程序生成一个随机的16字节AES密钥。它根据此密钥将会话ID计算为32位 杂音3散列。

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

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图16.“secp256r1”曲线的硬编码参数

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

然后,一系列计算(椭圆曲线Diffie-Hellman或ECDH密钥交换)如下:

1.生成随机的32字节客户端私钥(clientPrivKey)

2.通过将客户端私钥乘以曲线生成器来计算客户端公钥            
(客户公开密钥=客户私钥 * 曲线.g)

3.通过将客户端私钥乘以服务器公钥来计算sharedKey            
(共享密钥=客户端私钥 * 服务器公钥)

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

C&C通信从注册机器ID开始(功能号= 3;使用“l<机器ID>*”的POST请求)。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图17.注册新计算机

随后上载具有客户端公钥和加密的AES密钥的x坐标的64字节文件(函数号= 1;使用“l<机器ID><会话ID>“的POST请求。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图18.注册新会话密钥并上载

WhiskerSpy然后周期性地向C&C服务器请求它应该执行的任何任务(函数号= 2;使用“h<机器ID>*”的POST请求。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

           

图19. WhiskerSpy请求执行任务

接收的数据包(文件h的内容<计算机ID>)可以是加密的或纯文本的,这取决于分组的目的。例如,有效数据包具有0x14字节,以0x104B070D幻值开始,并且未加密。它的 杂音哈希必须等于硬编码值0x89EECD7C。表1列出了其他数据包。

数据包类型

魔术

长度

杂音散列

使用AES加密

什么都不做

1

 

没有

存活

0x104B070D

0x14

0x89EECD7C

没有

生成新会话密钥

0xC8C9427E

0x20

0xDA348CF2

没有

命令包

0xF829EA31

 

 

是的

表1.特殊类型的消息

WhiskerSpy实现了标准函数。在分析代码时,我们注意到一些状态代码用于报告任务的状态,接收到的消息的第一个字(两个字节)是命令ID。请注意,对于命令包,所有命令的魔值都相同:它在命令ID之前被发现,并且未在表2中显示。在有效数据包的情况下 ,魔值的第一个字(2字节)用作命令ID,因此可以在表中找到0x70D值。

命令ID

功能

状态代码

1

交互式shell(运行命令行任务)

中央公积金 命令行进程失败 CPS系统 命令行进程成功 [空]

2

将文件下载到客户端

超渡函数 打开文件 鱼类种群 文件写入成功 UTWF 写入文件 不良 误差

3

将文件上载到服务器

超渡函数 打开文件 UTRF 读取文件 纤维蛋白原 文件输入大(>200MB) 国际企业联合会 文件输入为空(长度为零) 不良 误差

4,8

列出文件

 

5

删除文件

好的 不良

6

不支持

 

7

退出流程

 

9

加密文件并上传到C&C服务器

 

10

截图

IPS 像素规格不正确 (!= 24和!=三十二) DIBF公司 设备无关位图(DIB)失败

11

加载模块并运行导出

不良 无法装入模块 好的

12

将外壳代码注入到另一个进程

不良 好的

0x70D

检查它是否处于活动状态

用字节响应服务器e7 94 9f“, which is also the UTF-8 encoding of the Chinese character 生(shēng = life)

表2. WhiskerSpy的后门命令

类似后门

WhiskerSpy的较早版本是32位可执行文件,只实现前面提到的函数的子集(1-5、8、0x 70 D相同,6 =退出进程;7 =将文件放到临时文件并执行)。其余功能缺失。

通信不是通过HTTP协议,而是通过FTP协议。这意味着FTP名称和密码必须硬编码为二进制文件才能启用通信。此方法将当前的受害者数量泄漏为l和h文件,知道登录凭据的任何人都可以看到这些文件。

FTP版本的后门程序还检查调试器是否存在。如果存在,则将状态代码HELO>“发送到C&C服务器。

归因

我们的调查结果使我们能够以中等置信度将这次攻击归因于地球Kitsune威胁行为体。向与朝鲜有关的网站注入恶意脚本,显示出与该集团以往活动类似的作案手法和受害者特征。此外,递送服务器和C& 此攻击中使用的WhiskerSpy的C服务器与我们之前的研究有两个基础结构重叠地球行动

1.我们注意到的第一个重叠是WhiskerSpy的C&C域londoncity[.]跳[.] org和地球的域rs[.]我的文件传输协议[.]商业解析为相同的IP地址45[.] 76[.] 62[.] 198.

2.第二个重叠是WhiskerSpy的C&C域名伦敦城[.]跳[.]组织和更新谷歌[.]服务http [.] com,加上传送服务器microsoftindow [.]的域系统net均解析为172[.] 93[.] 201[.] 172.此IP地址也是从域选择器oi [.]映射的ddns[.] net被地球Kitsune的agfSpy后门使用。

Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 图20.基础设施与地球Kitsune重叠(点击图片查看大图)

结语

从技术角度来看,这种威胁非常有趣。它修补合法安装程序以隐藏其活动,使用鲜为人知的散列算法来计算机器ID和会话ID,并采用ECC来保护加密密钥。此外,提出的持久性方法也相当独特和罕见。这表明地球狐精通他们的技术能力,并不断发展他们的工具,战术和程序TTP。

为了帮助组织防御高级威胁,我们建议使用多层安全方法和技术,以检测并阻止这些类型的威胁通过 端点服务器网络电子邮件渗透到系统中

原文始发于微信公众号(闲聊知识铺):Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门

版权声明:admin 发表于 2023年3月20日 下午10:54。
转载请注明:Earth Kitsune通过水坑攻击提供新的WhiskerSpy后门 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...