一、Emotet银行家木马分析与检测介绍 Emotet从2014年出去至2021年为止历经多次变种,本次课题选取几个比较典型的IOC进行分析,试图从主机、流量以及代码审计层面分析该木马的行为特征。 Emotet木马的攻击流程大致如下:Emotet利用垃圾邮件分发带有宏病毒的word文档,该word文档会调用powershell下载两个有效载荷,一个是包含预定银行列表的配置文件,另一个是Emotet的攻击有效载荷,该有效载荷包含外层的混淆器以及内层的恶意代码。
样本IOC 复制代码 隐藏代码宏病毒:a268e9e152c260a0e80431aa8d6df187d9f24a1b6be71328ea14320436083f51
宏病毒下载的payload:7d6057f8d2dbdfd00fc109da6e428c11979edb5e958023d4c201b0d3931124ae
进程树如下
代码审计分析特征 Emotet是一种主要通过垃圾邮件进行传播的木马。传播至今,已进行过多次版本迭代。早期版本中,它通过恶意JavaScript文件被投递。在后来的版本,演变为使用启用宏的Office文档从C2服务器下载后进行传播,本本分分析主要包括:如何宏病毒分析、释放持久性payload,Emotet恶意
软件如何与其C2服务器进行通信,如何识别可执行文件中的硬编码C2服务器列表
1.宏病毒 这个受感染的文档中包含宏,它的宏中包含了一些恶意 VBA 代码。一旦用户点击了 Enable Content 按钮,即""启用宏""文件中的恶意的 VBA 代码就会自动运行。经过一段时间后,它会生成并执行一个很大的 PowerShell 文件。生成的 PowerShell 代码会从几个动态生成的 url 下载真正的 payload
(1)在宏代码开始加载的时候断下来,按住SHIFT键,点击"启用内容"按钮,然后松开SHIFT。然后按下ALT+F11,打开宏编辑窗口

(2)通过调试宏代码后分析,Cnt0qpf_e5r值中传递的就是利用powershell从PowerShell 代码会从几个动态生成的 url 下载真正的 payload,显而易见,该payload使用了base64编码技术

(3)通过base64在线编码对payload进行解码,解码后的payload如下图所示。发现该payload被混淆,通过代码来看,发现$Ml3evql即为恶意链接。点击工具栏中的运行,先运行一下该脚本,然后在命令行中输入$Ml3evql,查看该变量的值

变量$Ml3evql是一个包含七个 URL 的列表。它使用它们从远程
服务器下载有效负载payload
复制代码 隐藏代码该脚本执行的流程为:
1.创建目录为下面下载的文件
提供路径
C:UsersqwZ3tnc5dL6z3oo3.dll
2.从下面
7个恶意链接中下载DLL文件
http:/
/insvat.com/wp-admin/Dw/
http:/
/littleindiadirectory.com/l/TOYuT/http:/
/blogs.g2gtechnologies.com/blogs/v/http:/
/pattayastore.com/visio-network-1hmpp/j5/
http:/
/rsimadinah.com/wp-content/16qT/
https:/
/tenmoney.business/wp-content/nhW/
https:/
/sureoptimize.com/well-known/QsEs/
3.调用rundll32执行动态链接库中的Control_RunDLL导出函数
2.Payload(1)查看该payload的基本信息
(2)使用Process Moinitor查看进程相关信息Process Moinitor先进行过滤,首先过滤出Process Create和Process Exit,能够快速看出当病毒释放时,发生了什么,并且什么正在创建

从Process Moinitor发现该TCP的一些连接请求
复制代码 隐藏代码119.
59.
124.
163:
808081.
169.
140.
14:
44346.
101.
212.
195:
808068.
169.
49.
14:
7080103.
31.
232.
93:
443(3)使用x64dbg手动脱壳1.脱壳
为新进程清空了350000内存地址

dump下该部分。右键->Dump Memory to File,命名为119_00350000.bin
复制代码 隐藏代码SHA256:f
08cc
76ad
0f
070783c
40d
97065fc
2ca
09c
49a
5d
9cdddeede
58cb
48e
278f
51e
40119_00350000.bin文件属性如下

使用PEStudio打开119_00350000.bin,如下四张图所示,发现这是一个PE文件,并且只有一个库和导入表并且字符串也很少,猜测可能依然存在壳或者混淆,将该文件后缀修改为exe



(4)使用x64dbg继续分析脱壳后的文件即119_00350000.exe为很多局部变量开辟了大量的堆栈空间,

双击上图中两个连续的call调用的函数,能看到一堆静态字符串,Windows API是在运行时被动态解析的,下图中的这些字符串就是恶意软件的哈希,即API调用了什么,它将通过一些实例,在那里它将实际解密哈希的含义

