欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Winnti恶意组织:利用ShadowPad和Winnti恶意软件针对香港高校发动攻击

来源:本站整理 作者:佚名 时间:2020-02-07 TAG: 我要投稿

一、概述
在2019年11月,我们发现了Winnti恶意组织针对两所香港高校发起的新型恶意活动。在恶意活动中,我们发现了ShadowPad后门的新变种,这是该恶意组织主要使用的后门。新变种中部署了新的启动器,并且嵌入了许多模块。在ShadowPad出现的前几周,我们还在这些高校中发现了Winnti恶意软件。
Winnti恶意组织自2012年开始活跃,主要针对视频游戏和软件行业展开供应链攻击,最终导致受害者发布包含木马的软件(例如:CCleaner、ASUS LiveUpdate和多个视频游戏),并以此来攻击更多的受害者。并且,该恶意组织此前也针对医疗保健和教育领域的各种目标发动过攻击。
ESET研究人员最近在一篇文章中发布了一份白皮书,其中更新了我们对于Winnti恶意组织武器库的理解,该文章记录了针对亚洲视频游戏行业的供应链攻击。此外,我们还曾经分析过一个名为skip-2.0的新型后门,该后门主要以Microsoft SQL Server为目标。
本文将重点介绍这个新型ShadowPad变种的技术细节。
关于Winnti恶意组织的命名:
我们选择沿用“Winnti恶意组织”的名称,这是Kaspersky在2013年首次用于识别该组织的名称。由于Winnti也是一个恶意软件家族的名称,因此在提及攻击者时,我们会将其称为“Winnti恶意组织”。自2013年以来,事实证明Winnti只是Winnti恶意组织使用的众多恶意软件家族其中的一个。
二、ShadowPad恶意软件分析
2019年11月,ESET的机器学习引擎Augur在位于两所香港高校的多台计算机上检测到一个恶意样本,该样本是已经在10月底发现的Winnti恶意软件。Augur检测到的可疑样本实际上是一个新的32位ShadowPad启动器。在这些高校中发现的ShadowPad和Winnti样本均包含恶意软件识别特征以及带有高校名称的C&C URL,这表明是有针对性的攻击。
除了我们发现的两所高校之外,由于攻击者使用了固定格式的C&C URL,我们有理由认为,攻击者还针对其他三所高校使用了相同的ShadowPad和Winnti变种发动攻击。
Winnti恶意组织针对香港高校的这一攻击活动,是在香港公民抗议引渡法案的背景下进行的,该抗议活动在2019年6月开始,法案在2019年10月被撤回。
我们已经与受感染的高校取得联系,并提供了必要的信息和协助以消除威胁。
2.1 更新版本的启动器
与我们此前在Winnti恶意组织武器库的白皮书中记录的ShadowPad变种不同,这个启动器不会使用VMProtect进行混淆。此外,加密的Payload既不嵌入其中,也不位于COM1:NULL.dat备用数据流中,并且也没有使用根据受害主机系统驱动器卷ID生成的密钥进行常规RC5加密(在PortReuse后门、skip-2.0和一些ShadowPad变种中使用这种方式)。在这种情况下,启动器的功能较为简单。
2.2 DLL侧加载
启动器是一个名为hpqhvsei.dll的32位DLL,它是hpqhvind.exe加载的合法DLL的名称。该可执行文件来自HP,通常与名为“HP Digital Imaging”的打印和扫描软件一起安装。在这种情况下,攻击者将合法的hpqhvind.exe与恶意的hpqhvsei.dll共同投放到C:\Windows\Temp   中。
尽管我们没有获取到投放并执行该启动器的组件,但这些文件的存在证明了,该启动器的初始执行是通过DLL侧加载来完成的。
在hpqhvind.exe启动时,恶意DLL被加载,此时将调用DLLMain函数,该函数检查其父进程中偏移量0x10BA处的下列字节:
85 C0 ; test eax, eax
0F 84 ; jz
如果父进程是hpqhvind.exe,这个字节序列将出现在确定的位置,并且恶意DLL将继续在内存中修补父进程。它将无条件跳转(jmp – 0xE9)替换为hpqhvsei.dll中函数的地址,以解密并执行嵌入在启动程序中的加密Payload,从而替换0x10BA处的原始指令。
负责修补父进程的反编译函数如下图所示。如果hpqhvsei.dll由与hpqhvind.exe不同的进程加载,则恶意代码将不会被解密和执行。
负责修补父进程的反编译函数:

原始hpqhvind.exe与已经修补的hpqhvind.exe之间的区别,如下图所示。
原始hpqhvind.exe(左侧)与修补后hpqhvind.exe(右侧)之间的区别:

修补的代码部分位于hpqhvind.exe主函数的最开始。如上图所示,修补的代码位于加载hpqhvsei.dll之后。这表明,负责解密和执行Payload的函数是在加载恶意DLL之后直接执行的。
2.3 Payload解密
加密的Payload位于hpqhvsei.dll的.rdata段中,解密算法是一个XOR循环,其中XOR密钥在每次迭代时都会更新,如下图所示。
Payload解密循环的伪代码:

解密后的Payload是负责ShadowPad初始化的常规Shellcode。在这里,使用了伪造的条件跳转来进行混淆,以阻止反汇编过程。
2.4 持久化
解密后,将执行ShadowPad的Shellcode,它将首先将内存中已经修补的父进程写入磁盘(配置字符串池指定的路径),从而在系统上实现持久性。在我们所分析的样本中,写入的路径为C:\ProgramData\DRM\CLR\CLR.exe。随后,它创建一个名为clr_optimization_v4.0.30229_32的服务,该服务负责执行CLR.exe。为避免怀疑,恶意软件作者选择了这样的服务名称和可执行文件名称,使其看起来类似于Microsoft .NET优化服务的名称。
下图总结了整个阶段的过程,每个箭头上的编号对应于事件的时间顺序。
ShadowPad阶段过程:

2.5 模块
ShadowPad是一个多模块的后门,其中从Root模块引用的模块中包含循环列表,可以从中提取模块地址、UNIX时间戳(可能在模块编译过程中自动嵌入)和模块标识符。从模块本身中,我们还可以提取到开发人员为其指定的名称。在我们所分析的版本中,共嵌入了17个模块,具体信息如下。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载