是什么原因让Dridex可以进行如此疯狂的繁衍
2019-08-05 11:53:09 Author: www.4hou.com(查看原文) 阅读量:113 收藏

微信截图_20190803175902.png

前言

2011年被发现至今,Dridex银行木马已经成为最流行的银行木马家族。光在2015年,Dridex造成的损失估计就超过了4000万美元,与其他银行木马家族不同,因为它总是在不断演变并让其变得更加复杂。在2011年首次被发现时,Deidex就已经能够通过充当代理的后端服务器来隐藏其主要的命令与控制(C&C)服务器,从而逃避检测。鉴于Deidex的新版本会完全迭代旧版本,并且每次新的变异都会让Deidex的攻击技术进一步更新,所以我们可以得出结论,Deidex的背后一定有一个固定的研发团队在对其持续的进行更新和维护。

而在2016年,Dridex的loader变得更加复杂,加密方式发生了变化,引入了二进制loader协议,以及包含二进制格式的配置文件的<settings>部分。

紧接着,Dridex的第四个版本在2017年初被发现,它具有与第三版相似的功能,但开发者已经停止了使用配置文件,并不再数据包中使用XML格式,而且还返回到二进制文件。由于loader现在每周最多运行两天,因此对新样本的分析显得更加困难。这与Lurk类似, Lurk的loader一周只运行了几个小时。

最新的Dridex版本分析:伪装和代码注入技术

刚消停了一年,在2019年7月,又有研究人员观察到的Dridex的新变体伪装成合法的Windows系统进程,之所以要这么做,是因为幕后的开发者又对Dridex的版本进行了迭代,以免攻击被发现。经研究,该变体在其整个攻击进程中使用了五种代码注入技术:AtomBombing、DLL命令劫持、Process Hollowing技术、PE注入和线程执行劫持。

注:2016年10月,网络安全公司EnSilo的研究团队公开了一个支持所有Windows系统的代码注入方法,将其命名为AtomBombing。据说该方法能够绕过大多数的安全软件,并且利用的系统缺陷很难被修复。

代码注入技术用于合法的Windows可执行文件,增量整数值被提供给命令行,以挂起进程执行特定任务。

自2019年6月初Emotet木马和AZORult的攻击活动被遏制以来,Dridex和勒索软件活动变得更加突出了。2019年7月,网络安全公司Bromium的研究人员观察到一次Dridex银行木马的钓鱼活动。非常幸运,这次攻击的有效载荷已被Bromium的研究人员的捕获。通过这些样本,我们可以完整分析其攻击链并了解了攻击是如何工作的。在这篇文章中,我们将详细介绍其攻击链的各个阶段,以展示Dridex如何使用五种代码注入技术将自己伪装成合法的Windows进程(MITRE ATT&CK技术T1036)来避免检测。

MITRE ATT&CK是一款可以加速检测与响应的最新工具(对手战术及技术的公共知识库),可以深入研究对手行为,安全分析师可利用该信息在网络攻防战中占据有利地位。这是在创建对手及其相关战术、技术及流程(TTP)知识库方面迈出的一大步。

在开始分析之前,我们将首先演示在微型VM中执行最新的Dridex示例,以及Bromium如何通过隔离攻击并保持系统的完整性来保护其用户。

以下是视频中显示的6部分内容:

1.Bromium安全平台在单独的微型VM中打开每个文档;

2.Bromium Live View显示了一个正在运行的微型VM列表;

3.我们可以在Live View中看到invoice.doc文件在微型VM中被打开;

4.当文件关闭时,微型VM以及任何恶意软件都会一起被销毁;

5.从攻击样本中捕获证据,包括任何映射到MITRE ATT和CK框架的行为;

6.在微型VM的攻击周期内发出的严重警告的详细视图有助于安全团队调查恶意软件的行为,以便了解攻击者的动机。

攻击行为分析

文件名:Invoice.doc

大小:75.5 KB(77312字节)

