分辨Emotet银行木马感染流量
一、简介
1.起源
Emotet是一个信息窃取者,于2014年首次被报告为银行恶意软件。此后,它有了其他功能(例如,删除程序)进行了演变,分支了其他恶意软件家族,如Gootkit,IcedID,Qakbot和Trickbot。
由于上一篇从宏文件角度去分析Emotet银行木马的特征,但是本文从5个示例流量的区分是否是Emotet银行木马。同时可以帮助我们更好的溯源与分析。
2.了解
要了解由Emotet引起的感染流量,我们必须首先了解导致感染的事件链。Emotet通常通过恶意垃圾邮件(malspam)电子邮件进行分发。Emotet感染链中的关键步骤是Microsoft Word文档,其中包含旨在感染易受攻击的Windows主机的宏。
垃圾邮件传播Emotet使用不同的技术来分发这些Word文档。下图说明了这四种感染技术。
如果受害者打开文档并在易受攻击的Windows主机上启用了宏,则该主机感染了Emotet。
从流量的角度来看,我们看到从Emotet Word文档到Emotet感染的以下步骤:
- Web流量检索初始二进制文件。
- 通过HTTP的编码/加密命令和控制(C2)通信。
- 如果Emotet丢弃了后续恶意软件,则会产生额外的感染流量。
- 如果Emotet使用受感染的主机作为垃圾邮件程序,则SMTP通信
下图显示了我们在Emotet感染期间可能发现的网络活动的流程图
3.示例一 Emotet感染流量
我们打开Example-1-2021-01-06-Emotet-infection.pcap,并对其HTTP/HTTPS的基本过滤
如上图所示,前五个HTTP GET请求代表用于检索初始Emotet DLL的四个URL。流量为:
1 | hangarlastik[.]com GET /cgi-bin/Ui4n/ |
我们来查看下 这个5个url的http响应是如何的,我们使用过滤器进行过滤
1 | (http.request or http.response or tls.handshake.type eq 1) and !(ssdp) |
当我们看到最后一个url的时候是发现http未响应的,我们对其使用tcp流追踪。
追踪之后我们发现seo.udaipurkart [。] com返回了Windows DLL文件,如下图所示
我们对其导出文件,此提取的DLL的SHA256哈希为:
1 | 8e37a82ff94c03a5be3f9dd76b9dfc335a0f70efc0d8fd3dca9ca34dd287de1b |
Emotet C2流量是使用HTTP POST请求发送的编码数据。您可以使用以下过滤器在Wireshark中轻松找到这些请求:
1 | http.request.method eq POST |
在我们的第一个pcap中,Emotet C2流量由HTTP POST请求组成,这些请求包括:
- 通过TCP端口80的5.2.136 [。] 90
- TCP端口8080上为167.71.4 [。] 0
Emotet为其C2流量生成两种类型的HTTP POST请求。第一种POST请求以HTTP / 1.1结尾。第二种POST请求以HTTP/1.1(application / x-www-form-urlencoded)结尾。
按照针对初始HTTP请求的TCP流到达UTC 5.2.136 [。] 90(UTC时间16:42:34),以查看第一种C2 POST请求的示例,如下图所示。
上图显示了该POST请求发送了大约6 KB的表单数据,该表单数据似乎是编码的或加密的二进制文件。向下滚动到HTTP响应以查看从服务器返回的编码数据。下图显示了此编码数据的开始。
这种类型的编码或加密数据是Emotet僵尸网络服务器与受感染Windows主机交换数据的方式。这也是Emotet用于更新Emotet DLL并删除后续恶意软件的渠道。
针对Emotet C2流量的第二种HTTP POST请求看起来与第一种不同。在Wireshark中使用以下过滤器可以轻松找到第二种HTTP POST请求:
1 | urlencoded-form |
这应该通过TCP端口8080将两个HTTP POST请求返回到167.71.4 [。] 0,如下图所示。
在16:58:43 UTC遵循TCP流中的这两个HTTP POST请求中的第一个。查看流量。结果如下图所示。
如上图所示,POST请求中发送的某些数据被编码为具有某些URL编码的base64字符串。例如,%2B被用于+符号,%2F表示/和%3D是用于=。
来自服务器的响应发送的数据被编码或以其他方式加密。
这个恶意pcap中没有后续的恶意软件或其他重要活动。
唯一的其他活动是通过TCP端口443重复尝试连接到46.101.230 [。] 194。我们使用以下Wireshark过滤器对其进行过滤:
1 | tcp.analysis.retransmission和tcp.flags eq 0x0002 |
结果如下图所示。
在46.101.230 [。] 194上进行的Internet搜索应该显示此IP地址已用于Emotet C2活动。
pcap中的剩余流量是Microsoft Windows 10主机生成的系统流量。
4.示例二 垃圾邮件流量的Emotet
我们打开Example-2-2021-01-05-Emotet-with-spambot-traffic-part-1.pcap,并对其HTTP/HTTPS的基本过滤
与第一个示例类似,我们在Emotet C2流量之前收到了一些HTTP GET请求。这些GET请求是尝试通过网络流量下载初始Emotet DLL的尝试。列显示的第一帧显示到obob [。] tv的HTTPS流量,这可能是Web上对初始Emotet DLL的请求。
按照TCP流对miprimercamino [。] com的HTTP GET请求进行确认,以确认它返回了Emotet DLL。我们可以导出从miprimercamino [。] com返回的Emotet DLL ,如下图所示。
从第二个pcap中提取的DLL的SHA256哈希为:
1 | 963b00584d8d63ea84585f7457e6ddcac9eda54428a432f388a1ffee21137316 |
同样,我们发现针对Emotet C2流量的两种HTTP POST请求。要针对每种Emotet C2 HTTP POST请求进行过滤,请使用以下Wireshark过滤器:
第一种类型:
1
http.request method eq POST and !(urlencoded-form)
第二种:
1 | urlencoded-form |
跟踪这些过滤器返回的HTTP POST请求的TCP流,并确认它们在第一个pcap中看到的相同模式。
在查看了来自该pcap的Emotet C2流量的一些示例之后,让我们继续进行spambot活动。
在此示例中,我们被感染的主机变成了垃圾邮件机器人,因此我们也有SMTP通信。spambot SMTP流量已加密,但是我们可以使用基本的Web过滤器并向下滚动列显示轻松找到它。
在20:06:20 UTC时,pcap开始显示与SMTP电子邮件协议相关的TCP端口的SSL / TLS通信,例如TCP端口25、465和587,如下图所示。
在建立加密的SMTP隧道之前,我们可以对smtp进行过滤以找到一些SMTP命令。下图显示了结果。
有时,我们可以从受Emotet感染的Windows主机生成的spambot流量中找到未加密的SMTP。未加密的SMTP将显示其邮件内容,但是来自spambot主机的加密SMTP的数量远远大于未加密的SMTP的数量。因此,来自受Emotet感染的主机的大多数spambot邮件都隐藏在加密流量中。
在此示例中,我们只看到加密的SMTP通信。
5.示例三 Emotet和Spambot流量
我们打开Example-3-2021-01-05-Emotet-with-spambot-traffic-part-2.pcap,并对其HTTP/HTTPS的基本过滤
在此pcap中,我们仍然看到针对Emotet C2流量的HTTP POST请求,每分钟至少两次。我们还可以找到类似于之前的pcap的加密spambot活动。
Spambot活动经常产生大量流量。这个pcap包含来自受感染Windows主机的4分42秒的spambot活动,并且流量超过21 MB。
我们可以使用以下Wireshark筛选器快速识别任何未加密的SMTP通信:
1 | smtp.data.fragment |
下图显示了我们第三个pcap的过滤器结果。结果显示为5个Emotet垃圾邮件
追踪TCP流中的最后一封电子邮件:“ Gladisbel Miranda,UTC时间20:19:54。,如下图所示。
之后呢 我们可以对其5个垃圾邮件进行导出和分析。
Emotet是恶意软件下载器。通过Emotet分发的最常见的恶意软件可能是Trickbot。
6.示例四 用Trickbot感染Emotet
我们打开Example-4-2021-01-05-Emotet-infection-with-Trickbot.pcap,并对其HTTP/HTTPS的基本过滤
此pcap没有针对初始Emotet DLL的HTTP GET请求。但是,我们在列显示中的第一帧显示到fathekarim [。] com的HTTPS流量。这可能是针对Emotet DLL的网络请求。
此pcap还包含Trickbot感染的迹象。使用基本的Web过滤器并向下滚动以查找Trickbot流量,如下图所示。
以下是Trickbot的常见指标:
- 在没有关联域或主机名的情况下,通过TCP端口447或449进行的HTTPS通信。
- 通过标准或非标准TCP端口的HTTP POST请求,以/81 ,/83 或/90结尾的HTTP流量与数据渗透相关联。
- 使用受Emotet感染的Trickbot时,上述HTTP POST请求以/ mor开头,后跟一个数字(到目前为止只能看到一个或两个数字)。
- 对以.png结尾的URL的HTTP GET请求,返回其他Trickbot二进制文件。
我们可以使用以下Wireshark过滤器轻松找到这些指标:
1 | tls.handshake.type eq 1 and (tcp.port eq 447 or tcp.port eq 449) |
依据下图所示的每个HTTP POST请求的TCP流,以查看是否返回了Windows二进制文件。这样做应该显示两个Windows可执行文件。然后,使用文件–>导出对象–> HTTP从pcap导出这些二进制文件,如前面的示例中所述。
这两个Windows二进制文件(两个EXE文件)的SHA256哈希为:
59e1711d6e4323da2dc22cdee30ba8876def991f6e476f29a0d3f983368ab461 for mingup.png
ed8dea5381a7f6c78108a04344dc73d5669690b7ecfe6e44b2c61687a2306785 for save.png
Trickbot是Emotet分发的最常见的恶意软件,但并非唯一。Qakbot是另一种经常在感染了Emotet的Windows主机上丢弃的恶意软件。
7.示例五 用Qakbot感染Emotet
我们打开Example-5-2020-08-18-Emotet-infection-with-Qakbot.pcap,并对其HTTP/HTTPS的基本过滤
在我们最后的pcap中,21:23:50从saketpranamam.mysquare[。]in中检索了一个Emotet Word文档,该文档与报告为在同一日期托管Emotet Word文档的URL相匹配。如先前示例中所述,使用文件–>导出对象–> HTTP从pcap导出Word文档。
此提取的Word文档的SHA256哈希为:
- c7f429dde8986a1b2fc51a9b3f4a78a92311677a01790682120ab603fd3c2fcb
此外,此pcap包含Qakbot感染的流量。如下图所示。
以下是Qakbot的常见指标:
- 通过HTTPS的标准和非标准TCP端口进行的HTTPS通信。
- Qakbot HTTPS流量的证书数据在颁发者字段中具有异常值,并且证书不是由美国的颁发机构颁发的。
- 通过TCP端口65400的TCP流量。
- 2020年11月下旬之前,Qakbot通常生成到cdn.speedof [。] me的HTTPS流量。
- 2020年11月下旬之前,Qakbot通常会向a.strandsglobal [。] com生成HTTP GET请求。
我们可以使用以下过滤器对其进行找到
1 | tls.handshake.type eq 11 and !(x509sat.CountryName == US) |
下图所示第一个过滤器的结果在列显示中显示了来自71.80.66 [。] 107的流量的几帧。并找到异常的证书颁发者数据。
如下图所示我们找到了通过TCP端口65400的单个Qakbot通信的TCP流。此流包含受感染Qakbot的Windows主机的公共IP地址和僵尸网络标识字符串。
尽管Emotet通常删除了Trickbot和Qakbot,但要注意Emotet还删除了其他类型的恶意软件,例如Gootkit和IcedID。
8.结论
从感染流量的pcap中识别Emotet活动。我们回顾了五个最近的pcaps,发现由Emotet C2流量引起的HTTP POST请求中的相似之处。这些模式非常独特,可用于识别网络中的Emotet感染。我们还回顾了与Emotet相关的其他感染后活动,例如垃圾邮件程序流量和被感染主机上丢弃的各种恶意软件家族。
参考链接:
https://unit42.paloaltonetworks.com/wireshark-tutorial-emotet-infection/