(苹果多开软件)emotet发布6月份的最新版本
Emotet是一种主要通过垃圾邮件传播的特洛伊木马。到目前为止,已经有了很多版本的迭代。在早期版本中,它是通过恶意JavaScript文件传递的。在更高版本中,启用宏的Office文档从C2服务器下载,然后传播。
自从Emotet首次被发现以来,FortiGuard实验室一直在跟踪它。在这篇博客中,我将对5月初发现的新Emotet样本进行深入分析。这种分析主要包括:如何释放持久有效载荷,Emotet恶意软件如何与其C2服务器通信,如何识别可执行文件中硬编码的C2服务器列表和RSA密钥,以及如何对其收集的数据进行加密。PHP马来西亚
0x01恶意Word文档这个示例是一个Word文档。当你打开它,并启用宏,恶意软件将开始运行。
图1:执行PowerShell脚本
我们可以看到恶意Word文档文件中的VB脚本使用PowerShell创建了一个新进程。“-e”参数表示可以执行base64编码的字符串类型的命令。
图2:解码的PowerShell脚本
变量$ YBAAU_D是五个URL的列表。调用它从远程服务器下载有效负载并执行它。下表列出了所有恶意URL,并给出了每个URL对应的名称、md5值和有效载荷大小。
当我在5月初开始跟踪这一活动时,前两个网址是不可访问的,而其余三个网址是活动的。(URL对应的有效载荷都是PE文件)。
接下来,您需要选择其中一个进行进一步分析。这篇博文中分析的有效载荷是p4xl0bbb85.exe(MD5:a 97 cbbd 774 ca 6 e 61 cf 9447d 713 f 7 cf 5d)。
0x02第一层Payloadp4xl0bbb85.exe由定制的封装工具封装。执行后,它将创建三个新流程,如下图所示:
图3:执行有效负载p4xl0bbb85.exe后的流程树
首先,它将使用命令'—f02b3a38' (pid:2784)启动进程。然后将PE文件‘its portal . exe’写入路径c:users[XXX]appdata local its portal。接下来,执行itsportal.exe(没有附加参数)。执行后,使用命令'—c6857361 '启动进程(pid:1980)。最后,退出前三个进程,从硬盘上删除PE文件p4xl0bbb85.exe。左边的PE文件itsportal.exe是持久有效负载。
图4:持久有效负载
0x03持久有效负载分析在本节中,我们将继续分析持久有效负载itsportal.exe。此有效负载使用定制的打包工具。从入口点开始执行几个步骤后,程序进入函数sub_4012E0()。
图5:函数sub_4012E0()
下图是函数sub_4012E0()的C语言伪代码。
图6:函数sub_4012E0()的C语言伪代码
在这个函数中,恶意软件调用sub_401440()并使用VirtualAllocEx()分配一个新的内存空间(0x1D0000),并将这个内存的起始地址加上0x102f0设置为蹦床地址。
然后,在循环中,0xf080f8的第一个0x7B字节将被复制到这个新的内存空间中,然后复制数据部分。当达到0x37字节时,复制将停止。最后,复制到存储空间数据大小是0x10600。
接下来,函数sub_401560()将解密新内存空间中的数据。在这个过程中,蹦床码(trampoline code)也会被解密。然后程序会跳转到蹦床代码。最后,程序跳转到0x00401260执行相应的命令。
图7:跳转到0x00401260
如图8所示,程序会跳转到0x1E02F0执行蹦床代码。
图8。跳转到蹦床代码
1.分配一个新的内存空间,大小为0x10000 (0x1F0000),命名为内存空间A. 2。将0xf600字节数据从0xfD0124复制到存储空间A. 3。在步骤2中解密内存空间A的数据。解密算法如下图所示:
4.分配一个新的内存空间,大小为0x14000 (0x200000),命名为内存空间B. 5。将内存空间A中的前0x400字节数据复制到内存空间b的开头。将内存空间A中的所有数据段复制到内存空间B.7 .调用UnmapViewofFile函数(0x400000)通过调用进程的地址空间来取消文件映射。8.调用VirtualAlloc函数(0x400000,0x14000,MEM _提交| MEM _保留,页面_执行_读写)确保内存空间的执行和读/写权限。9.将0x14000字节的数据从内存空间B复制到0x400000。10.从trampoline地址跳回到实际入口点(0x4CA90)来执行指令。至此,开箱已经完成。
内存映射如下图所示,红框中有三个分配的内存空间和解包的程序。
图9:三个分配的内存空间和解包过程
最后,程序跳转到实际的入口点0x4C9A0。(注意:此时可以使用OllyDumpEx插件转储x64dbg中解包后的程序。得到解包后的程序后,就可以用IDA Pro进行静态分析了。)
图10:跳转到真正的入口点
到目前为止,我已经演示了如何解包Emotet恶意软件。在解包程序中,C2服务器列表和公钥分别被硬编码在0x40F710和0x40FBF0。
0x04与C2服务器的通信为了研究其与C2服务器的通信,我们首先需要得到C2服务器的列表。如第3节所述,C2服务器的列表是硬编码在可执行文件中的。
解包后,您可以看到C2服务器列表从偏移量0x40F710开始存储在缓冲区中,如图11所示:
图11。硬编码的C2服务器列表
全局变量存储在0x004124A0中。其结构如下:
struct g _ IP _ port _ list { DWORD * C2 _ list;DWORD *电流_ c2双字大小;DWORD current _ c2 _ index}变量c2_list指向缓冲区中硬编码的c2服务器列表。该列表中的每一项都包含一对IP地址和端口。大小为8个字节,其中前4个字节代表IP地址,后2个字节代表端口;变量current_c2指向当前选择的c2服务器;变量size是C2服务器列表的大小;变量current_c2_index是当前选择的c2服务器的索引。
该示例包含61台C2服务器,如下所示:
200.58.171.51:80(即C8 3A AB 33:00 50)189.196.140.187:80 222.104.222.145:443 115.132.227.247:443 190.85.206.228:80 216.98.148.136:4143 111.67.12.221:8080 185.94.252.27:443 139 . 59 . 1 9.157:80 159 . 69 . 211 . 211:8080 107 . 159 . 94 . 183:8080 72 . 47 . 248 . 48:8080 24 . 150 . 44 . 53:80 176 . 58 . 93 . 123:800在示例中,它向C2服务器发送一个HTTP POST请求。
图12:发送到C2服务器的流量
HTTP会话如下图所示。其中数据部分是URL编码的。
图13: HTTP会话数据
URL解码后发现数据有一层Base64编码。再次进行Base64解码,最后得到真实数据。在下一节中,我们将深入研究用于HTTP主体数据的加密算法。
图14:URL解码和Base64解码后的HTTP数据
0x05加密算法Emotet恶意软件收集主机名、运行进程列表等系统信息。下图显示了收集的系统信息:
图15:收集的系统信息
接下来,Deflate算法将用于压缩收集到的信息。
图16:使用Deflate算法压缩收集的数据
接下来,恶意软件使用会话密钥对压缩数据进行加密,将RSA公钥加密的会话密钥(AES)、哈希值和加密数据打包在一起,并存储在以下结构中。
图17:打包的数据
RSA公钥加密的会话密钥为0x60字节,哈希值为0x14字节。
这三部分数据打包后,需要依次进行Base64和URL编码,形成http主体数据,最终发送到C2服务器。
图18。HTTP正文数据
到目前为止,Emotet恶意软件与C2服务器通信所使用的数据加密算法的深入分析已经完成。
至于后半段的交流,则相反。Emotet恶意软件首先解密HTTP响应数据,然后使用Deflate算法解码相应的数据,最后完成对来自C2服务器的响应号的处理。
另外,RSA密钥在解包程序中位于0x0040FBF0,按照ASN.1 DER编码规则进行硬编码。其大小为0x6A字节。
图19。RSA密钥是使用DER规则硬编码的
0x07结论Emotet是一个精心设计的恶意软件。它使用定制的高级封装工具和复杂的加密算法来完成与C2服务器的通信和其他高级功能,并从C2服务器下载攻击载荷或其他恶意软件载荷,以窃取受害者的敏感数据。
我们将继续追踪Emotet与其C2服务器之间的活动。