MD5:0fe77bc5e76660ad45379204aa4d013c

SHA1:c338882c64eb012855096e73edfec3c733ea9053

SHA256:72da2959520e824a617a5a174b1bc1a8bd6d83daf83eabb5937640f1efa37bcd

2.png

上图为2019年7月观察到的Dridex的整个攻击周期

第1阶段:下载程序

Dridex下载程序是作为Microsoft Word 97-2003文档(. doc)被提供的,该文档使用密码123加密。它包含两个Visual Basic for Applications(VBA)宏子例程:Document_Open和main。要查看宏代码的内容,可以在Bromium Secure View中的Microsoft Word VBA编辑器中打开它。

3.png

Document_Open和main子例程

尽管两个子程序都被进行了轻微地模糊处理,但是在不调试代码的情况下,我们还是可以识别出许多显示下载程序如何工作的字符串。比如,可以在下图的左侧看到宏项目包含一个名为a0woxm的用户表单。在表单内部,嵌入的文本属性包含一个可扩展样式表语言(XSL)脚本。main子例程会从表单创建一个名为aXtIkN的对象,并将其text属性赋给字符串变量aHwPzG。之后,它将aHwPzG和变量agvpx一起传递给方法adWspA8。字符串变量agvpx包含XSL文件的路径(C:\\Windows\\Temp\\aXwZvnt48.xsl)。方法adWspA8从Scripting.FileSystemObject创建一个TextStream对象,并调用CreateTextFile方法将数据从aHwPzG写入文件aXwZvnt48.xsl。

4..png

main子例程中突出显示的部分,该子例程将嵌入的XSL脚本写入用户的%TEMP%目录中的文件

为了避免被静态检测到,该子例程包含引用Windows Management Instrumentation命令行(WMIC)命令的反向字符串。 StrReverse函数用于在宏执行期间反转这些字符串。变量a5rk9包含值“wmic os get / format:”,它与变量agvpx结合后,会构建一个shell命令:

wmic os get /format:"C:\\Windows\\Temp\\aXwZvnt48.xsl“

5.png

main宏中的Shell命令,它使用WMIC执行XSL文件

XSL是一种与CSS类似的语言,用于表示XML文档的格式。至关重要的是,它支持脚本语言,包括JScript和VBScript,允许攻击者使用该语言来执行恶意代码。通常,XSL脚本使用Windows脚本主机运行,但也可以使用WMIC执行。

此时,下载程序会使用WMIC执行包含JScript的XSL脚本,该脚本负责下载Dridex的有效载荷。这种技术属于微软的Type III attack无文件攻击分类法,并展示了MITRE ATT&CK技术T1120。WMIC可以在内存中处理和执行本地和远程托管的XSL脚本,这种技术通常称为SquiblyTwo。使用WMIC,即使系统上禁用了Windows脚本主机,攻击者还是可以执行嵌入在XSL文件中的JScript。

XSL脚本包含两个函数,函数aawg1负责创建XMLHTTP对象,并发送一个HTTP GET请求以从URL hxxps://carmelavalles[.]com/site/wp-admin/chrome.bin下载Dridex可执行文件。然后,它创建一个ActiveX流对象(ADODB.Stream),并将缓冲区设置为从早期HTTP请求接收的响应对象。接下来,它通过指定数组中的第五个元素从函数axas5v9中检索方法名称SaveToFile。然后,它调用SaveToFile方法,将文件名指定为“c:\windows\temp\awMiOFl[.]exe”和选项2(adSaveCreateOverWrite)。此选项意味着如果已存在具有相同名称的文件,则流对象将覆盖目标文件。将文件保存到磁盘后,XSL脚本将自行删除。

6.png

XSL脚本的内容

在对pestudio中被删除的有效载荷的快速分析后,研究人员发现它是恶意的,包括使用列入黑名单的节名称:rdata3,.qdata,aei和CODE2。

7.png

