Wireshar
一、Wireshark基础认知
1.1 Wireshark是什么
Wireshark是全球使用最广泛的开源网络抓包分析软件,可以实时捕获网络接口上的数据包,并提供详细的协议分析。它主要用于:
- 网络故障排查:诊断网络连接问题、延迟、丢包等
- 安全分析:检测恶意流量、攻击溯源、病毒传播
- 协议学习:深入理解TCP/IP、HTTP、DNS等协议工作原理
- 应用调试:分析应用层通信问题
技术原理:使用WinPCAP(Windows)或libpcap(Linux/macOS)作为驱动接口,直接与网卡进行数据报文交换。
1.2 抓包原理与环境
根据网络环境不同,抓包方式分为两类:
单机环境:直接抓取本机网卡收发的所有数据包
交换机环境(局域网抓包):
- 端口镜像:配置交换机将指定端口的流量复制到监控端口
- ARP欺骗:通过伪造MAC地址获取其他设备的流量(谨慎使用,可能违法)
1.3 安装与配置
Windows安装步骤:
- 访问官网 www.wireshark.org 下载最新版本
- 运行安装程序,建议全部使用默认选项
- 安装过程中会提示安装Npcap(推荐选择"Install Npcap")
- 完成安装后重启电脑(部分系统需要)
Linux安装:
| |
首次运行配置:
- 以管理员/root权限运行(捕获数据包需要高级权限)
- 选择网卡时,可通过
ipconfig(Windows)或ifconfig(Linux)命令确认当前使用的网络接口
二、界面详解(六大区域)
启动Wireshark后,主界面分为六个核心区域:
2.1 菜单栏
顶部标准菜单,包含所有功能入口:
- 文件:打开、保存、导出抓包文件
- 编辑:查找、标记、首选项
- 视图:数据包着色、时间格式、布局设置
- 捕获:开始/停止抓包、捕获选项、接口列表
- 分析:显示过滤器、解码方式、专家信息
- 统计:各类统计图表和报告
- 电话:VoIP通话分析
- 无线:WiFi相关功能
- 工具:防火墙规则生成、Lua脚本
- 帮助:文档和协议参考
2.2 工具栏
常用功能快捷按钮(鼠标悬停可查看提示):
- 蓝色鲨鱼鳍:开始抓包
- 红色方块:停止抓包
- 黄色齿轮:捕获选项
- 放大镜:放大/缩小/还原字体
- 过滤器输入框:快速输入显示过滤器
2.3 数据包列表(Packet List)
显示所有捕获的数据包摘要,默认列包括:
- No.:数据包序号
- Time:捕获时间(相对于抓包开始的时间)
- Source:源IP地址
- Destination:目标IP地址
- Protocol:协议类型(HTTP, TCP, DNS等)
- Length:数据包长度(字节)
- Info:协议详细信息摘要
列管理操作:
- 添加列:在详情面板右键任意字段 → “应用为列”(或Ctrl+Shift+I)
- 隐藏列:在列标题右键 → 取消勾选
- 删除列:在列标题右键 → “Remove this Column”
- 移动列:直接拖动列标题调整顺序
2.4 数据包详情(Packet Details)
分层展示选中数据包的详细协议信息,按OSI模型层次展开:
| |
每行前的+号可展开查看具体字段值。
2.5 数据包字节(Packet Bytes)
显示选中数据包的原始十六进制和ASCII内容,用于深入分析。
2.6 状态栏
底部信息栏显示:
- 当前抓包状态
- 数据包总数和显示数量
- 配置文件路径
- 捕获文件大小
三、基础抓包操作
3.1 选择网卡并开始抓包
- 启动Wireshark,进入网卡选择界面
- 识别网卡(通常WLAN是无线网卡,Ethernet是有线网卡)
- 双击网卡名称立即开始抓包
- 或选中网卡后点击左上角的蓝色鲨鱼鳍按钮
小技巧:不确定用哪个网卡时,在CMD中运行ping www.baidu.com,观察哪个网卡有流量波动。
3.2 常用抓包选项
点击捕获选项(黄色齿轮)可设置:
- 混杂模式:捕获网卡上所有数据包(包括非本机),默认开启
- 捕获过滤器:预设过滤条件,减少不必要的数据
- 文件输出:自动保存到文件,可设置文件大小分割
- 停止条件:按时间、大小或数据包数量自动停止
3.3 停止与保存
- 停止抓包:点击左上角的红色方块按钮
- 重新开始:点击绿色圆形箭头(会清空当前数据)
- 继续抓包:停止后再次点击蓝色鲨鱼鳍(数据追加)
保存数据:
- 点击文件 → 保存(或Ctrl+S)
- 选择保存位置,格式选择默认的.pcapng
- 或直接点击工具栏的保存图标
3.4 导出特定数据包
当只需要部分数据时:
- 导出单个:选中数据包 → 文件 → 导出特定分组 → 勾选"Selected packets only"
- 导出标记的:先按Ctrl+M标记多个包 → 导出时勾选"Marked packets only"
- 导出过滤器结果:在导出界面勾选"All packets displayed"
四、时间显示设置
默认时间格式不易阅读,建议调整:
- 点击菜单 视图 → 时间显示格式
- 推荐选择:“日期和时间(YYYY-MM-MM) 和 自开始经过的秒数”
- 精度选择:“自动” 或 “秒”
时间基准可切换:
- 自捕获开始经过的时间(默认)
- 自上次显示的数据包经过的时间
- 自上一个已标记的数据包经过的时间
五、过滤器深度详解(核心功能)
5.1 两种过滤器的区别
| 类型 | 作用时机 | 优点 | 缺点 | 使用场景 |
|---|---|---|---|---|
| 捕获过滤器 | 抓包时过滤 | 减少数据量,性能高 | 不可逆,丢失的数据无法恢复 | 大流量、长时间抓包 |
| 显示过滤器 | 抓包后过滤 | 灵活,可随时修改 | 占用内存大 | 精确分析、调试 |
5.2 捕获过滤器(Capture Filter)语法
采用BPF(Berkeley Packet Filter)语法:
| |
常用示例:
| |
配置位置:捕获选项 → 捕获过滤器输入框
5.3 显示过滤器(Display Filter)语法
Wireshark特有语法,功能更强大:
| |
基本运算符:
==等于!=不等于>大于<小于>=大于等于=<小于等于contains包含字符串matches匹配正则表达式in在集合中
逻辑运算符:
&&或and与||或or或!或not非
常用过滤表达式大全:
按协议过滤:
| |
按IP地址:
| |
按端口:
| |
按域名:
| |
按数据内容:
| |
组合过滤:
| |
过滤HTTP状态码:
| |
过滤TCP问题:
| |
5.4 显示过滤器实践技巧
- 自动补全:输入时按Tab键自动补全协议和字段名
- 表达式 builder:点击过滤器输入框右侧的表达式按钮,图形化构建过滤器
- 保存常用过滤器:在过滤器输入框下拉箭头中可保存和管理常用表达式
- 清除过滤器:点击过滤器输入框右侧的X按钮
六、数据包分析进阶
6.1 标记与高亮
标记重要数据包:
- 选中数据包 → 右键 → 标记/取消标记(或Ctrl+M)
- 被标记的包背景变为黑色,便于快速定位
着色规则: Wireshark默认按协议着色:
- 浅绿色:HTTP
- 深绿色:TCP
- 浅蓝色:UDP
- 黑色:TCP错误包
自定义着色:
- 视图 → 着色规则
- 可新建规则,如:将状态码500的HTTP包标记为红色
- 格式:
http.response.code >= 500
6.2 流追踪(Follow Stream)
将TCP/UDP会话重组为完整数据流:
- 右键数据包 → 追踪流 → TCP流
- 新窗口显示完整的客户端-服务器通信
- 红色表示客户端发送,蓝色表示服务器响应
- 支持保存原始数据为文本或图片
应用场景:
- 查看完整HTTP请求和响应
- 分析FTP文件传输内容
- 调试API调用
6.3 统计功能
协议分级:
- 统计 → 协议分级
- 显示各协议层次的流量占比和包数
- 快速识别异常流量类型
IO图表:
- 统计 → IO图表
- 可视化网络流量随时间变化
- 可自定义图表类型(数据包数、字节数等)
流量图(Flow Graph):
- 统计 → 流量图
- 图形化展示TCP会话时序
- 分析延迟和丢包位置
会话统计:
- 统计 → 会话
- 查看IP、TCP、UDP会话列表
- 按数据量排序找出大流量连接
七、实战分析场景
7.1 HTTP请求分析
- 过滤:
http - 查看Info列的HTTP方法(GET/POST)
- 双击数据包查看详情:
- 展开Hypertext Transfer Protocol
- 查看请求URL、Header、Cookie
- 右键 → 追踪流 → 查看完整请求响应
分析响应时间:
- 查看Time列的时间差
- 统计 → 服务响应时间 → HTTP
7.2 TCP连接问题诊断
三次握手分析:
- 过滤:
tcp.flags.syn == 1 - 正常流程:SYN → SYN,ACK → ACK
重传检测:
- 过滤:
tcp.analysis.retransmission - 大量重传表明网络质量差或服务器过载
RST问题:
- 过滤:
tcp.flags.reset == 1 - RST表示连接被强制关闭,可能端口未监听或防火墙拦截
7.3 DNS问题排查
- 过滤:
dns - 查看查询和响应:
- 查询:
dns.flags.response == 0 - 响应:
dns.flags.response == 1
- 查询:
- 检查响应时间(Time列)
- 过滤失败响应:
dns.flags.rcode != 0
7.4 性能问题分析
高延迟定位:
- 统计 → IO图表 → 显示过滤器填入
tcp.time_delta > 0.1(100ms) - 使用TCP时间分析:
- 展开TCP详情 → 查看Time since previous frame
- 过滤:
tcp.time_delta > 0.5找出慢响应
带宽占用:
- 统计 → 协议分级 → 查看各协议字节数
- 统计 → 会话 → TCP → 按Bytes排序找出大流量连接
八、高级技巧与最佳实践
8.1 性能优化
大流量抓包:
- 使用捕获过滤器减少数据量
- 设置文件环形缓冲:捕获选项 → 使用多个文件 → 设置文件大小和数量
- 限制每包大小:捕获选项 → 限制每个数据包为N字节
内存管理:
- 编辑 → 首选项 → 高级 → 设置捕获文件缓存大小
- 定期保存和清空数据:文件 → 关闭并重新开始
8.2 安全分析
检测扫描行为:
- 过滤大量SYN包:
tcp.flags.syn == 1 && tcp.flags.ack == 0 - 统计 → 会话 → 查看大量半开连接
检测恶意流量:
- 过滤可疑域名:
dns.qry.name contains "exe" - 分析异常端口:
tcp.port == 4444(常见木马端口)
8.3 HTTPS解密
Wireshark默认无法解密HTTPS,需要配置:
方法一:浏览器密钥日志
- Chrome/Firefox设置环境变量
SSLKEYLOGFILE - Wireshark:编辑 → 首选项 → Protocols → TLS → 导入密钥日志文件
- Chrome/Firefox设置环境变量
方法二:使用Fiddler中间人代理
8.4 常用快捷键
| 快捷键 | 功能 |
|---|---|
| Ctrl+E | 开始/停止抓包 |
| Ctrl+M | 标记/取消标记数据包 |
| Ctrl+F | 查找(支持多种模式) |
| Ctrl+S | 保存文件 |
| Ctrl+R | 重新加载文件 |
| F5 | 重新应用过滤器 |
| Tab | 自动补全过滤器 |
| Shift+Ctrl+D | 复制数据包摘要 |
| Alt+→ | 在协议树中展开下一个 |
8.5 配置文件管理
- 导出配置:编辑 → 配置文件夹 → 备份所有文件
- 导入配置:将备份文件复制到新电脑的配置文件夹
- 重置配置:帮助 → 关于Wireshark → 文件夹 → 双击后删除文件
九、学习资源与社区
- 官方文档:https://www.wireshark.org/docs/
- 协议参考:https://www.wireshark.org/docs/dfref/
- Sample Captures:https://wiki.wireshark.org/SampleCaptures
- 推荐书籍:《Wireshark数据包分析实战》
十、注意事项
- 权限:抓包需要管理员权限
- 隐私:避免在公共网络抓包,可能捕获他人敏感信息
- 法律:未经授权抓取他人流量可能违法
- 性能:大流量抓包会占用大量磁盘空间和内存
- 加密:HTTPS/TLS流量默认不可读
学习建议:
- 先从本机抓包开始,熟悉界面和基本操作
- 掌握显示过滤器是核心,建议每天练习3-5个表达式
- 多使用流追踪功能理解完整通信过程
- 遇到网络问题时,先用Wireshark抓包再分析
- 保存典型的抓包文件,建立自己的分析案例库
这份教程涵盖了Wireshark的核心功能,建议边操作边学习,从简单的HTTP分析开始,逐步深入到TCP/IP协议细节。