EMOTET深度剖析 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

EMOTET深度剖析

申博_行业观察 申博 933次浏览 未收录 0个评论

导语:​FortiGuard研究人员对5月份发明的Emotet歹意软件样本举行了剖析。

FortiGuard研究人员就延续存眷Emotet歹意软件的生长,本文对5月初发明的Emotet样本举行深度剖析,详细包罗解包persistent payload、与C2服务器的通讯、辨认硬编码在可实行文件中的C2服务器列表和RSA密钥、以及怎样加密网络的数据。

歹意word文档

该样本是一个word文档文件。翻开word并启用宏后,歹意软件就会最先实行。

EMOTET深度剖析

图1. 实行PowerShell剧本

能够看出歹意word文档中的VB剧本能够用PowerShell建立新历程。PowerShell的-e选项注解吸收base64编码的字符串版本的敕令。

解码的PowerShell剧本如图2所示:

EMOTET深度剖析

图2. 调试解码的PowerShell剧本

变量$YBAAU_D是一个含有5个URL的列表,能够用来从长途服务器下载payload并实行。下表列出了每一个歹意URL、以及从对应URL下载的payload名、md5值和payload巨细。

研究人员剖析5月初的样本时发明,前2个URL已无法接见了,剩下3个URL依然能够接见,这3个payload都是PE文件。

EMOTET深度剖析

然后,研究人员对个中一个payload举行深切文件。本文的剖析是基于payloadp4xl0bbb85.exe(md5: a97cbbd774ca6e61cf9447d713f7cf5d)的。

第一层payload

payloadp4xl0bbb85.exe是用定制的packer打包的。实行后,会建立三个历程,以下图所示:

EMOTET深度剖析

图3. payload p4xl0bbb85.exe实行后的历程树

起首用敕令行–f02b3a38启动历程(pid:2784),然后将PE文件itsportal.exe写入文件夹C:\Users\[XXX]\AppData\Local\itsportal\中。然后,实行itsportal.exeitsportal.exe实行后就能够用敕令行–c6857361启动历程pid:1980。末了,退出前3个建立的历程,并将PE文件p4xl0bbb85.exe从硬盘中删除。PE文件itsportal.exe就是persistent payload。

EMOTET深度剖析

图4. persistent payload

Persistent Payload剖析

Payload itsportal.exe有一个定制的packer。研究人员追踪了进口点的几个步调,发明顺序进入了函数sub_4012E0()

EMOTET深度剖析

图5. 函数sub_4012E0()

下面是函数sub_4012E0()的C言语伪代码透露表现:

EMOTET深度剖析

图6. 函数sub_4012E0()的C言语伪代码透露表现

在该函数中,歹意软件会挪用函数sub_401440()来用VirtualAllocEx()分派新的内存地区(0x1D0000),设置内存的最先地点加0x102f0作为trampoline address。

然后,在循环中,起首复制0xf080f8的数据的0x7B字节到新的内存地区,然后继承复制数据。当字节到达0x37时,就不会在复制到新的内存地区。复制到内存地区的数据巨细为0x10600

然后,用函数sub_401560()来解密新的内存地区中的数据,此时trampoline代码就被解密了。然后,就看到顺序会跳转到trampoline code。末了,顺序跳转到0x00401260来实行指令。

EMOTET深度剖析

图7. 跳转到0x00401260

如图8所示,顺序会跳转到0x1E02F0来实行 trampoline代码。

EMOTET深度剖析

图8. 跳转到trampoline code

trampoline code的重要作用是:

  1. 分派巨细为0x10000的心的内存地区(0x1F0000),并命名为region A;

  2. 复制0x1D0124的数据的0xf600字节到region A;

  3. 解密内存region A的数据,解密算法以下:

EMOTET深度剖析

  1. 分派巨细为0x14000的新的内存地区(0x200000),并命名为region B;

  2. 复制region A的数据的前0x400字节到内存region B的最先;

  3. 复制region A的一切数据段到内存region B;

  4. 经由过程挪用历程的地点空间来挪用函数UnmapViewofFile(0x400000)来消除其与文件的映照;

  5. 挪用函数VirtualAlloc(0x400000,0x14000,MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)来实行、读写内存地区;

  6. 复制内存地区region B数据的0x14000字节到0x400000;

    MyBB <= 1.8.20: From Stored XSS to RCE

    这篇文章展示了在MyBB 1.8.21 版本之前,攻击者能够通过向管理员发送恶意私信或者创建一个恶意帖子来接管任意托管主机 MyBB是一个开源论坛软件,软件地址:https://mybb.com/ 影响 我们发现,由于在1.8.20及其之前版本对于所发帖子和私信

  7. 从trampoline代码的实在进口点(0x4CA90)跳转到实行指令。此时,解包事情就完成了。

下图是内存图,个中标清楚明了分派的内存地区和解包的顺序。

EMOTET深度剖析

图9. 3个分派的内存地区和解包的顺序

末了,顺序会跳转到实在的进口点0x4C9A0。

EMOTET深度剖析

图10. 跳转到实在的进口点