在两个call之后的指令处即move处下断点—>按F9,运行到该断点处,上面的windows API会一一解析,就能够看到这些Windows API的调用了

在symbols处看到有更多的导入库

打开process Monitor查看进程,设置过滤器,重点关注119_00350000.exe对文件、注册表、进程进行的一些操作

获取Windows文件夹的位置

获取命令行参数,内存中存储的参数为"--8c7fd39f",

将从命令行中获取到的命令参数和内存中存储的参数进行比较,如果相等就进入到B8AB即核心代码不相等就进入D26C即死循环
复制代码 隐藏代码JNZ(或JNE)(jump if not zero, or not equal),汇编语言中的条件跳转指令。结果不为零(或不相等)则跳转。

通过修改EAX的值为00000000进入到核心代码B8AB处继续分析

进入到B65E继续分析

创建了一个互斥体变量

又创建了一个互斥体变量

使用CreateEventW函数创建两个线程,利用SignalObjectAndWait函数使得两个线程通过上图中创建的这两个互斥体变量来同步,如把一个互斥体变量设置成有信号的状态,然后等待另一个互斥体变量的信号,即原子操作,最后释放互斥体变量,关闭句柄

获取HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell FoldersLocal AppData注册表中的数据,为%USERPROFILE%AppDataLocal

获取将要复制的文件(即病毒样本)的基本信息

查询HKLMSystemCurrentControlSetControlComputerNameActiveComputerNameComputerName的值,即计算机的名字

进入到D441函数继续分析
下图显示为选择语句,符合条件则跳转到第二个SHGetFolderPathW函数,获取C:UsersasusAppDataLocal路径

删除文件,虽然调用了&DeleteFileW函数,但是此时恶意文件并没有被删除

获取目录的文件
系统属性,并在该目录下创建文件夹

如下图所示,在C:UsersasusAppDataLocal目录下创建了makermferror文件夹
进入0108DAA9继续分析

获取临时文件夹路径以及临时文件名

在C:UsersasusAppDataLocalTemp文件夹下发现新的临时文件

下面的代码的含义是查询C:UsersasusAppDataLocalmakermferrormakermferror.exe是否存在,不存在则返回

查询C:UsersasusAppDataLocalmakermferrormakermferror.exe:Zone.Identifier路径,返回的为空
(5)核心代码分析红色方框为函数进入核心代码

创建服务——打开已存在的服务——>修改服务的信息配置——>启动服务

退出程序
(5)查看外联的服务器使用010 Editor打开119_00350000.bin,MS-DOS 文件可通过文件开头的 ASCII 字符串“MZ”(十六进制:4D 5A)(“幻数”)来识别。“MZ”是 MS-DOS 的主要开发者之一 Mark Zbikowski 的首字母缩写。所以我们必须用十六进制编辑器清除多余的部分。

编辑—>删除。在过滤掉不必要的十六进制数据后,我们解压了 Emotet,保存为119_00350000.exe

在调试器中重新运行解压版本的恶意软件之前,使用 PE-Bear查看 PE 文件是否已映射。通过查看 .text 部分,该文件似乎未映射。通常映射时,.text 部分全为0。

使用x64dbg打开119_00350000,我们现在可以尝试找到其他 C2 服务器。为此,我们将使用从行为分析中收集的第一个 IP (119.59.124.163:8080),然后通过反转 IP 163 124 59 119 → A3 7C 3B 77 并转换为十六进制代码中的模式十六进制

找到了一个匹配项

双击找到的匹配项

右键.data—>Dump Memory to File,将dump下的文件保存为119_00350000_00250000.bin

该文件119_00350000_00250000.bin的属性
复制代码 隐藏代码SHA256ebb06ad0365a106a65e0b21a76de3e19965775034de62aeb15d622dc57e68e11

通过python脚本提取出其中的所有ip和端口信息

