在主机被感染或者被控制时,安全人员可以抓取网络流量包(pcap)确定感染的类型。
本教程讨论如何识别Trickbot,Trickbot是一种信息窃取器,同时也是银行恶意软件,从2016年开始传播。Trickbot主要通过恶意邮件(malspam)传播,同时,也可以通过诸如 Emotet, IcedID 或Ursnif 等恶意软件分发。
Trickbot的网络流量模式较为明显。本教程分析两种不同感染Trickbot的方式所产生的pcap:通过恶意邮件感染和通过其他恶意软件感染。
注意:本教程中Wireshark的列显示需要通过前一个教程设置。你还需根据此文 配置Wireshark显示过滤器。
Trickbot通常通过恶意邮件传播。这些邮件中包含下载伪装成音频或文档的恶意文件的链接。这些文件可能是Trickbot的Windows可执行文件,也可能是Trickbot可执行文件的某种下载器。很多时候,邮件中的链接是一个zip压缩包,压缩包里的文件就包含了Tribot可执行文件或下载器。
图1是2019年9月的一个案例。在这个案例中,邮件中包含里一个下载链接,下载的文件是zip压缩包。压缩包中包含一个Windows快捷方式文件,该文件下载了Trickbot可执行文件。此处 是Trickbot感染的一个pcap。
图1: 2019年9月通过邮件感染Trickbot的流程图.
从这个页面下载该pcap。该pcap放在一个带密码的zip压缩包:2019-09-25-Trickbot-gtag-ono19-infection-traffic.pcap.zip 。用解压密码infected解压该文件并用Wireshark打开。在Wireshark中使用basic过滤器查看该流量,如图2所示。
图 2: 使用Wireshark查看Trickbot感染的pcap.
通过查看这些流量,你可以看到以下这些在近期Trickbot感染中都出现的特征:
这个Trickbot感染的特殊之处是对 www.dchristjan[.]com的HTTP请求返回的是一个zip文件,对 144.91.69[.]195 的HTTP请求返回的是Windows可执行文件。对目的地是www.dchristjan[.]com 的request进行追踪HTTP流,就可以得到图4,根据图4我们可以知道返回的是一个zip压缩包。
图3: 追踪到 www.dchristjan[.]com的HTTP流
图 4: HTTP请求返回的是zip压缩包的迹象.
在图4中,你还可以看到zip压缩包中所包含文件的文件名,InvoiceAndStatement.lnk。可以根据图5和图6所示的路径,使用Wireshark从流量包中提取出该文件。
File → Export Objects → HTTP…
图5: 从pcap提取出HTTP对象.
图 6:从 pcap提取出zip文件.
在BSD,Linux,或者Mac环境下,你可以很容易的确定提取出的文件是一个zip文件,获取该文件的SHA256哈希值,并在命令行环境中提取该压缩包内容。本例中,压缩包中是一个Windows快捷方式文件,你也可以用图7的方式通过获取其哈希值进行确认。
用于确定文件类型的命令是: file [filename], 用于确定文件SHA256哈希值的命令是: shasum -a 256 [filename] 。
图7: 检查提取的zip文件及其内容.
到 144.91.69[.]195 的一个HTTP请求返回的是一个Windows可执行文件。这是Trickbot的初始Windows可执行文件。追踪这个HTTP请求的HTTP流,你就可以发现如图8和图9所示的可执行文件的迹象。如图10所示,从pcap中提取出该可执行文件。
图 8:追踪到 144.91.69[.]195的HTTP流
图 9: 返回文件是Windows可执行文件或DLL文件的迹象.
图10: 从 pcap提取出Windows可执行文件.
之前的感染的流量会包含经TCP端口443、447或449的HTTPS/SSL/TLS流量,以及对受感染主机IP的确认。本例中,在Trickbot可执行文件的HTTP请求之后,我们可以看到在成功经TCP 449端口连上 187.58.56[.]26 之前有几次经TCP 443端口对不同IP地址的扫描尝试。使用basic+过滤器,你可以看到如图11和图12所示的这些连接尝试。
图11:受感染的Windows主机尝试通过443端口进行TCP连接
图12: 往下拉可以看到在经TCP 449端口成功连接到 187.58.56[.]26 之前在TCP 443端口上进行了多次尝试
经TCP 447和449端口的到不同IP的HTTPS/SSL/TLS流量的证书数据不寻常。我们可以通过在Wireshark 2.x中用 ssl.handshake.type == 11 或者在Wireshark 3.x中用 tls.handshake.type == 11 过滤查看证书发行者信息。过滤之后转到框架细节部分并展开信息,你就可以看到如图13和图14所示的证书发行信息。
图13: 过滤得到HTTPS/SSL/TLS 流量, 并展开第一个在449端口的报文信息.
图 14: 下拉查看在TCP 449端口的第一个报文的证书发行信息
在图14中,我们可以看到在经TCP 449端口到187.58.56[.]26的HTTPS/SSL/TLS的证书发行数据如下:
sstateOrProvinceName(Some-State)和organizationName( Internet Widgits Pty Ltd )并不用于合法的HTTPS/SSL/TLS流量中。所以意味着,这是一个恶意流量,而且这种不同寻常的证书发行数据并不仅用于Trickbot。用于合法的HTTPS/SSL/TLS流量的正常证书发行者信息应该是怎么样的呢?查看之前经TCP 443端口访问微软主机72.21.81.200的流量,我们就可以看到如图15所示信息。
id-at-commonName=Microsoft IT TLS CA 2
图 15: 到微软主机的合法HTTPS流量中的证书数据.
受Trickbot感染的Windows主机会使用一系列不同的IP地址检查站点来查看其IP地址。这些站点并非恶意站点 ,而且这些流量也不是恶意的。但是,这种IP地址检查在Trickbot和其他恶意软件家族中很常见。Trickbot用的合法IP地址检查服务包括:
api.ip[.]sb
再次申明,对自己的IP地址检查并不是恶意的。但是,当这种行为与其他行为结合在一起就变成恶意的了,如我们在本例中看到的一样。
图16:在经过TCP 449端口的HTTPS/SSL/TLS通信之后,立即 对受感染的Windows主机IP地址检查。这一行为单看并非恶意,但却是Trickbot感染过程的一部分 .
Trickbot感染通常会在TCP 8082端口产生HTTP流量,将受感染主机的系统信息及从浏览器和邮件客户端获取的密码发送到Trickbot服务器上。
用以下Wireshark过滤器查看这条数据:
http.request and tcp.port eq 8082
如图17所示,有如下几条HTTP请求:
170.238.117[.]187 port 8082 – 170.238.117[.]187:8082\ – POST
/ono19/BACHMANN-BTO-PC_W617601.AC3B679F4A22738281E6D7B0C5946
E42/90
图 17: Trickbot产生的经TCP 8082端口的HTTP流量.
以81结尾的HTTP POST请求发送的是保存在web 浏览器、邮件客户端和其他应用程序中的密码。以83结尾的HTTP POST请求发送的是提交到类似web浏览器等应用程序的表格数据。以90结尾的HTTP POST请求发送的是系统相关信息。追踪这些TCP或HTTP流可以看到发送的数据内容。
图 18: 被Trickbot从Chrome浏览器窃取的登录信息. 这些信息由受Trickbot感染的主机用HTTP流量经TCP 8082端口发送.
图 19: 受Trickbot感染主机用HTTP流量经TCP 8082端口发送系统信息. 信息以一些正在运行的进程开始.
图20: 受Trickbot感染的主机使用HTTP流量经TCP 8082端口发送的其他系统数据。这张图是图19的后续.
Trickbot经HTTP GET请求发送了很多以.png结尾的Windows可执行文件。当受感染的Windows主机是Active Directory环境中的客户端时,这些Trickbot可执行文件可用于感染易受攻击的域控制器(DC)。
在Wireshark中用如下过滤器可以找到这些URL。
http.request and ip contains .png
图 21:过滤查找用.png结尾的URL发送的Trickbot可执行文件
追踪图21中三条TCP或HTTP流量的任一条,就可以看到类似之前图9所示的表明是Windows可执行文件的迹象。在本例中,HTTP respond header表明返回的是一张图片,即使它很明显是一个Windows可执行文件或DLL文件。
图 22: 通过URL发送的以.png结尾的Windows可执行文件
根据本教程前部分所述,可以从Wireshark中提取出这些文件,并确定他们是Windows可执行文件,及获取他们的SHA256哈希值。
Trickbot经常由其他恶意软件分发。Trickbot通常伴随着Emotet出现,但是也会在IceID和Ursnif感染后出现。
因为Emotet经常分发Trickbot,我们现在来看一个发生在2019年9月,由Emotet感染Trickbot的例子。去年我们已经在Palo Alto Networks中揭露过Emotet感染Trickbot,所以在本文中我们更关注Trickbot的行为。
图 23: 具有Trickbot活动的Emotet简化流程图.
从这个链接下载pcap。文件名为 2019-09-25-Emotet-infection-with-Trickbot-in-AD-environment.pcap.zip,解压密码为 infected 。解压后在Wireshark中打开。用 basic 过滤器查看如图24所示的基于web的感染流量。
图24:过滤 Emotet+Trickbot 感染的web流量.
经验丰富的分析师通常可以识别Emotet生成的流量和Trickbot生成的流量。感染Emotet后会产生从服务器发回加密数据的HTTP流量。和感染Trickbot后产生的HTTPS/SSL/TLS有很大不同。图25展示了Emotet和Trickbot感染流量的不同。
图 25: Emotet和 Trickbot 流量的差异.
本例感染发生在Active Directory环境中,10.9.25.102是受感染Windows 客户端,10.9.25.9是DC。在后续的流量中,可以看到DC表现出了受Trickbot感染的迹象,如图26所示。
图26: 在 DC上的Trickbot行为.
感染是如何从客户端传到DC的呢? Trickbot利用某一版本的EternalBlue exploit用微软的SMP协议传输。在本例中,受感染的Windows客户端经TCP 445端口发送了几次信息给在10.9.25.9的DC,从这些流量中可以取出Trickbot可执行文件(从 185.98.87[.]185/wredneg2.png )。在DC向 185.98.87[.]185发送数据之前用basic+过滤器查看10.9.25.102到10.9.25.9流量中的SYN段,如图27所示。
图27: 在DC从196.98.87 [。] 185 / wredneg2.png检索到Trickbot EXE之前,找到从10.9.25.102处的客户端到10.9.25.9处的DC(以灰色显示)的流量。
追踪其中一个TCP流,例如经TCP 49321端口从10.9.25.102到10.9.25.9 445TCP端口这一条。这是一条很不常见的从客户端发往DC的流量,所以它很可能包含 EternalBlue exploit 。图28就是这一条流量。
图28:不常见的从客户端经TCP 445端口发文DC的流量,很可能是EternalBlue
类exploit
本教程通过分析2019年9月产生的两个 pcap展示了如何检查是否感染了Trickbot恶意软件。更多近期产生的包含Trickbot行为的pcap可以移步 malware-traffic-analysis.net.
更多关于Wireshark教程,可以看我们之前的教程:
原文地址:原文地址: https://unit42.paloaltonetworks.com/wireshark-tutorial-examining-trickbot-infections/
编译:看雪翻译小组 lumou
校对:看雪翻译小组 梦野间
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)