【点这里】wireshark抓包实战视频
实战场景:分析网页访问过程
我们将分析访问百度首页的完整过程,涵盖 DNS、TCP、HTTP 等协议。
第一步:准备工作
1. 启动
bash
# 在终端启动或直接点击图标
sudo wireshark # Linux可能需要sudo权限
2. 配置捕获设置
推荐配置:
-
菜单栏 →
捕获→选项 -
勾选"在所有接口上使用混杂模式"
-
设置"每个数据包的最大字节数"为默认的262144
-
关键步骤:创建捕获过滤器避免干扰
# 只抓取DNS、HTTP/HTTPS和与百度的通信 port 53 or port 80 or port 443 or host www.baidu.com
第二步:开始抓包与分析
1. 开始抓包
bash
# 1. 选择正确的网络接口(通常是Wi-Fi或以太网)
# 2. 点击"开始捕获"(蓝色鲨鱼鳍)
# 3. 立即打开浏览器访问:http://www.baidu.com
# 4. 等待页面加载完成后,返回Wireshark点击"停止"
2. 初始过滤与概览
bash
# 应用显示过滤器查看关键流量
http or dns or tcp.port == 443
# 或者按对话查看
统计 → 会话 → 查看TCP/UDP对话
观察到的典型流量模式:
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.1.100 8.8.8.8 DNS 86 Standard query A www.baidu.com
2 0.025000 8.8.8.8 192.168.1.100 DNS 102 Standard query response A 110.242.68.4
3 0.026000 192.168.1.100 110.242.68.4 TCP 66 59312 → 80 [SYN]
4 0.056000 110.242.68.4 192.168.1.100 TCP 66 80 → 59312 [SYN, ACK]
5 0.056000 192.168.1.100 110.242.68.4 TCP 54 59312 → 80 [ACK]
6 0.057000 192.168.1.100 110.242.68.4 HTTP 531 GET / HTTP/1.1
...
第三步:协议逐层深度分析
bash
# 过滤DNS包
dns
# 或精确查找百度查询
dns.qry.name contains "baidu"
分析具体数据包:
请求包分析:
Frame 1: 86 bytes on wire
Ethernet II: 源MAC、目标MAC
Internet Protocol: 源IP(192.168.1.100)、目标IP(8.8.8.8)
User Datagram Protocol: 源端口53 → 目标端口随机高位端口
Domain Name System (query)
Transaction ID: 0x9a1b
Flags: 0x0100 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries
www.baidu.com: type A, class IN
响应包分析:
Domain Name System (response)
Transaction ID: 0x9a1b # 与请求匹配
Flags: 0x8180 Standard query response, No error
Questions: 1
Answer RRs: 2
Answers:
www.baidu.com: type CNAME, class IN, cname www.a.shifen.com
www.a.shifen.com: type A, class IN, addr 110.242.68.4
2. TCP 三次握手分析
bash
# 过滤TCP握手
tcp.flags.syn == 1 and tcp.flags.ack == 0
# 或追踪整个TCP流
右键任意TCP包 → 追踪流 → TCP流
详细分析握手过程:
客户端 SYN
Transmission Control Protocol
Source Port: 59312
Destination Port: 80
Stream index: 0
TCP Segment Len: 0
Sequence number: 0 (relative sequence number)
Acknowledgment number: 0
Flags: 0x002 (SYN)
Window size value: 65535
Calculated window size: 65535
Window size scaling factor: -1 (unknown)
Options: (12 bytes)
Maximum segment size: 1460 bytes
No-Operation (NOP)
Window scale: 6 (multiply by 64)
SACK permitted
服务器 SYN-ACK
Flags: 0x012 (SYN, ACK)
Sequence number: 0
Acknowledgment number: 1 # 确认客户端的SYN
Window size value: 8192
Maximum segment size: 1460 bytes
客户端 ACK
Flags: 0x010 (ACK)
Sequence number: 1
Acknowledgment number: 1 # 确认服务器的SYN
3. HTTP 请求/响应分析
bash
# 过滤HTTP请求
http.request.method == "GET"
# 查看完整的HTTP流
右键HTTP包 → 追踪流 → HTTP流
HTTP GET 请求分析:
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
Host: www.baidu.com\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0...Chrome/120.0.0.0\r\n
Accept: text/html,...\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
\r\n
Full request URI: http://www.baidu.com/
HTTP request 1/1
Response in frame: 8
HTTP 响应分析
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
Date: Wed, 15 Mar 2024 08:00:00 GMT\r\n
Content-Type: text/html;charset=utf-8\r\n
Connection: keep-alive\r\n
Vary: Accept-Encoding\r\n
Cache-Control: private, no-cache, no-store, proxy-revalidate\r\n
Content-Length: 2381\r\n
\r\n
HTTP response 1/1
Time since request: 0.036000000 seconds
Request in frame: 6
Next request in frame: 12
File Data: 2381 bytes
第四步:高级分析技巧
发现TCP重传:
bash
# 查找重传包
tcp.analysis.retransmission
# 或通过着色规则快速识别
# 黑色背景的包通常是重传
2. 流量统计与可视化
bash
# 1. 查看协议分布
统计 → 协议分级
# 2. 查看端点通信情况
统计 → 端点 → IPv4标签页
# 可以看到与哪些IP通信最频繁
# 3. 生成IO图表分析流量模式
统计 → IO图表
# 添加图形:每秒钟数据包数、字节数等
3. 解密HTTPS流量(需配置)
bash
# 前提:拥有服务器的私钥或配置了SSLKEYLOGFILE
编辑 → 首选项 → 协议 → TLS
# 在(Pre)-Master-Secret log filename中指定日志文件
第五步:实战场景演练
1:网站访问慢的诊断
bash
# 1. 过滤出问题的网站流量
ip.addr == 110.242.68.4
# 2. 检查时间差
# 添加时间列:右键列头 → 列偏好设置 → 添加新列
# 类型:Delta time,显示为秒
# 3. 查找瓶颈
tcp.analysis # 查看专家信息
统计 → 对话 → 查看哪些连接耗时最长
2:检测异常连接
bash
# 1. 查找可疑端口
tcp.port >= 10000 and tcp.port <= 65535
# 查看高位端口的异常连接
# 2. 查找大量SYN包(端口扫描特征)
tcp.flags.syn == 1 and tcp.flags.ack == 0
统计 → 对话 → 排序查看SYN数量
# 3. 查找DNS隧道特征
dns.qry.name.len > 50 # 超长域名
dns.qry.type == 0x10 # TXT记录滥用
3:分析API调用
bash
# 1. 过滤特定API路径
http.request.uri contains "/api/"
# 2. 查看JSON响应
右键 → 追踪流 → HTTP流
# 可以查看完整的JSON请求/响应
# 3. 分析API性能
http.time # 响应时间过滤
第六步:报告生成与保存
bash
# 保存过滤后的数据
文件 → 导出特定分组...
# 可以只保存过滤后的包
# 保存统计信息
统计 → 各种统计 → 复制为CSV/保存
2. 标记重要发现
bash
# 给重要数据包添加注释
右键包 → 添加分组注释
# 包列表会显示笔记图标
# 使用书签
右键包 → 标记/取消标记分组
3. 生成报告
bash
文件 → 导出分组解析结果 → 为纯文本
# 包含所有解析信息
# 或使用tshark命令行生成报告
tshark -r capture.pcap -Y "http" -V > http_analysis.txt
掌握 Wireshark 的精髓可归结为三点:深刻理解网络协议的语言,熟练运用过滤器锁定关键信息,并在真实的抓包实践中反复磨练。
