工具介绍
Wireshark是Kali Linux中一款功能强大的可视化网络流量分析工具,支持跨平台(Linux、Windows、macOS),核心能力是"捕获网络数据包并以图形化界面解析协议细节",广泛应用于网络故障排查、协议分析、安全审计、渗透测试等场景。其本质是"图形化前端+底层捕获引擎(如libpcap)"的组合,既满足新手的可视化操作需求,也支持高级用户的自定义分析逻辑。
1. 核心特性
- 全协议支持:原生支持超过2000种网络协议(如TCP、UDP、ICMP、ARP、DNS、HTTP、HTTPS、SMB、Kerberos等),且持续更新新增协议解析规则;
- 灵活的捕获能力:支持多网卡实时捕获、离线PCAP文件分析、自定义捕获过滤规则(如按IP、端口、协议筛选),可设置捕获时长、数据包大小限制;
- 图形化解析界面 :以"三层视图"展示数据包细节------
数据包列表(Packet List)(概览所有捕获包)、数据包详情(Packet Details)(分层解析协议字段)、数据包原始数据(Packet Bytes)(十六进制/ASCII格式); - 强大的过滤功能:支持"捕获过滤"(捕获时筛选流量)和"显示过滤"(捕获后筛选结果),过滤语法简洁且功能丰富(如按协议、IP、端口、字段值过滤);
- 流量分析工具集:内置流量统计(如协议分布、会话分析)、流量追踪(如TCP流追踪、HTTP流重组)、专家信息(自动标记异常流量)等功能,辅助快速定位问题;
- 扩展性强:支持通过Lua脚本自定义协议解析、导出多种格式的分析报告(如CSV、HTML、PDML)、与其他工具(如tshark命令行、scapy)联动。
2. 典型应用场景
- 网络故障排查:定位丢包、延迟、连接中断问题(如分析TCP重传、ICMP错误包);
- 协议学习与分析:可视化理解协议交互流程(如HTTP请求-响应、TCP三次握手/四次挥手);
- 安全审计:检测异常流量(如ARP欺骗、DNS劫持、端口扫描)、分析攻击行为(如SQL注入、XSS攻击的数据包特征);
- 渗透测试辅助:捕获明文认证凭据(如HTTP Basic Auth、FTP密码)、分析加密流量的握手过程(如HTTPS TLS握手);
- 应用调试:验证应用程序发送的网络请求是否符合协议规范(如API接口调用的HTTP头是否正确)。
3. 与其他工具的差异
相比tcpdump(命令行捕获,无可视化)、scapy(可编程但需手动解析),Wireshark的核心优势在于**"易用性+可视化"**------无需编写代码,通过图形界面即可完成从捕获到分析的全流程,适合新手快速上手;同时,其强大的过滤和统计功能,也能满足高级用户的复杂分析需求。
基础环境准备
Wireshark在Kali Linux中默认预装,重点完成权限配置和依赖验证,确保正常捕获流量:
-
确认安装状态 :
通过应用菜单启动:
应用 → Kali Linux → 信息收集 → wireshark;或通过命令行启动:
sudo wireshark(需root权限捕获流量);若未安装,执行命令:
sudo apt update && sudo apt install -y wireshark。 -
权限配置(关键) :
Wireshark捕获流量依赖libpcap库,默认需root权限。为避免每次启动都输入sudo,可将当前用户加入
wireshark用户组:-
添加wireshark用户组(若不存在):
sudo groupadd wireshark; -
将当前用户加入组:
sudo usermod -aG wireshark $USER; -
调整dumpcap(Wireshark底层捕获工具)的权限:
sudo chgrp wireshark /usr/bin/dumpcap && sudo chmod 750 /usr/bin/dumpcap && sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap; -
注销并重新登录,生效用户组配置。
-
-
依赖验证 :
检查libpcap库是否安装(捕获流量必需):
dpkg -l | grep libpcap;若未安装,执行:
sudo apt install -y libpcap-dev。 -
支持的文件格式 :
Wireshark可打开多种流量文件格式,包括:
-- PCAP(默认格式,tcpdump、scapy捕获的文件);
-- PCAPNG(增强格式,支持更多元数据,Wireshark默认保存格式);
-- pcap.gz(压缩PCAP文件)、Ethereal(旧版格式)等。
核心使用教程(图形化界面)
Wireshark的使用流程分为"启动与捕获配置 → 流量捕获 → 结果过滤与分析 → 报告导出"四步,以下按流程详细说明:
1. 第一步:启动与捕获配置
启动Wireshark后,首先配置捕获参数,确保捕获到目标流量:
-
选择网络接口 :
启动后进入"捕获接口"界面,列出当前系统的所有网络接口(如
eth0(有线)、wlan0(无线)、lo(本地回环));-- 若需捕获局域网流量,选择连接局域网的接口(如eth0);
-- 若需捕获本地应用流量(如浏览器请求),选择
lo(本地回环);-- 接口名称旁的数字表示"实时数据包速率"(如100 p/s),可据此判断接口是否有流量。
-
设置捕获过滤规则(可选) :
点击接口旁的
齿轮图标,打开"捕获选项"窗口,在"捕获过滤器"栏输入规则(仅捕获符合规则的流量,减少无关数据):常用捕获过滤规则示例:
tcp port 80:仅捕获TCP 80端口(HTTP)的流量;udp port 53:仅捕获UDP 53端口(DNS)的流量;host 192.168.1.100:仅捕获与目标IP(192.168.1.100)相关的流量;net 192.168.1.0/24:仅捕获192.168.1.0/24网段的流量;not arp:排除ARP协议的流量(减少广播包干扰)。
提示:点击"捕获过滤器"旁的
书签图标,可选择预设规则(如"HTTP""DNS""SSH"),无需手动输入。 -
其他捕获配置(可选) :
在"捕获选项"窗口中,还可设置:
--
捕获文件:指定将流量保存到本地文件(如/tmp/capture.pcapng),避免内存溢出;--
数据包大小限制:仅捕获前N字节(如68字节,仅保留头部信息);--
捕获停止条件:设置捕获时长(如10分钟)、数据包数量(如1000个)或文件大小(如100MB)。 -
启动捕获 :
配置完成后,点击接口旁的
开始按钮(蓝色鲨鱼鳍图标),或"捕获选项"窗口的开始按钮,进入捕获界面。
2. 第二步:流量捕获与实时观察
进入捕获界面后,Wireshark实时显示捕获到的数据包,界面分为三个核心区域(默认布局):
(1)界面区域说明
| 区域名称 | 功能说明 | 关键列/字段 |
|---|---|---|
| 数据包列表(Packet List) | 以表格形式展示所有捕获的数据包,每行代表一个数据包 | -- No.:数据包序号; -- Time:捕获时间(相对于捕获开始的时间); -- Source:源IP/MAC地址; -- Destination:目标IP/MAC地址; -- Protocol:数据包使用的协议; -- Length:数据包大小(字节); -- Info:数据包关键信息(如HTTP请求方法、TCP标志位) |
| 数据包详情(Packet Details) | 分层展示选中数据包的协议结构(从底层到上层),可展开查看每个字段 | -- Ethernet II:二层以太网头(源MAC、目标MAC、类型); -- Internet Protocol Version 4:三层IP头(源IP、目标IP、TTL、协议类型); -- Transmission Control Protocol:四层TCP头(源端口、目标端口、序列号、标志位); -- Hypertext Transfer Protocol:七层HTTP头(请求方法、URL、状态码、响应头) |
| 数据包原始数据(Packet Bytes) | 以十六进制和ASCII格式展示数据包的原始字节内容 | -- 左侧:十六进制编码; -- 右侧:对应的ASCII字符(不可打印字符显示为.); -- 选中"数据包详情"中的字段时,原始数据中对应字节会高亮 |
(2)实时操作技巧
- 暂停/继续捕获 :点击工具栏
暂停按钮(黄色正方形)暂停,点击继续按钮(绿色三角形)恢复; - 停止捕获 :点击工具栏
停止按钮(红色正方形),停止后可专注分析已捕获的流量; - 清除捕获结果 :停止捕获后,点击工具栏
清除按钮(垃圾桶图标),清空当前列表,重新开始捕获; - 标记数据包 :右键点击数据包,选择
Mark Packet,标记后的数据包会显示红色背景,便于后续定位(如标记异常包)。
3. 第三步:结果过滤与深度分析
捕获完成后,通常需要通过"显示过滤"筛选目标流量,结合内置工具进行深度分析:
(1)显示过滤(核心功能)
显示过滤用于在已捕获的所有数据包中,筛选出符合条件的结果(与"捕获过滤"的区别:捕获过滤在捕获时筛选,显示过滤在捕获后筛选),过滤规则输入到界面顶部的Filter输入框中,按回车生效。
常用显示过滤规则示例:
| 过滤需求 | 过滤规则 | 说明 |
|---|---|---|
| 筛选HTTP流量 | http |
显示所有HTTP协议的数据包(包括请求和响应) |
| 筛选HTTPS流量 | tls 或 ssl |
显示所有TLS/SSL协议的流量(HTTPS基于TLS) |
| 筛选指定IP的流量 | ip.addr == 192.168.1.100 |
显示源IP或目标IP为192.168.1.100的数据包 |
| 筛选源IP为指定地址的流量 | ip.src == 192.168.1.100 |
仅显示从192.168.1.100发送的数据包 |
| 筛选目标IP为指定地址的流量 | ip.dst == 192.168.1.1 |
仅显示发送到192.168.1.1(网关)的数据包 |
| 筛选指定端口的流量 | tcp.port == 80 或 udp.port == 53 |
显示TCP 80端口(HTTP)或UDP 53端口(DNS)的流量 |
| 筛选TCP SYN包(端口扫描特征) | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
显示仅含SYN标志位的TCP包(半开扫描的请求包) |
| 筛选DNS查询流量 | dns.qry.type == 1 |
显示DNS A记录查询(查询IPv4地址)的数据包 |
| 筛选包含特定字符串的流量 | frame contains "password" |
显示数据包原始数据中包含"password"字符串的流量(可用于找明文密码) |
| 组合过滤(HTTP+指定IP) | http && ip.addr == 192.168.1.100 |
显示192.168.1.100主机的所有HTTP流量 |
| 排除特定协议的流量 | not arp 或 not dns |
显示除ARP或DNS协议外的所有流量(减少干扰) |
过滤规则使用技巧 :
-- 输入规则时,Wireshark会自动补全(如输入ip.会列出所有IP相关字段);
-- 若规则错误,输入框会显示红色背景,鼠标悬停可查看错误原因;
-- 点击输入框旁的书签图标,可保存常用规则(如"HTTP流量""DNS查询"),后续直接选择。
(2)关键分析工具
针对不同场景,Wireshark提供专用分析工具,以下为常用工具的使用方法:
① TCP流追踪(重组TCP会话)
TCP是面向连接的协议,数据可能分多个数据包传输,通过"TCP流追踪"可重组完整会话内容(如HTTP请求-响应、文件传输数据):
- 在"数据包列表"中,右键点击任意一个TCP数据包;
- 选择
Follow → TCP Stream(或快捷键Ctrl+Alt+Shift+T); - 弹出"Follow TCP Stream"窗口,展示重组后的完整数据流:
- 默认以"ASCII"格式显示,可通过顶部下拉框切换为"Hex Dump"(十六进制)、"C Arrays"(C语言数组)等格式;
- 红色文本:从源IP到目标IP的数据流(如客户端发送的HTTP请求);
- 蓝色文本:从目标IP到源IP的数据流(如服务器返回的HTTP响应);
- 点击
Save As可将重组后的数据流保存为本地文件(如保存HTTP响应中的图片、HTML页面)。
- 关闭窗口后,"数据包列表"中会仅显示该TCP流的数据包(背景为灰色),便于单独分析。
② HTTP流追踪(简化版TCP流,专注HTTP)
针对HTTP流量,Wireshark提供专用的"HTTP流追踪",操作更简洁:
- 右键点击任意HTTP数据包(Protocol列显示"HTTP");
- 选择
Follow → HTTP Stream; - 弹出窗口直接展示HTTP请求头、请求体、响应头、响应体,无需手动区分TCP方向,适合快速查看HTTP交互内容。
③ 协议统计(分析流量分布)
通过"协议统计"可直观了解捕获流量中各协议的占比、会话数量等信息,快速定位主要流量类型:
- 点击顶部菜单栏
Statistics → Protocol Hierarchy; - 弹出"Protocol Hierarchy"窗口,以树形结构展示协议分布:
- 左侧:协议层级(如"Ethernet → IP → TCP → HTTP");
- 右侧:
Packets(该协议的数据包数量)、Bytes(数据量)、% Packets(占比); - 点击某一协议(如HTTP),可展开查看其细分类型(如HTTP GET、HTTP POST)。
- 其他常用统计工具:
Statistics → Conversations:按"IP会话""TCP会话""UDP会话"统计,显示各会话的数据包数量、数据量(可定位高频通信的主机);Statistics → Endpoints:按"IP地址""MAC地址""端口"统计,显示每个端点的通信情况(可定位活跃主机、常用端口);Statistics → DNS:统计DNS查询/响应数量、查询类型分布(可分析DNS欺骗是否成功)。
④ 专家信息(自动标记异常流量)
Wireshark会自动分析流量中的异常情况(如TCP重传、ICMP错误、DNS解析失败),并通过"专家信息"展示,适合快速排查故障:
- 点击顶部菜单栏
Analyze → Expert Info(或快捷键Ctrl+E); - 弹出"Expert Info"窗口,按严重程度分类显示异常:
Error(错误):如TCP重置(RST)、ICMP目标不可达;Warning(警告):如TCP重传、TCP窗口过小;Note(提示):如TCP三次握手、DNS查询成功;- 点击某条信息,可直接定位到对应的数据包,便于分析异常原因。
4. 第四步:流量保存与报告导出
分析完成后,可将捕获的流量或分析结果导出,便于后续分享或存档:
(1)保存捕获的流量文件
- 点击顶部菜单栏
File → Save As(或快捷键Ctrl+S); - 选择保存路径,设置文件名(如
http_capture.pcapng); - 在"Save as type"中选择文件格式:
Wireshark/PCAPNG Files (*.pcapng):默认格式,支持元数据(如捕获时间、接口信息),推荐使用;PCAP Files (*.pcap):兼容其他工具(如tcpdump、scapy),通用性强;Compressed PCAP Files (*.pcap.gz):压缩格式,适合大文件保存。
- 若仅需保存部分数据包(如显示过滤后的结果),可先应用过滤规则,再勾选"Save only filtered packets",点击
Save。
(2)导出分析报告
Wireshark支持将分析结果导出为多种格式,便于生成测试报告:
-
导出数据包列表: 点击
File → Export Packet Dissections → As Text File(或其他格式);选择导出范围(如"All packets""Selected packets""Filtered packets"),设置导出字段(如"Packet summary line""Packet details""Packet bytes"),点击
Save,生成文本格式的报告。 -
导出协议统计报告: 在"Protocol Hierarchy""Conversations"等统计窗口中,点击窗口底部的
Save按钮,选择导出格式(如CSV、HTML),保存统计结果。 -
导出TCP流/HTTP流: 在"Follow TCP Stream"或"Follow HTTP Stream"窗口中,点击
Save As,将重组后的数据流保存为文本文件(如tcp_stream.txt)。
进阶使用教程(场景化实战)
结合渗透测试和故障排查的典型场景,介绍Wireshark的实战用法:
1. 场景1:捕获HTTP明文认证凭据
HTTP Basic Auth或表单提交的明文密码会在流量中传输,通过Wireshark可直接捕获:
- 启动Wireshark,选择目标接口(如eth0),设置捕获过滤规则
tcp port 80,启动捕获; - 在目标主机上访问需要认证的HTTP服务(如http://192.168.1.200/login),输入用户名和密码提交;
- 停止捕获,在Wireshark中应用显示过滤规则
http; - 在"数据包列表"中查找"Info"列显示"POST /login HTTP/1.1"或"GET /admin HTTP/1.1"的数据包:
- 若为HTTP Basic Auth:选中该数据包,在"数据包详情"中展开"Hypertext Transfer Protocol"→"Authorization",可见
Basic dXNlcjE6cGFzc3dvcmQx,其中"dXNlcjE6cGFzc3dvcmQx"为Base64编码,解码后即为"user1:password1"; - 若为表单提交(POST):选中POST数据包,在"数据包详情"中展开"Hypertext Transfer Protocol"→"Line-based text data: application/x-www-form-urlencoded",可见表单数据(如
username=user1&password=password1)。
- 若为HTTP Basic Auth:选中该数据包,在"数据包详情"中展开"Hypertext Transfer Protocol"→"Authorization",可见
2. 场景2:分析DNS欺骗是否成功
在使用mitm6或其他工具实施DNS欺骗后,通过Wireshark验证欺骗效果:
- 启动Wireshark,选择接口,设置捕获过滤规则
udp port 53,启动捕获; - 在目标主机上执行DNS查询(如
nslookup www.test.com); - 停止捕获,应用显示过滤规则
dns; - 分析数据包:
- 查找"Protocol"为"DNS","Info"为"Standard query 0x1234 A www.test.com"的数据包(DNS查询包),确认源IP为目标主机;
- 对应查找"Info"为"Standard query response 0x1234 A www.test.com"的数据包(DNS响应包),查看"数据包详情"中"Domain Name System (response)"→"Answers"→"A"字段的IP地址;
- 若响应IP为攻击机IP(而非真实DNS服务器返回的IP),则DNS欺骗成功。
3. 场景3:排查TCP连接中断问题
若目标主机无法建立TCP连接(如无法访问某端口),通过Wireshark分析中断原因:
- 启动Wireshark,选择接口,设置捕获过滤规则
tcp port 443(以HTTPS端口为例),启动捕获; - 在目标主机上尝试访问目标端口(如
telnet 192.168.1.200 443); - 停止捕获,应用显示过滤规则
tcp.port == 443; - 分析TCP交互过程:
- 若仅看到"SYN"包(Info列显示"49152 → 443 [SYN]"),无"SYN+ACK"响应:可能目标端口未开放,或防火墙拦截了SYN包;
- 若看到"SYN"→"RST"(Info列显示"443 → 49152 [RST, ACK]"):目标端口开放但拒绝连接(如服务未启动,或配置了访问控制);
- 若看到"SYN"→"SYN+ACK"→"ACK"→"RST":三次握手成功后连接被重置,可能目标服务异常或存在应用层过滤。
4. 场景4:离线分析PCAP文件(如渗透测试后复盘)
若已通过tcpdump或scapy捕获了PCAP文件,可通过Wireshark离线分析:
- 启动Wireshark,点击
File → Open(或快捷键Ctrl+O); - 选择PCAP/PCAPNG文件(如
penetration_test.pcap),点击Open; - 后续操作与实时捕获一致:应用显示过滤规则、追踪TCP流、查看协议统计,无需重新捕获流量。
常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无法启动捕获,提示"Permission denied" | 1. 当前用户无捕获权限;2. dumpcap工具权限配置错误 | 1. 临时解决方案:用sudo wireshark启动;2. 永久解决方案:按"基础环境准备"中的步骤配置wireshark用户组和dumpcap权限,注销后重新登录 |
| 捕获不到目标流量(如仅看到本地回环流量) | 1. 选择了错误的网络接口;2. 捕获过滤规则设置过严;3. 目标流量未经过攻击机 | 1. 确认目标接口(如无线连接用wlan0,有线用eth0);2. 暂时移除捕获过滤规则(捕获所有流量)测试;3. 若为局域网流量,确保攻击机与目标在同一网段,或实施ARP欺骗将流量转发到攻击机 |
| HTTPS流量无法解析(仅显示TLS加密数据) | HTTPS流量经过TLS加密,Wireshark默认无法解密 | 1. 若控制目标主机:在目标浏览器中导出TLS会话密钥(如Chrome:chrome://net-internals/#ssl),在Wireshark中导入(Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename);2. 若为中间人攻击场景:通过攻击机伪造证书,让目标信任后捕获解密后的流量 |
| 捕获的数据包过多,卡顿严重 | 1. 未设置捕获过滤,捕获了大量无关流量;2. 数据包数量超过内存承载能力 | 1. 启动捕获前设置精准的捕获过滤规则(如按IP、端口筛选);2. 启用"捕获到文件"功能(File → Save As提前设置保存路径),将流量直接写入文件,减少内存占用;3. 捕获后应用显示过滤,隐藏无关数据包 |
| 无法打开PCAP文件,提示"Invalid file format" | 1. 文件损坏;2. 文件格式不兼容(如非PCAP/PCAPNG格式);3. Wireshark版本过低 | 1. 重新获取或下载文件,确认文件完整性;2. 用file 文件名.pcap查看文件格式,确认是否为支持的类型;3. 更新Wireshark到最新版本(sudo apt upgrade -y wireshark) |
注意事项
- 法律合规性:Wireshark捕获网络流量可能涉及他人隐私或敏感信息,未经授权在公共网络或他人网络中捕获流量,可能违反《网络安全法》《个人信息保护法》,仅可在自己的测试环境或获得书面授权