由pestudio识别的恶意指示符

然后我们将它与另一个已经被删除的Dridex有效载荷进行比较,发现两者的节数量相同。除了.text部分外,所有部分都具有相同的原始文件大小。这表明攻击者可能使用了多态加载器来传播Dridex。

8.png

文件部分与另一个Dridex示例的比较,表明使用了多态加载器

删除的有效载荷awMiofl.exe在执行时,会将其自身解压缩到内存中并进入循环状态,循环时间将近9分钟。在每次循环中,先使用字符串“Installing …”或“Installed”调用OutputDebugStringW,然后调用Sleep函数大约10毫秒。

9.png

在Dridex的解包例程期间捕获的频繁OutputDebugStringW API调用

退出循环状态后,将枚举以下注册表项以收集有关系统的基本信息,包括CurrentBuild,CurrentVersion,InstallTime和InstallDate。

1.\Registry\Machine\Software\Microsoft\Windows\CurrentVersion\Policies\System;

2.\Registry\Machine\Software\Microsoft \Windows NT\CurrentVersion;

第2阶段:使用AtomBombing进行进程注

接下来,awMiofl.exe打开并使用enSilo在2016年发现的名为AtomBombing的技术将代码注入explorer.exe。它的工作原理是利用Windows全局原子表和异步过程调用(APC)将代码注入远程进程。

10.png

Dridex打开并使用AtomBombing代码注入技术将自身注入explorer.exe

然后,awMiofl.exe遍历C:\ Windows \ System32目录并使用文件名 C:\Windows\System32 * .exe调用FindFirstFileA API。文件名包含一个通配符,以匹配System32目录中的所有.exe文件。对于每个匹配项,它将打开文件并读取其依赖的动态链接库(DLL)。如果它与一个DLL列表匹配,那么它会以挂起模式生成进程并终止。我们怀疑Dridex这样做是为了准备下次的代码注入,但在我们分析的样本中,Dridex还是终止了该进程,这与我们的预期不符。

第3阶段:DLL劫持

之后,它会在位置%APPDATA%处创建一个随机命名的目录。创建目录后,它将C:\Windows\System32复制到合法系统可执行文件的文件夹,并在其导入地址表(IAT)中复制与可执行文件库依赖项匹配的恶意64位DLL,DLL劫持技术之所以流行就是因为可以滥用Window的DLL加载顺序。默认情况下,如果禁用SafeDllSearchMode,DLL加载顺序将按照下面列出的目录的顺序查找所需的DLL:

1.已加载应用程序的目录路径;

2.当前目录;

3.系统目录;

4.16位系统目录;

5.Windows目录;

6.PATH环境变量中列出的目录。

由于awMiofl.exe将恶意DLL复制到与合法可执行文件相同的目录,因此在运行可执行文件时,它也会将恶意DLL加载到Roaming文件夹而不是System32中的合法DLL。

11.png

位于%APPDATA%\ RC17zE位置的恶意DLL和Windows二进制文件的文件写入事件

12.png

Dumpbin输出显示EhStorAuthn.exe对UxTheme.dll的依赖关系

第4阶段: 构建持久性攻击

之后,awMiofl.exe会通过创建名一个为Bpnayitifvdws的计划任务来实现持久性攻击,该任务被配置为每小时运行一次 C:\Users\[Redacted]\AppData\Roaming\RC17zE\EhStorAuthn.exe。

13.png

创建一个名为Bpnayitifvdws的计划任务

14.png

执行计划任务Bpnayitifvdws

第5阶段:更多的DLL劫持

Explorer.exe在用户的%TEMP%目录中创建批处理文件x3un.cmd,并删除恶意DLL NqE850.tmp。然后启动cmd.exe并运行x3un.cmd。 X3un.cmd包含将已删除的DLL文件NqE850.tmp和合法的Windows二进制systemreset.exe从System32目录复制到用户的Roaming文件夹中新创建的目录C:\Users\[Redacted]\AppData\Roaming\0l78l。