这就是怎样解包Emotet歹意软件。在解包的顺序中,C2服务器列表硬编码在offset0x40F710处,公钥硬编码在offset 0x40FBF0处。

与C2服务器通讯

为了观察与C2服务器的通讯,研究人员起首猎取C2服务器列表。C2服务器是硬编码在可实行文件中的,解包后,研究人员看到了offset0x40F710处生存的C2服务器列表,如图11所示。

EMOTET深度剖析

图11. 硬编码的C2服务器列表

全局变量生存在0x004124A0处,构造以下所示:

struct g_ip_port_list
{
                  DWORD *c2_list;
                  DWORD *current_c2;
                  DWORD size;
                  DWORD current_c2_index;
}

成员变量c2_list指向硬编码的C2服务器列表缓存,列表中的每一项都包罗IP地点和端口对。巨细为8字节,前4个字节透露表现IP地点,以后的2个字节透露表现端口。成员变量current_c2指向以后挑选的C2服务器。成员变量size透露表现C2服务器列表的巨细,成员变量current_c2_index透露表现C2服务器列表中以后选定的C2服务器的索引。

样本中共含有61个C2服务器,分别是:

· 200.58.171.51:80

· 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.19.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:8080

· 186.139.160.193:8080

· 217.199.175.216:8080

· 181.199.151.19:80

· 85.132.96.242:80

· 51.255.50.164:8080

· 103.213.212.42:443

· 192.155.90.90:7080

· 66.209.69.165:443

· 109.104.79.48:8080

· 181.142.29.90:80

· 77.82.85.35:8080

· 190.171.230.41:80

· 144.76.117.247:8080

· 187.188.166.192:80

· 201.203.99.129:8080

· 200.114.142.40:8080

· 43.229.62.186:8080

· 189.213.208.168:21

· 181.37.126.2:80

· 109.73.52.242:8080

· 181.29.101.13:80

· 190.180.52.146:20

· 82.226.163.9:80

· 200.28.131.215:443

· 213.172.88.13:80

· 185.86.148.222:8080

· 190.117.206.153:443

· 192.163.199.254:8080

· 103.201.150.209:80

· 181.30.126.66:80

· 200.107.105.16:465

· 165.227.213.173:8080

· 81.3.6.78:7080

· 5.9.128.163:8080

· 69.163.33.82:8080

· 196.6.112.70:443

· 37.59.1.74:8080

· 23.254.203.51:8080

· 190.147.116.32:21

· 200.45.57.96:143

· 91.205.215.57:7080

· 189.205.185.71:465

· 219.94.254.93:8080

· 186.71.54.77:20

· 175.107.200.27:443

· 66.228.45.129:8080

· 62.75.143.100:7080

然后,剖析发送到C2服务器的流量。在样本中,发送给C2服务器的数据是以HTTP POST要求的体式格局发送的。

EMOTET深度剖析

图12. 抓取的发给C2服务器的流量

HTTP session以下图所示。HTTP body数据是用URL编码算法编码的:

EMOTET深度剖析

图13. HTTP session数据

在实行URL解码后,能够看出数据是用base64编码的。经由base64解码后,能够看到实在的数据是经由加密的。下一局部引见HTTP body数据运用的解密算法。

EMOTET深度剖析

图14. 解码的HTTP body数据运用URL解码和base64解码

加密算法

Emotet歹意软件能够网络诸如host name、运行在受沾染的机械上的历程列表等信息。下面是网络的数据集:

EMOTET深度剖析

图15. 网络的数据的构造

然后,将网络的数据用Deflate算法紧缩:

EMOTET深度剖析

图16. 用Deflate算法紧缩数据

然后,歹意软件会用session key将图16中的紧缩数据举行加密,并用AES和session key、哈希值和加密的数据打包,session key是用RSA公钥算法加密的。

EMOTET深度剖析

图17. 打包后的数据构造

用RSA公钥加密的Session key巨细为0x60字节,哈希值的巨细为0x14

将这3局部数据打包后,歹意软件会继承用base64来编码打包的数据,然后用URL编码算法举行编码。末了就组成了要发送给C2服务器的http body数据。

EMOTET深度剖析

图18. HTTP body data

从通讯的角度来看,顺序必需要处置惩罚来自C2服务器的相应数据,起首解密HTTP相应数据,然后用Deflate算法解码对应的数据。

RSA密钥硬编码在解包的顺序的offset0x0040FBF0处,巨细为0x6A字节。

EMOTET深度剖析

图19. 硬编码的RSA密钥

结论

Emotet是一款庞杂的歹意软件,个中运用了高等的定制packer和庞杂的加密算法来与C2服务器举行通讯,并含有其他高等功用。它会从C2服务器提掏出进击payload和其他相干的歹意软件payload。这些进击payload的目标都是从受害者处盗取敏感信息。

预报:下一篇关于Emotet的文章将引见怎样解包Emotet可实行文件并从可实行文件中提掏出硬编码的C2服务器列表和RSA密钥。

本文翻译自:https://www.fortinet.com/blog/threat-research/deep-dive-into-emotet-malware.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明EMOTET深度剖析
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址