在此代码中,仅使用了 Emotet 已知的 4 个主要端口。
# 01BB = 443 # 1F90 = 8080 # 0050 = 80 # 1BA8 = 7080
复制代码 隐藏代码p = re.compile(b
"(....(xbbx01|x90x1f|x50x00|xa8x1b))")
但可以修改它以查找通过 Emotet 使用的 OSINT 已知的更多端口(如 20、21、22、30、53、143、465、990、993、4143、7080、8090、8443、50000 等),通过将其转换为十六进制。
提取出的ip和端口
复制代码 隐藏代码103.
31.
232.
93:
44368.
169.
49.
14:
708046.
101.
212.
195:
808081.
169.
140.
14:
443119.
59.
124.
163:
808050.
28.
51.
143:
808086.
42.
166.
147:
8051.
15.
8.
192:
8080200.
58.
171.
51:
8023.
92.
22.
225:
7080119.
92.
51.
40:
8080138.
68.
106.
4:
70805.
77.
13.
70:
8071.
244.
60.
231:
7080186.
1.
41.
111:
443185.
86.
148.
222:
8080190.
230.
60.
129:
8080200.
51.
94.
251:
143109.
104.
79.
48:
808080.
85.
87.
122:
808081.
213.
215.
216:
50000139.
5.
237.
27:
443109.
169.
86.
13:
808077.
55.
211.
77:
8080183.
82.
97.
25:
8046.
29.
183.
211:
8080190.
104.
253.
234:
990182.
188.
39.
68:
80142.
93.
82.
57:
808046.
163.
144.
228:
8062.
75.
143.
100:
708062.
75.
160.
178:
8080203.
25.
159.
3:
8080201.
183.
247.
58:
443189.
166.
68.
89:
44346.
28.
111.
142:
7080190.
230.
60.
129:
80190.
38.
14.
52:
80189.
160.
49.
234:
844389.
188.
124.
145:
443190.
1.
37.
125:
44391.
205.
215.
57:
708071.
244.
60.
230:
7080181.
29.
101.
13:
8080151.
80.
142.
33:
8046.
21.
105.
59:
808046.
41.
151.
103:
8080186.
83.
133.
253:
8080184.
69.
214.
94:
20114.
79.
134.
129:
443178.
249.
187.
151:
808088.
250.
223.
190:
808079.
143.
182.
254:
8080178.
79.
163.
131:
8080201.
184.
65.
229:
8080.
240.
141.
141:
7080190.
230.
60.
129:
80170.
84.
133.
72:
8443217.
199.
160.
224:
8080159.
203.
204.
126:
8080190.
221.
50.
210:
8080187.
188.
166.
192:
8078.
189.
76.
2:
50000190.
85.
152.
186:
808079.
129.
0.
173:
8080190.
10.
194.
42:
8080190.
158.
19.
141:
80170.
84.
133.
72:
7080149.
62.
173.
247:
8080113.
170.
129.
113:
44391.
83.
93.
124:
7080201.
199.
93.
30:
44376.
69.
29.
42:
80212.
71.
237.
140:
8080119.
159.
150.
176:
4435.
196.
35.
138:
7080201.
163.
74.
202:
443181.
188.
149.
134:
80217.
199.
175.
216:
808087.
106.
77.
40:
708077.
245.
101.
134:
8080181.
36.
42.
205:
443200.
57.
102.
71:
8443185.
187.
198.
10:
8080186.
0.
95.
172:
80123.
168.
4.
66:
220.
0.
0.
0:
061.
141.
59.
46:
52826126.
53.
191.
40:
173881.
105.
92.
160:
2215985.
93.
132.
12:
2806324.
102.
194.
133:
15948119.
16.
155.
3:
190137.
67.
115.
145:
848655.
43.
72.
70:
3219733.
59.
186.
233:
103023.
3.
120.
178:
1130947.
70.
184.
3:
5137229.
56.
179.
227:
3610953.
50.
119.
213:
37756121.
228.
238.
106:
3177993.
251.
152.
238:
5693238.
194.
124.
168:
36165104.
78.
226.
216:
6370482.
37.
46.
149:
1450756.
52.
50.
155:
58978103.
214.
69.
74:
1841696.
98.
217.
209:
758121.
87.
44.
84:
3476050.
125.
134.
213:
32555100.
211.
85.
84:
4447102.
136.
204.
96:
4325297.
202.
110.
118:
8905宏病毒的防御方法Emotet银行木马主要通过电子垃圾邮件的方式进行传播感染目标用户,感染链中的关键步骤是Microsoft Word文档,其中包含旨在感染易受攻击的Windows主机的宏,通过对Emotet的分析,总结出以下有关
安全意识的习惯。
1、从邮件角度该木马是借助社会工程学,利用人类的弱点进行实施的攻击,因而对于接收大量邮件的岗位人员应提高对于邮件的安全性检验,收发邮件时要确认收发来源是否可靠,不要随便点击异常的邮件标题,更 加不要随意点击或者复制邮件中的网址, 不要轻易下载来源不明的附件。
2、从word文档角度通常情况下,word文件不需要启用宏功能,但凡涉及启用“宏”,一律等同恶意文件,可以在word设置中禁用“宏功能”,针对带有自动宏病毒的Office文件,可以在Office打开文档的时候,始终按住SHift键,将禁止存在的一起自动宏
3、从通信角度可以开启杀软的联网控制功能,如火绒开启联网控制功能的步骤如下:火绒->防护中心->系统防护->开启联网控制,开启此项功能后所有的联网行为都会提醒,遇到如powershell联网且不是自己执行的情况,要提高警惕并及时采取应对措施
4、从预防角度
养成及时
更新操作系统和软件应用的好习惯,同时也要做好文件的 备份,以防止勒索软件加密重要文件后无法恢复。