
IBM X-Force安全团队近日发现了一个Dridex银行木马的升级版本,该版本被称为Dridex v4。Dridex是最为流行的银行木马之一,最早于2014年被发现,由于它当时使用了GameOver ZeuS(GoZ)恶意软件的相关技术从而被认为是GoZ的继任者。新版本的Dridex v4的重要改进是其使用了AtomBoming技术注入恶意代码从而躲避杀毒软件的查杀。
AtomBoming技术由enSilo公司提出,利用了Windows操作系统原子表(Atom Table)的设计缺陷,可将恶意代码写入其中,并在之后检索和执行。
文章目录
- 样本概述
- 样本分析
- 分析环境
- TAC检测结果
- 文件结构
- 版本信息
- 主要功能
- 网络行为
- 启动方式
- 杀软对抗
- 防护方案
- 用户自我检测
- 2.绿盟科技木马专杀解决方案
- 声 明
- 关于绿盟科技
样本概述
样本是一个64位dll文件,采用AtomBombing技术将代码注入到explorer.exe完成流量劫持。设置注册表键值完成自启动,创建计划任务每隔1小时执行一次。
样本分析
分析环境
| 系统 | Windows 7, 64bit |
| 使用工具 | ProcessMonitor, Xuetr, Wireshark, x64dbg, IDA, |
TAC检测结果
![图片[2]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/0a27aaf1eb21bd5a16fb71fa2174a150.png)
文件结构
| 文件名 | MD5 | 功能简介 |
| 4599FCA4B67C9C216C6DEA42214FD1CE | 4599FCA4B67C9C216C6DEA42214FD1CE | 劫持443端口的数据流量发往远程服务器 |
版本信息
![图片[3]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b55e339774be101b4e4aabc9cddf3598.png)
主要功能
- 修改本机的秘钥集文件,生成新的秘钥对用于劫持https通信。
- 样本会创建计划任务运行应用程序,对其进行dll劫持来运行自身,通过在注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run设置开机启动项来运行正常应用程序,对其进行dll劫持实现开机自启动。
3.通过创建并运行cmd文件添加防火墙规则,允许explorer.exe进行端口监听,随后监听本地443端口。
4.劫持443端口的数据流量发给远程服务器。
执行流程概要图如下所示:
![图片[4]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/20b1b478eb3d27352b404e6f41720e0e.png)
该样本的各个功能简单介绍如下(包括代码片段与解释说明):
一、获取目标线程
对自身进行解密,构造新的dll文件:
![图片[5]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/0d827d4b6285f58d7350b0abcaf900d7.png)
读取进程快照,查找explorer进程:
![图片[6]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/5fe0609ec74b2b913f06b31c5983c718.png)
获取将被注入的导入表数据:
![图片[7]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/0d5315bfa4db139c8dd161031060c7e7.png)
导入表中的函数包括:
![图片[8]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/39b2ce4bd6e1fc0361d653b9e69400be.png)
为了寻找一个可警告的线程,样本打开explorer.exe的所有线程(当前进程线程为0x26个)进行测试:
![图片[9]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/1a013c7b3df2f0def16e69d686ea1310.png)
创建一个事件:
![图片[10]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/964015676ad0751ac633ef6f5ed30aed.png)
在其他线程通过NtQueueAPCThread API请求执行ZwSetEvent:
![图片[11]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b7f5b31f2f1b1b74d9ff39820154922a.png)
然后调用WaitForMultipleObjects来选择第一个设置信号的线程:
![图片[12]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b1bbfe79d3a2f6ccc6fe41da31b231d0.png)
二、向目标写入注入代码的导入表
向全局原子表添加一个字符串,并验证其是否添加成功:
![图片[13]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/9d1ea2ce3d16c2d98491b985d560627f.png)
通过NtQueueAPCThread API使目标线程调用GlobalGetAtomW,它检索数据并将其放在目标线程ntdll模块的RW内存空间中(写入一个,删除一个):
![图片[14]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/43d0a922353b1b824ae3f3990e829ed1.png)
通过读取写入目标线程中的数据并与本地原始数据比较,来确定数据是否写入成功:
![图片[15]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b6cda8a3f904b114afd140a890549ec2.png)
将目标线程中的一块内存设置为RWE属性,通过多次和写入导入表同样的方式将解密出的汇编代码写入:
![图片[16]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/7dbc85e48365bb46558c6eb510ec5138.png)
完成后将内存属性改为RE:
![图片[17]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b0ff213f0b1d3b001e45e181b8d7af04.png)
用同样的方式将目标线程中GlobalGetAtomNameA的前7个字节进行更改,改为跳向shellcode的指令:
![图片[18]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/5ca293f46f64f0ed5431dadf868e7e95.png)
修改后的GlobalGetAtomNameA函数:
![图片[19]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/3fcfa2a934db9396668d1e27eeab9d89.png)
通过NtQueueAPCThread API使目标线程调用GlobalGetAtomA,由于该函数的前7个字节被更改,因此会执行shellcode:
![图片[20]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/f02d1419c2697e29ca7bdfbdc32a4f81.png)
shellcode部分:
恢复GlobalGetAtomA处的修改:
![图片[21]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/22cfdbee4716181b8ebf3e52f0536e8d.png)
将数据从原始样本处映射进内存,并复制到新申请的本地内存空间:
![图片[22]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/c1c743a1cfa5c5018a6fc55f65a468de.png)
![图片[23]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/067990b193d4638eb634dcd090b7c7dc.png)
修改复制过来的数据处的内存区域属性为读和执行:
![图片[24]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/32d797bfad8b79876f248955a5fcaa7a.png)
创建线程执行复制过来的代码,完成后设置事件,之后返回执行原线程。
![图片[25]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/fda46e0259fbe58d1fde4d42f99896d8.png)
该线程会获取IAT:
![图片[26]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/4e92ca87033a2d0a23987badb688a8cb.png)
将样本内存映射过来复制到自己内存后,转去执行(带有参数,参数为之前复制过来的数据所在地址):
![图片[27]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/5e2e1c1e26a1b954f9a4ac4b02370add.png)
检验参数是否有效:
![图片[28]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/3a99909f9cae15bcdba03c98a970c89e.png)
如果参数有效则创建线程:
![图片[29]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/8c59cd24273fdda3afbd43d9caeb51e8.png)
修改了密钥集文件,新建密钥对。该部分操作是为了后面劫持https通信:
![图片[30]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/079958bdaecab66789f1095130e8acca.png)
新生成密钥对:
![图片[31]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/3413173d28d1cd53deae833a03f2dd48.png)
读取C:\windows\System32目录下的exe文件:
![图片[32]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b45f966de070f6addc2e4a7e10f506e4.png)
从其导入表中挑选出了要伪造的目标文件,将其读取进内存查看导入表等内容:
![图片[33]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/5197e0c74a5abda5bda5eb8a5e055df9.png)
新创建了一个PE格式的文件(该文件为样本根据正常的动态链接库文件的导出表伪造的,用于实现dll劫持),将其保存在临时文件夹下:
![图片[34]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/03d73166020469e8c8b75ed5b13dc097.png)
创建了一些*.cmd文件,功能为给防火墙添加规则,允许explorer.exe监听本地端口:
![图片[35]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/10e6cfaaf13a12cbb64909c0d72cf602.png)
![图片[36]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/5d0b8cc1c4a4ff608d1d722385142b49.png)
将新创建的临时文件放入新建的文件夹并命名为appwiz.cpl(appwiz.cpl为样本选择伪造的目标文件,具体哪个跟调用它的应用程序有关,伪装成appwiz.cpl文件的恶意样本,获得执行权后执行内容和解密后的样本文件一样),并将OptionalFeatures.exe(调用appwiz.cpl的正常应用程序)放入该文件夹(OptionalFeatures.exe为目标应用程序,运行时会调用appwiz.cpl文件,恶意样本对其进行劫持),并通过注册表将正常应用文件设置为开机启动项。
C:\Windows\System32目录下有两个类似的文件夹,只有其中一个的应用程序被设置开机启动,另一个通过创建计划任务来执行,每隔一小时执行一次,实现内存永驻:
![图片[37]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/243d7f08dc071135804170015d94ee78.png)
![图片[38]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/463608eb6ae7610208b6327bcde973a2.png)
将创建的*.cmd文件路径设置到注册表项HKCU\Software\Classes\MSCFile\shell\open\command(Default):
![图片[39]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/ae47a52d78352f39c2ae3551b1e33388.png)
通过创建进程eventvwr.exe来执行各个cmd文件,由于之前对注册表相关项的修改,该进程会运行HKCU\Software\Classes\mscfile\shell\open\command下的程序,随后将与此有关的注册表项复原,执行一个清除一个:
![图片[40]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/60864f94e4dc55b5de0c98425faaf277.png)
![图片[41]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/69d9739006f741dca645044bb6121754.png)
完成以上操作后,样本开始执行网络部分的功能。
网络行为
该样本的网络功能为劫持443端口流量。
监听本地443端口,无限循环select,如果成功则accept后创建线程:
![图片[42]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/38913db09e0beffd39316a2f2cb2a25c.png)
![图片[43]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/c02145d7482aade339d37347d646da5c.png)
模拟连接之后,样本会创建一个新线程:
![图片[44]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/be9672b6faeee79cb80170922d211b91.png)
尝试接收数据:
![图片[45]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/53215c7f43400276295bac4498d9ea93.png)
收到数据后调用connect函数:(连接的IP地址是无效的0.0.0.0):
![图片[46]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/271f30f2322b6fcaa9fb3cd8dfc9f78c.png)
模拟连接后发现程序将443端口接收的数据发送给新连上的服务器,然后开始重复该接受和发送动作:
![图片[47]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/366569de08af7447da1cbfea0afe778c.png)
启动方式
创建类似这样的开机启动项:应用程序为正常程序,它的同目录下会有一个该应用程序运行时所需的动态链接库文件,在应用程序运行时对其进行劫持完成自启动:
![图片[48]-Dridex v4银行木马技术分析与防护方案](https://www.77169.net/wp-content/uploads/2017/03/b14e336931b0f2db554263474d73e296.png)
杀软对抗
样本通过动态链接库劫持获得执行,采用AtomBombing技术注入shellcode,注入完成后恢复原程序环境以创建线程方式运行恶意代码,不影响宿主程序正常执行,动态获取API增加检测和分析难度。注册表中通过将正常程序设置为开机启动项然后对其所需动态链接库进行劫持完成开机启动,不会被检测到。使用EVENTVWR.EXE和修改注册表的方式执行*.cmd文件。
防护方案
(1)有两个C:\Windows\System32\0485[随机]\目录,目录下分别有一个exe文件和它运行时所需的dll或cpl文件。
(2)在HKCU\Software\Microsoft\Windows\CurrentVersion\Run注册表项含有检测方法(1)中exe程序的启动项。
(3)查看计划任务列表,会发现样本创建的名为检测方法(1)中exe程序名的计划任务。
(4)explorer.exe程序会监听443端口。
(5)查看C:\Users\用户名\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-**文件是否被修改
(6)检查防火墙规则,如果感染木马,会发现名为“Core Networking – Multicast Listener Done (ICMPv4-In)”且程序名为“C:\Windows\Explorer.EXE”的规则。














暂无评论内容