近年来APT34黑客组织频繁在中东地区进行网络活动并保持较高的活跃度,在19年末IBM情报网站曾披露一种名叫ZeroCleare的破坏性数据清除恶意软件,该软件以删除设备的数据为目的,瞄准的是中东的能源和工业部门,根据情报分析ZeroCleare很有可能是由伊朗APT组织APT34(Oilrig)与xHunt合作开发。

在最新的在野攻击样本中我们发现了巴林石油公司Bapco公司受到了Dustman恶意工具的攻击,而该工具是ZeroCleare的变种主要变化是,使用了Turla Driver Loader (TDL)技术绕过DSE加载未签名的恶意驱动,从而执行恶意代码,并优化了部分代码。

一、执行流程

二、样本分析

1、Dustman是在完成渗透或是完成攻击后,用来扫尾的黑客工具,该工具只支持win7x64以上的系统,这是因为Turla Driver Loader (TDL)技术的限制,运行完成后系统会直接蓝屏。

2、该样本首先会创建互斥体“Down With Bin Salman“,以避免工具多次运行,导致后续代码执行失败,并且判断当前系统版本是否大于Windows7。

3、随后查询注册表,这里应该判断是否注册过VirtualBox的驱动。(这里很奇怪因为这个函数的返回值并没有在主逻辑中被使用而是在后续注册服务时使用,由于代码开发一般而言都是会把相关代码放在一起,方便后续使用,由此可见该代码有可能是借用了部分代码或是由其他代码修改而来。)

4、接着获得当前进程目录并拼接字符串将该字符和资源编号103,传入loadRescource函数。

5、loadRescource函数函数,首先会查找资源位置随后访问该资源,并申请内存地址将资源文件与0x7070707070707070异或后赋值给新申请的内存地址处。(这里也印证了之前的猜测,该段代码使用NT内核层代码与3环API混用,其原因很有可能是在开源代码的基础修改的,很明显原本的作者使用的大部分API都是NT层的。)

6、资源共有3个,编号分别是1,103,106

7、随后会将该资源写入当前EXE运行的目录下,该资源名为elrawdsk.sys,并判断是否写入成功。(也就是为签名的恶意驱动)

8、随后内存加载1号资源并将其解密,也是和0x7070707070707070异或解密,接着打开服务寻找指定服务VBoxUSBMon,VBoxNetAdp,VBoxNetLwf,只要找到就结束该服务,随后将上述解密的资源命名为assistant.sys(即vboxdrv.sys驱动)写入当前程序运行目录,接着根据之前查询的注册表项判断是否需要注册服务,随便启动该服务,并测试服务是否启动成功。(这里的代码与之前一样,有很强的分割性,解密完资源又去做其他事情了。)

9、随后将elrawdsk.sys字符串传入1ab4函数。

10、该函数内部首先会使用nt层Load加载elrawdsk.sys驱动并返回该驱动的PE头,并解密字符串"ntoskr"并使用Nt层加载ntoskr.exe,随后解密字符串“ExAllocatepoolWithTag”,” IoCreateDriver”,” PsCreateSystemThread”并调用nt层GetProcedureAddress获取这些函数的函数地址方便后续使用。

11、解密字符串:

12、随后在内存中填充ShellCode并将elrawdsk.sys拼接在Shellcode后。

13、随后从ntoskrnl.exe的获取需要的函数(如IoCreateDriver等函数)填充到shellcode,以便使用shellcode加载未签名驱动,然后手动填充内存中elrawdsk.sys的IAT表。(即手动修复IAT表)

14、完成上述操作后,调用146c函数向驱动发送数据

15、146c函数内部首先向assistant.sys驱动(即vboxdrv.sys驱动)发送操作码0x228204,等待驱动完成验证,并返回”The Magic Word!”。

16、assistant.sys驱动对于的相应代码(即vboxdrv.sys驱动)

17、接着发送0x228214控制码给驱动,向内核空间申请内存空间。

18、assistant.sys驱动对于的相应代码(即vboxdrv.sys驱动)

19、接着发送0x228218控制码给驱动,将3环的内存数据(即之前解密的shellcode和需要加载的驱动)向内核空间复制。

20、assistant.sys驱动对于的相应代码(即vboxdrv.sys驱动)

21、接着发送0x22824控制码给驱动,动态计算Shellcode的内核内存地址。

22、assistant.sys驱动对于的相应代码(即vboxdrv.sys驱动)

23、接着发送0x22830控制码给驱动,vboxdrv.sys驱动将在内核空间执行Shellcode。

24、assistant.sys驱动对于的相应代码(即vboxdrv.sys驱动)

25、1200函数内部移交EIP代码执行权利,至此未签名的驱动elrawdsk.sys成功绕过DSE防御成功加载进系统。

26、由于assistant.sys驱动 (即vboxdrv.sys驱动)以完成加载工作,随后主程序进行扫尾,停止相关服务,并删除服务,以及利用文件。

27、接着拼接当前进行目录,在内存中解密并释放106资源将其命名为agent.exe并将其写入,接着获取驱动器字符串,判断磁盘类型并调用1364函数。

28、1364函数内部将会创建cmd,进程并将agent.exe以带参的形式运行。

29、接下来的Dustman.exe工作以及完成,我们分析agent.exe,agent.exe首先会获取命令行参数并根据磁盘盘符执行擦除操作。

30、随后agent.exe打开elrawdsk设备对象,多次使用不同的CTL_CODE操作码检索命令行参数指定的硬盘的相关信息,包括硬盘种类、几何结构、容量大小等关键信息。

31、随后调用11f0函数,函数会对磁盘进行覆写。

32、11f0函数函数内部。

33、elrawdsk.sys驱动对应的相应代码,elrawdsk驱动将会执行物理页的复写。

34、当执行完成上述操作后,磁盘数据将全部丢失,系统也随机蓝屏。

三、总结

这个工具的核心,即使用了Turla Driver Loader (TDL)技术加载未签名驱动模块使得未签名的驱动也可以被成功的加载进入系统,可见APT组织对0环的利用也呈现增长趋势,在未来的网络攻防中0环的争夺也必将带来一个新的战场。

声明:本文来自木星安全实验室,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。