Wireshark 是抓包与分析流量的利器,tshark 则是它的命令行版本。本文是一份面向取证与 CTF 场景的速查,覆盖常见协议的分析要点、显示过滤器语法以及 tshark 的常用参数。
常见协议分析要点
拿到一个流量包,先看它包含哪些协议、流量整体在做什么,基本就能定位到寻找答案的位置。
HTTP
- 分析主要集中在流量中的文件或总体分析上:搞明白流量在做什么之后,基本可以定位到寻找答案的位置。
- 重点查看请求方法、URI、Host 头、Cookie、表单提交内容等字段,CTF 中常直接在明文 HTTP 流量中携带 flag 或敏感信息。
HTTPS
- HTTPS = HTTP + SSL/TLS,服务端和客户端的信息传输都会通过 TLS 加密,因此传输的数据都是加密后的数据。
- 若打开流量包发现是 SSL 加密过的数据,导入题目提供的私钥即可解密。Wireshark 操作路径:
编辑 > 首选项 > Protocols > TLS > Edit RSA keys list。
TCP
- TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- TCP 连接需要三次握手才能建立,建立连接之后才开始发送数据,且可以保证数据的完整性,利用重传机制防止数据传输过程中的丢失;断开连接则需要四次挥手。
UDP
UDP 报文头字段:
- 源端口:通常包含发送数据报的应用程序所使用的 UDP 端口。
- 目的端口:接收端计算机上 UDP 软件使用的端口。
- 长度:UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
- 校验值:可以校验数据在传输过程中是否被损坏。
UDP 是面向无连接、不可靠的传输协议,适用于语音、视频等实时性要求较高的场景。
DNS
- DNS 通常使用 UDP 协议。
- DNS 定义了两种报文:一种为查询报文;另一种是对查询报文的响应,称为响应报文。
FTP
- Wireshark 把带有 FTP 控制信息的包解析为 FTP 协议。
- 对于只传输了文件内容或者命令执行结果的 FTP 数据包,解析为 FTP-DATA。
显示过滤器(Display Filter)
在 Wireshark 顶部的过滤栏输入,常用语法:
text
ip.src == 192.168.1.100 筛选源地址为 192.168.1.100 的数据包
ip.dst == 192.168.1.100 筛选目标地址为 192.168.1.100 的数据包
ip.addr == 192.168.1.100 筛选源 IP 或目标 IP 为 192.168.1.100 的数据包
tcp.port == 80 筛选源或目的端口为 80 的数据包
tcp.srcport == 80 筛选 TCP 源端口为 80 的数据包
tcp.dstport == 80 筛选 TCP 目的端口为 80 的数据包tshark 命令行速查
tshark 是 Wireshark 的命令行版本网络分析工具,完全开源、跨平台,继承了 Wireshark 强大的协议解析能力,同时具备命令行工具的自动化、无依赖特性,非常适合在无 GUI 环境(如服务器)、批量处理数据包、编写取证脚本等场景下使用。
基本用法:
text
tshark [选项] [过滤规则]主要参数:
| 参数 | 说明 |
|---|---|
-T | 设置解码结果输出格式:pdml / ps / text / fields / psml,默认为 text |
-e | 与 -T fields 配合,指定输出哪些字段 |
-R | 读取过滤器(read filter),过滤语法同显示过滤器;新版本中已由 -Y 取代 |
-r | 设置读取本地文件 <infile> |
-Y | 显示过滤器(display filter),单次分析中可代替 -R |
示例:从 pcapng 中按条件提取字段并保存到文本文件。
text
tshark -r modbus.pcapng -e modbus.regval_uint16 -Y "frame.len == 66 && tcp.srcport == 502" -T fields > mm.txt参数说明:
-r:读取的文件名modbus.pcapng-e:提取的字段名称-Y:过滤的条件-T:提取的格式> mm.txt:将提取的数据保存到mm.txt文件
各选项之间的顺序不影响结果。
- 本文链接: https://diyuyizhu.github.io/posts/traffic-analysis-wireshark/
- 版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。