15.png

Explorer.exe在%TEMP%中删除恶意DLL和批处理文件,然后运行批处理文件。

16.png

X3un.cmd将恶意DLL和合法Windows二进制文件复制到%APPDATA%文件夹,以准备DLL劫持。

Explorer.exe多次重复此步骤以复制不同的恶意DLL和合法的Windows二进制文件:

17.png

C:\Users\%USERNAME%\AppData\Roaming中的目录结构,每个文件夹包含恶意DLL和合法Windows二进制文件。

使用DLL劫持,恶意软件可以绕过杀毒软件的检测和响应工具,这是因为启动的过程是由Microsoft签署的。我们检查了VirusTotal,由于它们的多态性,这些被删除的DLL都不会有可以被发现的哈希。如果DLL加载期间的杀毒扫描结果是干净的,杀毒软件将不会标记它,直到它扫描进程内存。

18.png

被删除的dll是64位二进制文件,即使在15天后也没有检测到VirusTotal中的任何哈希值。

Explorer.exe在 run key下创建一个名为Fetkovwkmarbx的注册表项,其值为C:\Users\[Redacted]\AppData\Roaming\0l78l\systemreset.exe。这意味着每次Windows启动时都会启动Dridex,从而允许恶意软件在重新启动后保持攻击性。

19.png

将条目Fetkovwkmarbx添加到注册表中的 run key,以便在用户登录重启后持续发起进攻

第6阶段:创建挂起的进程

Explorer.exe以挂起模式从 C:\Windows\System32目录生成多个合法的Windows二进制文件,以执行远程进程代码注入和Process Hollowing技术。

20.png

explorer.exe从 C:\Windows\System32目录创建的挂起进程21.png

Explorer.exe对挂起的进程执行代码注入

文件夹名称的伪装过程

Dridex试图通过创建一个带有尾随空格的目录(“C:\Windows ”)来绕过应用程序白名单的限制。此技术滥用了Windows API处理具有尾随空格的MS-DOS样式路径的方式。处理MS-DOS样式路径时,Windows API调用一个名为RtlGetFullPathName_U的辅助函数,该函数会从路径中删除任何尾随空格。

Explorer.exe创建一个目录“C:\Windows \System32”,并从真正的System32目录中复制合法的whoami.exe程序以及名为Version.dll的恶意DLL,然后使用以下命令行启动它:

“C:\Windows \system32\whoami.exe” 1188 21993FF418 1

你可以通过在命令提示符下运行以下命令来自己进行尝试,这将在C:\中创建一个Windows目录,但具有尾随空格:

md “\\?\C:\Windows ”

rd /s /q “\\?\C:\Windows ”(注意尾随空格)

22.png

如何使用前缀“\\?\”创建带有尾随空格的目录

23.png

Dridex通过Windows API滥用MS-DOS路径处理,将白名单路径与尾随空格一起列入白名单

如果Dridex在系统上运行,它最终会以挂起模式从 C:\Windows\Syswow64 启动进程,目的就是进行代码注入。传递给流程的参数如果增加一次,则表示它执行特定任务。它还会在定期间隔后使用新的二进制路径修改并触发计划任务Bpnayitifvdws。

24.png

在 C:\Windows\Syswow64以挂起模式启动的合法Windows二进制文件,参数为1

25.png

在C:\Windows\Syswow64以挂起模式启动的合法Windows二进制文件,参数为2

26.png

Dridex攻击周期中产生的所有进程

总结

基于从微型VM捕获的事件,我们可以看到Dridex至少执行了至少五种不同类型的代码注入:

1.DLL命令劫持;

2. Process hollowing;

3.PE注入;

4.线程执行劫持;

5.AtomBombing;

攻击指标(IOC)

微信截图_20190803180525.png


文章来源: https://www.4hou.com/malware/19550.html
如有侵权请联系:admin#unsafe.sh