WiresharkTrafficAnalysisTHM
Introduction
在这个房间里,我们将介绍使用 Wireshark 进行流量分析和检测可疑活动的技术和要点。请注意,这是 Wireshark 三室中的第三个也是最后一个房间,建议在开始这个房间之前先访问下面列出的前两个房间,练习和复习您的 Wireshark 技能。
在前两个房间里,我们介绍了如何使用 Wireshark 并进行数据包级搜索。现在,是时候调查和关联数据包级信息以查看网络流量中的大局,例如检测异常和恶意活动。对于安全分析师来说,通过应用分析师的知识和工具功能来阻止和理解数据包中传播的信息至关重要。这个房间将通过综合分析师知识和 Wireshark 功能来调查数据包级别的详细信息,以检测特定情况下的异常和奇怪情况。
Nmap Scans
Nmap Scans
Nmap 是一种行业标准工具,用于映射网络、识别活动主机和发现服务。由于它是最常用的网络扫描工具之一,安全分析师应该识别用它创建的网络模式。本节将介绍如何识别最常见的 Nmap 扫描类型。
- TCP 连接扫描
- SYN 扫描
- UDP 扫描
了解 Nmap 扫描的工作原理对于发现网络上的扫描活动至关重要。但是,如果不使用正确的过滤器,就不可能了解扫描详细信息。以下是用于探测网络上的 Nmap 扫描行为的基本过滤器。
TCP 标志简介。
注释 | Wireshark 过滤器 |
---|---|
全局搜索。 | tcp udp |
仅 SYN 标志。设置了 SYN 标志。其余位不重要。 | tcp.flags == 2 tcp.flags.syn == 1 |
仅设置了 ACK 标志。其余位不重要。 | tcp.flags == 16 tcp.flags.ack == 1 |
仅设置了 SYN、ACK 标志。SYN 和 ACK。其余位不重要。 | tcp.flags == 18 (tcp.flags.syn == 1) and (tcp.flags.ack == 1) |
仅设置了 RST 标志。RST 标志。其余位不重要。 | tcp.flags == 4 tcp.flags.reset == 1 |
仅设置了 RST、ACK 标志。RST 和 ACK。其余位不重要。 | tcp.flags == 20 (tcp.flags.reset == 1) and (tcp.flags.ack == 1) |
仅设置了 FIN 标志。其余位并不重要。 | tcp.flags == 1 tcp.flags.fin == 1 |
TCP 连接扫描
TCP 连接扫描概述:
- 依赖于三次握手(需要完成握手过程)。
- 通常使用
nmap -sT
命令进行。 - 由非特权用户使用(非 root 用户的唯一选项)。
- 通常具有大于 1024 字节的窗口大小,因为请求由于协议的性质需要一些数据。
打开 TCP 端口 | 打开 TCP 端口 | 关闭的 TCP 端口 |
---|---|---|
SYN –><– SYN, ACKACK –> | SYN –><– SYN, ACKACK –>RST, ACK –> | SYN –><– RST, ACK |
下图展示了打开和关闭 TCP 端口的三次握手过程。图像和 pcap 样本被拆分,以便于调查并了解每个案例的细节。
Open TCP port (Connect):
Closed TCP port (Connect):
上图提供了孤立流量中的模式。但是,在大型捕获文件中发现给定的模式并不总是那么容易。因此,分析师需要使用通用过滤器来查看初始异常模式,然后更容易将注意力集中在特定的流量点上。给定的过滤器显示捕获文件中的 TCP Connect 扫描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024 |
SYN Scans
TCP SYN 扫描概述:
- 不依赖三次握手(无需完成握手过程)。
- 通常使用
nmap -sS
命令进行。 - 由特权用户使用。
- 通常大小小于或等于 1024 字节,因为请求尚未完成并且不期望接收数据。
Open TCP Port | Close TCP Port |
---|---|
SYN –><– SYN,ACKRST–> | SYN –><– RST,ACK |
Open TCP port (SYN):
Closed TCP port (SYN):
给定的过滤器在捕获文件中显示 TCP SYN 扫描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size <= 1024 |
UDP Scans
UDP 扫描概述:
- 不需要握手过程
- 打开端口时无提示
- 关闭端口时出现 ICMP 错误消息
- 通常使用
nmap -sU
命令进行。
Open UDP Port | Closed UDP Port |
---|---|
UDP packet –> | UDP packet –>ICMP Type 3, Code 3 message. (Destination unreachable, port unreachable) |
Closed (port no 69) and open (port no 68) UDP ports:
上图显示关闭的端口返回 ICMP 错误数据包。乍一看,没有提供有关错误的更多信息,那么分析师如何确定此错误消息属于哪里? ICMP 错误消息使用原始请求作为封装数据来显示数据包的来源/原因。展开数据包详细信息窗格中的 ICMP 部分后,您将看到封装的数据和原始请求,如下图所示。
给定的过滤器显示捕获文件中的 UDP 扫描模式。
icmp.type==3 and icmp.code==3 |
ARP Poisoning & Man In The Middle!
ARP 中毒/欺骗(又称中间人攻击)
ARP 协议或地址解析协议 (ARP) 是一种允许设备在网络上识别自己的技术。地址解析协议中毒(也称为 ARP 欺骗或中间人 (MITM) 攻击)是一种通过向默认网关发送恶意 ARP 数据包来干扰/操纵网络的攻击。最终目的是操纵“IP 到 MAC 地址表”并嗅探目标主机的流量。
有多种工具可用于进行 ARP 攻击。但是,攻击的思维方式是静态的,因此只要了解 ARP 协议工作流程和 Wireshark 技能,就很容易检测到此类攻击。
ARP 分析概述:
- 在本地网络上工作
- 启用 MAC 地址之间的通信
- 不是安全协议
- 不是可路由协议
- 它没有身份验证功能
- 常见模式是请求和响应、公告和免费数据包。
在调查流量之前,让我们先查看一些合法和可疑的 ARP 数据包。合法请求类似于所示的图片:广播请求询问是否有任何可用主机使用 IP 地址,以及来自使用特定 IP 地址的主机的回复。
注释 | Wireshark 过滤器 |
---|---|
全局搜索 | arp |
“ARP” 选项用于获取唾手可得的果实:操作码 1:ARP 请求。操作码 2:ARP 响应。搜索:Arp 扫描搜索:可能的 ARP 中毒检测搜索:可能的 ARP 泛洪检测: | arp.opcode == 1 arp.opcode == 2 arp.dst.hw_mac==00:00:00:00:00:00 arp.duplicate-address-detected or arp.duplicate-address-frame ((arp) && (arp.opcode== 1)) && (arp.src.hw_mac == target-mac-address) |
可疑情况意味着对特定 IP 地址有两个不同的 ARP 响应(冲突)。在这种情况下,Wireshark 的专家信息选项卡会警告分析师。但是,它只显示重复值的第二次出现以突出显示冲突。因此,从合法数据包中识别出恶意数据包是分析师的挑战。下图显示了可能的 IP 欺骗案例。
在这里,了解网络架构并检查特定时间范围内的流量有助于检测异常。作为分析师,您应该在进一步研究之前记下您的发现。这将帮助您组织起来,并更容易关联进一步的发现。查看给定的图片;存在冲突;以“b4”结尾的 MAC 地址使用“192.168.1.25”IP 地址制作了 ARP 请求,然后声称拥有“192.168.1.1”IP 地址。
注释 | 检测注释 | 发现 |
---|---|---|
可能的 IP 地址匹配。 | 从 MAC 地址宣布的 1 个 IP 地址。 | MAC:00:0c:29:e2:18:b4IP:192.168.1.25 |
可能的 ARP 欺骗尝试。 | 2 个 MAC 地址声称拥有相同的 IP 地址 (192.168.1.1)。“192.168.1.1”IP 地址可能是网关地址。 | MAC1: 50:78:b3:f3💿f4 MAC 2: 00:0c:29:e2:18:b4 |
可能存在 ARP 泛洪尝试。 | 以“b4”结尾的 MAC 地址声称拥有不同的/新的 IP 地址。 | MAC:00:0c:29:e2:18:b4IP:192.168.1.1 |
让我们继续检查流量以发现任何其他异常。请注意,该案例被拆分为多个捕获文件,以便于调查。
此时,很明显存在异常。安全分析师不能忽略大量的 ARP 请求。这可能是恶意活动、扫描或网络问题。出现了一个新的异常;以“b4”结尾的 MAC 地址使用“192.168.1.25”IP 地址制作了多个 ARP 请求。让我们关注此异常的来源并扩展所做的笔记。
注释 | 检测注释 | 发现 |
---|---|---|
可能的 IP 地址匹配。 | 从 MAC 地址宣布的 1 个 IP 地址。 | MAC:00:0c:29:e2:18:b4 IP:192.168.1.25 |
可能的 ARP 欺骗尝试。 | 2 个 MAC 地址声称拥有相同的 IP 地址 (192.168.1.1)。“192.168.1.1”IP 地址可能是网关地址。 | MAC1:50:78:b3:f3💿f4MAC 2:00:0c:29:e2:18:b4 |
可能存在 ARP 欺骗尝试。 | 以“b4”结尾的 MAC 地址声称拥有不同的/新的 IP 地址。 | MAC:00:0c:29:e2:18:b4IP:192.168.1.1 |
可能存在 ARP 泛洪尝试。 | 以“b4”结尾的 MAC 地址针对一系列 IP 地址构造了多个 ARP 请求。 | MAC:00:0c:29:e2:18:b4IP:192.168.1.xxx |
到目前为止,很明显以“b4”结尾的 MAC 地址拥有“192.168.1.25”IP 地址,并针对一系列 IP 地址构造了可疑的 ARP 请求。它还声称拥有可能的网关地址。让我们关注其他协议,并在时间框架的以下部分中发现此异常的反映。
存在 HTTP 流量,在 IP 级别上一切正常,因此与我们之前的发现没有任何关联信息。让我们将 MAC 地址添加为数据包列表窗格中的列,以揭示 IP 地址背后的通信。
又一个异常!以“b4”结尾的 MAC 地址是所有 HTTP 数据包的目的地!显然存在 MITM 攻击,攻击者是 MAC 地址以“b4”结尾的主机。链接到“192.168.1.12”IP 地址的所有流量都被转发到恶意主机。让我们在结束调查之前总结一下调查结果。
检测说明 | 发现 | |
---|---|---|
IP 到 MAC 匹配。 | 3 个 IP 到 MAC 地址匹配。 | MAC:00:0c:29:e2:18:b4 = IP:192.168.1.25MAC:50:78:b3:f3:cd:f4 = IP:192.1681.1MAC:00:0c:29:98:c7:a8 = IP:192.168.1.12 |
攻击者 | 攻击者使用 ARP 数据包制造噪音。 | MAC:00:0c:29:e2:18:b4 = IP:192.168.1.25 |
路由器/网关 | 网关地址。 | MAC:50:78:b3:f3:cd:f4 = IP:192.1681.1 |
受害者 | 攻击者嗅探受害者的所有流量。 | MAC:50:78:b3:f3:cd:f4 = IP:192.1681.12 |
在大型捕获文件中检测这些信息片段是一项挑战。然而,在现实生活中,您不会有可供调查的“定制数据”。因此,您需要具备分析师的思维方式、知识和工具技能来过滤和检测异常。
注意:在流量分析中,总是有可用的替代解决方案。解决方案类型和方法取决于分析师的知识和技能水平以及可用的数据源。
Identifying Hosts: DHCP, NetBIOS and Kerberos
识别主机
在调查入侵或恶意软件感染活动时,安全分析师应该知道如何识别网络上的主机,而不仅仅是 IP 到 MAC 地址匹配。最好的方法之一是识别网络上的主机和用户,以确定调查的起点,并列出与恶意流量/活动相关的主机和用户。
通常,企业网络使用预定义的模式来命名用户和主机。虽然这使得了解和跟踪清单变得更容易,但它有好有坏。好的一面是通过查看名称很容易识别用户或主机。坏的一面是,对手很容易克隆该模式并驻留在企业网络中。有多种解决方案可以避免此类活动,但对于安全分析师来说,拥有主机和用户识别技能仍然是必不可少的。
可用于主机和用户识别的协议:
- 动态主机配置协议 (DHCP) 流量
- NetBIOS (NBNS) 流量
- Kerberos 流量
DHCP 分析
DHCP 协议,或 动态主机配置协议 (DHCP)****,是负责管理自动 IP 地址和所需通信参数分配的技术。
DHCP 调查简介:
注意事项 | Wireshark 筛选器 |
---|---|
全局搜索。 | dhcp 或 bootp |
筛选正确的 DHCP 数据包选项对于查找感兴趣的事件至关重要。 “DHCP 请求” 数据包包含主机名信息“DHCP ACK” 数据包表示已接受的请求“DHCP NAK” 数据包表示已拒绝的请求由于协议的性质,只有“选项 53”(请求类型)具有预定义的静态值。您应该首先过滤数据包类型,然后可以通过“应用为列”或使用“包含”和“匹配”等高级过滤器来过滤其余选项。 | Request: dhcp.option.dhcp == 3 ACK: dhcp.option.dhcp == 5 NAK: dhcp.option.dhcp == 6 |
“DHCP 请求” 选项用于获取唾手可得的成果:选项 12:主机名。选项 50:请求的 IP 地址。选项 51:请求的 IP 租用时间。选项 61:客户端的 MAC 地址。 | dhcp.option.hostname contains "keyword" |
“DHCP ACK” 选项可帮助您轻松获取信息:选项 15:域名。选项 51:分配的 IP 租用时间。 | dhcp.option.domain_name contains "keyword" |
“DHCP NAK” 选项可帮助您轻松获取信息:选项 56:消息(拒绝详细信息/原因)。 | 由于消息可能因情况/情况而异,因此建议阅读消息而不是过滤它。这样,分析师可以通过了解事件情况来创建更可靠的假设/结果。 |
NetBIOS (NBNS) Analysis
NetBIOS 或 网络基本输入/输出系统是允许不同主机上的应用程序相互通信的技术。
NBNS 调查概述:
注释 | Wireshark 过滤器 |
---|---|
全局搜索。 | nbns |
“NBNS” 选项,用于获取唾手可得的成果:查询:查询详细信息。查询详细信息可能包含“名称、生存时间 (TTL) 和 IP 地址详细信息” | nbns.name contains "keyword" |
Kerberos Analysis
Kerberos 是 Microsoft Windows 域的默认身份验证服务。它负责在不受信任的网络上对两台或多台计算机之间的服务请求进行身份验证。最终目的是安全地证明身份。
Kerberos 调查概述:
注意事项 | Wireshark 过滤器 |
---|---|
全局搜索。 | kerberos |
用户帐户搜索:CNameString:用户名。注意:某些数据包可能在此字段中提供主机名信息。为避免这种混淆,请过滤 “$” 值。以 “$” 结尾的值是主机名,没有它的值是用户名。 | kerberos.CNameString contains "keyword" kerberos.CNameString and !(kerberos.CNameString contains "$" ) |
“Kerberos” 选项可用于获取唾手可得的成果:pvno:协议版本。realm:生成的票证的域名。sname:生成的票证的服务和域名。addresses:客户端 IP 地址和 NetBIOS 名称。注意:“地址”信息仅在请求数据包中可用。 | kerberos.pvno == 5 kerberos.realm contains “.org” kerberos.SNameString == “krbtg” |
Tunneling Traffic: DNS and ICMP
Tunnelling Traffic: ICMP and DNS
流量隧道(也称为“端口转发”)以安全的方式将数据/资源传输到网络段和区域。它可用于“互联网到私有网络”和“私有网络到互联网”的流量/方向。有一个封装过程来隐藏数据,因此传输的数据在这种情况下看起来很自然,但它包含私有数据包并安全地将它们传输到最终目的地。
隧道提供匿名性和流量安全性。因此,它被企业网络广泛使用。然而,由于它提供了相当高的数据加密级别,攻击者使用隧道绕过安全边界,使用日常流量中使用的标准和可信协议,如 ICMP 和 DNS。因此,对于安全分析师来说,能够发现 ICMP 和 DNS 异常至关重要。
ICMP 分析
互联网控制消息协议 (ICMP) 旨在诊断和报告网络通信问题。它在错误报告和测试中被广泛使用。由于它是一种受信任的网络层协议,因此有时会用于拒绝服务 (DoS) 攻击;此外,攻击者还会将其用于数据泄露和 C2 隧道活动。
ICMP 分析概述:
通常,ICMP 隧道攻击是在恶意软件执行或漏洞利用后出现/开始的异常。由于 ICMP 数据包可以传输额外的数据负载,因此攻击者使用此部分来泄露数据并建立 C2 连接。它可能是 TCP、HTTP 或 SSH 数据。虽然 ICMP 协议提供了携带额外数据的绝佳机会,但它也有缺点。大多数企业网络会阻止自定义数据包或需要管理员权限才能创建自定义 ICMP 数据包。
大量的 ICMP 流量或异常的数据包大小是 ICMP 隧道的指标。尽管如此,攻击者可以创建与常规 ICMP 数据包大小(64 字节)匹配的自定义数据包,因此检测这些隧道活动仍然很麻烦。但是,安全分析师应该了解正常和异常情况,以便发现可能的异常并将其上报以进行进一步分析。
注释 | Wireshark 过滤器 |
---|---|
全局搜索 | icmp |
“ICMP” 选项用于获取唾手可得的成果:数据包长度。ICMP 目标地址。ICMP 有效负载中封装的协议标志。 | data.len > 64 and icmp |
DNS Analysis
域名系统 (DNS) 旨在将 IP 域地址翻译/转换为 IP 地址。它也被称为互联网电话簿。由于它是 Web 服务的重要组成部分,因此被广泛使用和信任,因此经常被忽略。因此,攻击者将其用于数据泄露和 C2 活动。
DNS 分析概述:
与 ICMP 隧道类似,DNS 攻击是在恶意软件执行或漏洞利用后出现/开始的异常。攻击者创建(或已经拥有)域地址并将其配置为 C2 通道。恶意软件或利用后执行的命令将 DNS 查询发送到 C2 服务器。但是,这些查询比默认 DNS 查询更长,并且是为子域地址制作的。不幸的是,这些子域地址不是实际地址;它们是编码命令,如下所示:
“encoded-commands.maliciousdomain.com”
当此查询路由到 C2 服务器时,服务器会将实际的恶意命令发送到主机。由于 DNS 查询是网络活动的自然组成部分,因此这些数据包有可能无法被网络边界检测到。安全分析师应该知道如何调查 DNS 数据包长度和目标地址以发现这些异常。
注释 | Wireshark 过滤器 |
---|---|
全局搜索 | dns |
“DNS” 选项,用于获取唾手可得的成果:查询长度。DNS 地址中的异常和非常规名称。带有编码子域地址的长 DNS 地址。已知模式,如 dnscat 和 dns2tcp。统计分析,如特定目标的异常 DNS 请求量。**!mdns:** 禁用本地链接设备查询。 | dns contains “dnscat” dns.qry.name.len > 15 and !mdns |
Cleartext Protocol Analysis: FTP
明文协议分析
调查明文协议跟踪听起来很容易,但是当需要调查大型网络跟踪以进行事件分析和响应时,游戏就变了。正确的分析不仅仅是跟踪流和读取明文数据。对于安全分析师来说,从调查过程中创建统计数据和关键结果非常重要。正如前面在 Wireshark 房间系列开始时提到的,分析师应该具备完成此任务所需的网络知识和工具技能。让我们用 Wireshark 模拟明文协议调查!
FTP 分析
文件传输协议 (FTP) 旨在轻松传输文件,因此它注重简单性而不是安全性。因此,在不安全的环境中使用此协议可能会产生安全问题,例如:
- MITM 攻击
- 凭据窃取和未经授权的访问
- 网络钓鱼
- 恶意软件植入
- 数据泄露
FTP 分析简介:
注释 | Wireshark 过滤器 |
---|---|
全局搜索 | ftp |
“FTP”系列选项,用于获取唾手可得的成果:x1x系列:信息请求响应。x2x系列:连接消息。x3x系列:身份验证消息。注意:“200”表示命令成功。 | — |
“x1x”系列选项,用于获取唾手可得的成果:211:系统状态。212:目录状态。213:文件状态 | ftp.response.code == 211 |
“x2x”系列选项,用于获取唾手可得的成果:220:服务就绪。227:进入被动模式。228:长被动模式。229:扩展被动模式。 | ftp.response.code == 227 |
“x3x”系列选项用于获取唾手可得的果实:230:用户登录。231:用户注销。331:有效用户名。430:无效的用户名或密码530:未登录,密码无效。 | ftp.response.code == 230 |
“FTP”命令用于获取唾手可得的果实:USER:用户名。PASS:密码。CWD:当前工作目录。LIST:列表。 | ftp.request.command == "USER"``ftp.request.command == "PASS"``ftp.request.arg == "password" |
获取唾手可得的果实的高级用法示例:暴力破解信号:列出失败的登录尝试。暴力破解信号:列出目标用户名。密码喷洒信号:列出静态密码的目标。 | ftp.response.code == 530 (ftp.response.code == 530) and (ftp.response.arg contains “username”) (ftp.request.command == “PASS” ) and (ftp.request.arg == “password”) |
Cleartext Protocol Analysis: HTTP
HTTP 分析
超文本传输协议 (HTTP) 是一种基于明文的请求-响应和客户端-服务器协议。它是请求/提供网页的标准网络活动类型,默认情况下,它不会被任何网络边界阻止。由于未加密且是网络流量的主干,HTTP 是流量分析中必须了解的协议之一。借助 HTTP 分析可以检测到以下攻击:
- 钓鱼页面
- 网络攻击
- 数据泄露
- 命令和控制流量 (C2)
HTTP 分析简介:
注释 | Wireshark 过滤器 |
---|---|
全局搜索注释:HTTP2 是 HTTP 协议的修订版,旨在提高性能和安全性。它支持二进制数据传输和请求与响应多路复用。 | http``http2 |
“HTTP 请求方法”** 用于获取唾手可得的成果:GETPOST请求:列出所有请求 | http.request.method == "GET" http.request.method == "POST" http.request |
“HTTP 响应状态代码”** 用于获取唾手可得的成果:200 OK:请求成功。301 永久移动:资源被移动到新的 URL/路径(永久)。302 临时移动:资源被移动到新的 URL/路径(临时)。400 错误请求:服务器无法理解该请求。401 未授权:URL 需要授权(登录等)。403 禁止:无法访问请求的 URL。 404 未找到:服务器找不到请求的 URL。405 方法不允许:使用的方法不合适或被阻止。408 请求超时:请求等待时间超过服务器等待时间。500 内部服务器错误:请求未完成,意外错误。503 服务不可用:请求未完成服务器或服务已关闭。 | http.response.code == 200 http.response.code == 401 http.response.code == 403 http.response.code == 404 http.response.code == 405 http.response.code == 503 |
用于获取唾手可得的成果的“HTTP 参数”:用户代理:Web 服务器应用程序的浏览器和操作系统标识。请求 URI:指向服务器请求的资源。 完整 *URI:完整的 URI 信息。*URI:统一资源标识符。 | http.user_agent contains “nmap” http.request.uri contains “admin” http.request.full_uri contains “admin” |
用于获取唾手可得的成果的“HTTP 参数”:服务器:服务器服务名称。主机:服务器的主机名连接:连接状态。基于行的文本数据:服务器提供的明文数据。HTML 表单 URL 编码:Web 表单信息。 | http.server contains “apache” http.host contains “keyword” http.host == “keyword” http.connection == “Keep-Alive” data-text-lines contains “keyword” |
用户代理分析
当攻击者使用复杂的技术进行攻击时,他们会试图通过已知和受信任的协议留下类似于自然流量的痕迹。对于安全分析师来说,发现数据包中异常的迹象非常重要。“用户代理”字段是发现 HTTP 流量异常的重要资源之一。在某些情况下,攻击者成功修改了用户代理数据,这看起来非常自然。安全分析师不能仅依靠用户代理字段来发现异常。切勿将用户代理列入白名单,即使它看起来很自然。基于用户代理的异常/威胁检测/搜寻是需要检查的额外数据源,在出现明显异常时非常有用。如果您不确定某个值,可以进行网络搜索,使用默认和正常的用户代理信息验证您的发现(示例站点)。
用户代理分析概述:
注释 | Wireshark 过滤器 |
---|---|
全局搜索。 | http.user_agent |
获取唾手可得的成果的研究成果:短时间内来自同一主机的不同用户代理信息。非标准和自定义用户代理信息。细微的拼写差异。(“Mozilla”与“Mozlilla”或“Mozlila”不同)用户代理字段中的审计工具信息,如 Nmap、Nikto、Wfuzz 和 sqlmap。用户代理字段中的有效负载数据。 | (http.user_agent contains “sqlmap”) or (http.user_agent contains “Nmap”) or (http.user_agent contains “Wfuzz”) or (http.user_agent contains “Nikto”) |
Log4j Analysis
适当的调查始于对要追踪的威胁和异常的事先研究。在启动 Wireshark 之前,让我们回顾一下有关“Log4j”攻击的已知信息。
Log4j 漏洞分析概述:
注释 | Wireshark 过滤器 |
---|---|
抓住唾手可得的果实的研究成果:攻击以“POST”请求开始已知的明文模式:“jndi:ldap”和“Exploit.class”。 | http.request.method == “POST” (ip contains “jndi”) or ( ip contains “Exploit”) (frame contains “jndi”) or ( frame contains “Exploit”) (http.user_agent contains “$”) or (http.user_agent contains “==”) |
Encrypted Protocol Analysis: Decrypting HTTPS
Decrypting HTTPS Traffic
在调查网络流量时,分析师经常会遇到加密流量。这是由于使用超文本传输协议安全 (HTTPS) 协议来增强安全性,以防范欺骗、嗅探和拦截攻击。HTTPS 使用 TLS 协议加密通信,因此如果没有加密/解密密钥对,就无法解密流量并查看传输的数据。由于此协议为传输敏感数据提供了良好的安全性,因此攻击者和恶意网站也使用 HTTPS。因此,安全分析师应该知道如何使用密钥文件解密加密流量并调查流量活动。
由于 HTTP 流量是加密的,数据包将以不同的颜色显示。此外,协议和信息详细信息(实际 URL 地址和从服务器返回的数据)将不会完全可见。下面的第一张图片显示了使用 TLS 协议加密的 HTTP 数据包。第二张和第三张图片演示了在不使用密钥日志文件的情况下过滤 HTTP 数据包。
HTTPS 的其他信息:
注释 | Wireshark 过滤器 |
---|---|
用于获取低垂果实的“HTTPS参数”:请求:列出所有请求TLS**:全局 TLS 搜索TLS 客户端请求TLS 服务器响应本地简单服务发现协议 (SSDP)**注意:SSDP 是一种提供网络服务广告和发现的网络协议。 | http.request tls tls.handshake.type == 1 tls.handshake.type == 2 ssdp |
与 TCP 三次握手过程类似,TLS 协议也有自己的握手过程。前两个步骤包含“客户端 Hello”和“服务器 Hello”消息。给定的过滤器在捕获文件中显示初始 hello 数据包。这些过滤器有助于发现哪些 IP 地址参与了 TLS 握手。
- 客户端 Hello:
(http.request or tls.handshake.type == 1) and !(ssdp)
- 服务器 Hello:
(http.request or tls.handshake.type == 2) and !(ssdp)
加密密钥日志文件是一个文本文件,其中包含用于解密加密流量会话的唯一密钥对。当与启用 SSL/TLS 的网页建立连接时,这些密钥对会自动创建(每个会话)。由于这些过程都是在浏览器中完成的,因此您需要配置系统并使用合适的浏览器(Chrome 和 Firefox 支持此操作)将这些值保存为密钥日志文件。为此,您需要设置环境变量并创建 SSLKEYLOGFILE,浏览器会在您浏览网页时将密钥转储到此文件中。SSL/TLS 密钥对是在连接时为每个会话创建的,因此在流量捕获期间转储密钥非常重要。否则,无法创建/生成合适的密钥日志文件来解密捕获的流量。您可以使用“右键单击”菜单或“编辑 –> 首选项 –> 协议 –> TLS”菜单来添加/删除密钥日志文件。
使用“右键单击”菜单添加密钥日志文件:
使用“编辑 –> 首选项 –> 协议 –> TLS” 菜单添加密钥日志文件:
使用/不使用密钥日志文件查看流量:
上图显示使用密钥日志文件后可以看到流量详细信息。请注意,数据包详细信息和字节窗格以不同的格式提供数据以供调查。解密流量后,可以获得解压缩的标头信息和 HTTP2 数据包详细信息。根据数据包详细信息,您还可以获得以下数据格式:
- 帧
- 解密的 TLS
- 解压缩的标头
- 重新组装的 TCP
- 重新组装的 SSL
Bonus: Hunt Cleartext Credentials!
Bonus: Hunt Cleartext Credentials!
到目前为止,我们讨论了如何检查数据包中的特定情况并发现异常。正如第一个房间中提到的,Wireshark 不是 IDS,但它在专家信息下为某些情况提供了建议。但是,有时异常会复制合法流量,因此检测变得更加困难。例如,在明文凭证搜索案例中,很难发现多个凭证输入并确定是否存在暴力攻击或是否是标准用户输入了错误的凭证。
由于所有内容都呈现在数据包级别,因此乍一看很难发现多个用户名/密码条目。当分析师可以将凭证条目视为列表时,检测时间将会减少。Wireshark 具有这样的功能,可帮助想要搜索明文凭证条目的分析师。
一些 Wireshark 解析器(FTP、HTTP、IMAP、pop 和 SMTP)被编程为从捕获文件中提取明文密码。您可以使用“工具 –> 凭据”菜单查看检测到的凭据。此功能仅在特定版本的 Wireshark(v3.1 及更高版本)后才有效。由于该功能仅适用于特定协议,因此建议进行手动检查,而不要完全依赖此功能来判断流量中是否存在明文凭据。
一旦您使用该功能,它将打开一个新窗口并提供检测到的凭据。它将显示数据包编号、协议、用户名和其他信息。此窗口是可点击的;单击数据包编号将选择包含密码的数据包,单击用户名将选择包含用户名信息的数据包。附加部分会提示包含用户名的数据包编号。
Bonus: Actionable Results!
奖励:可操作的结果!
您已经调查了流量、检测到异常并创建了进一步调查的注释。下一步是什么?并非每个案例调查都由众包团队进行。作为安全分析师,在某些情况下,您需要发现异常、确定来源并采取行动。Wireshark 不只是关于数据包详细信息;它可以帮助您创建只需单击几下即可实施的防火墙规则。您可以使用“工具 –> 防火墙 ACL 规则”菜单创建防火墙规则。使用此功能后,它将打开一个新窗口并提供用于不同目的的规则组合(基于 IP、端口和 MAC 地址)。请注意,这些规则是为在外部防火墙接口上实施而生成的。
目前,Wireshark 可以为以下对象创建规则:
- Netfilter (iptables)
- Cisco IOS(标准/扩展)
- IP 过滤器 (ipfilter)
- IPFirewall (ipfw)
- 数据包过滤器 (pf)
- Windows 防火墙(netsh 新/旧格式)
Conclusion
恭喜! 您刚刚完成了“Wireshark:流量分析”房间。
在这个房间中,我们介绍了如何使用 Wireshark 检测异常并在数据包级别调查感兴趣的事件。现在,我们邀请您完成 Wireshark 挑战房间:Carnage、**Warzone 1** 和 **Warzone 2**。
Wireshark 是启动网络安全调查的好工具。但是,它不足以阻止威胁。安全分析师应该具备 IDS/IPS 知识和扩展工具技能来检测和预防异常和威胁。随着攻击变得越来越复杂,使用多种工具和检测策略成为一种要求。以下房间将帮助您在网络流量分析和异常/威胁检测方面取得进步。