【保姆级教学】抓包工具Wireshark使用教程

【保姆级教学】抓包工具Wireshark使用教程

Created
Jul 11, 2023 07:10 AM
Date
Jun 13, 2023
Tags
抓包软件
 
notion image

wireshark介绍

今天讲一下另一款底层抓包软件,之前写过两篇抓包软件 分别是 1. fiddler抓包【https://www.cnblogs.com/zichliang/p/16067941.html】 2. mitmdump抓包【https://www.cnblogs.com/zichliang/p/16067941.html】
Wireshark (前身 Ethereal) 是一个网络包分析工具该工具主要是用来捕获网络数据包,并自动解析数据包为用户显示数据包的详细信息,供用户对数据包进行分析 当然wireshark更多的偏向于硬件底层多一点。偏向于底层接口抓包。 wireshark可以通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。 那常见的协议过滤是哪几种呢?

常见协议包抓取

  • ARP协议
  • ICMP协议
  • TCP协议
  • UDP协议
  • DNS协议
  • HTTP协议 ## WireShark应用
  1. 网络管理员会使用wireshark来检查网络问题
  1. 网络安全工程师 使用Wireshark 来检查资讯安全相关问题
  1. 软件测试工程师使用wireshark抓包,来分析自己测试的软件
  1. 开发人员 使用Wireshark来为新的通讯协议除错
  1. 从事socket编程的工程师会用wireshark来调试
  1. 普通使用 使用Wireshark 来学习网络协议的相关知识
  1. 还可以抓一些敏感信息….

下载及安装

Kali Linux系统自带 Wireshark 工具,而windows 需要手动安装wireshark 下面贴上下载官网: https://www.wireshark.org/download.html 下载完之后一直点下一步安装即可。

wireshark的界面介绍

首先安装完了之后,我们打开抓包软件
notion image
可以看到有很多的网络接口,那我们应该如何选择呢? win+r =====> cmd ====> ipconfig
notion image
选择我们现在正在上网的网卡 这里用的wifi 就直接抓wlan这个网卡了。 直接鼠标双击点进去
 
notion image
可以看到有很多的数据包
整体来说,界面主要分为以下几部分:
  • 菜单栏:Wireshark的标准菜单栏。
  • 工具栏:常用功能的快捷图标按钮,提供快速访问菜单中经常用到的项目的功能。
  • 过滤器:提供处理当前显示过滤得方法。
  • Packet List面板:显示每个数据帧的摘要。这里采用表格的形式列出了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等。
  • Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内容。
  • Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
  • 状态栏:包含有专家信息、注释、包的数量和Profile。
在此之前了解下抓包的两种模式。

混杂模式与普通模式

notion image
 
notion image
 
notion image
不勾选就是普通模式 那什么是混杂模式 和普通模式呢?
  • 混杂模式: 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址
  • 普通模式: 普通模式下网卡只接收发给本机的包 (包括广播包)传递给上层程序,其它的包一律丢弃
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用

菜单栏

 
notion image
  • 文件:打开文件集、保存包、导出HTTP对象
  • 编辑:清除所有标记的包、忽略包和时间属性
  • 视图:查看/隐藏工具栏和面板、编辑Time列、重设颜色
  • 跳转:跳转到某个设置好的分组列表
  • 捕获:用于设置模式和开始与停止
  • 分析:创建显示过滤器宏、查看启用协议、保存关注解码
  • 统计:创建图表并打开各种协议统计窗口
  • 电话:执行所有语音功能(图表、图形、回放)
  • 无线:用于设置无线蓝牙等抓包的功能
  • 工具:根据包内容构建防火墙规则、访问Lua脚本工具
  • 帮助:学习wireshark全球存储和个人配置文件

工具栏

 
notion image
从左至右 -
  • 开始捕获
  • 停止捕获
  • 重新开始当前捕获
  • 捕获选项
  • 打开已保存的捕获文件
  • 保存捕获文件
  • 关闭捕获文件
  • 重载捕获文件
  • 查找一个分组
  • 转到前一个文组
  • 转到后一个分组
  • 转到特定分组
  • 转到首个分组
  • 转到最新分组
  • 在实时捕获时
  • 自动滚动屏幕到最新的分组.
  • 放大主窗口文本
  • 收缩主窗口文本
  • 使主窗口文本回归正常大小
  • 调整分组列表以适应内容

过滤器

 
notion image
当用户面向大量需要处理的数据时,可以通过使用显示过滤器快速的过滤自己需要的数据。 下文会详细介绍,搜索即可过滤。

Packet List面板

notion image
  • No. :包的编号 ————————————默认wireshark是按照数据包编号从低到高排序,该编号不会发生改变,即使使用了过滤也同样如此
  • Time:包的时间戳。时间格式可以自己设置
  • Source 和Destination :包的源地址和目的地址
  • Protocol:包的协议类型
  • Length:包的长度
  • Info:包的附加信息
右击还有其他的一些配置
notion image

packet details

notion image
在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为
  1. Frame: 物理层的数据帧概况
  1. Ethernet II: 数据链路层以太网帧头部信息
  1. Internet Protocol Version
  1. 互联网层IP包头部信息
  1. …. (这里点点点表示 不同的包所展示的是不同的内容)
分层的显示了一个数据包中的内容,并且可以通过展开或者收缩来显示这个数据包中所捕获的全部内容 还可以看到一些详细信息。
notion image

packet bytes

notion image
这个板块 分为两部分 左边这部分是16进制的数据,右边是ASCII格式当在packet details面板中选择任意一个字段后,在packet bytes面板中包含该字段的字节也高亮显示
notion image

最底层状态栏

notion image
分为一些杂项和地址栏。个人感觉作用不大。

过滤器的使用。

刚刚点击了停止抓包 要是重新开启抓包点击左上角这个按钮
notion image
 
notion image
 
如果想保存就点击第一个,一般做测试都是不保存的。 然后就可以重新开始抓包了。
 
然后就正式开始过滤抓包了,我们想抓http相关的包====> 直接输入http或者tcp
notion image
 
notion image
 
 
可能这样显得不太直观。
举个三次握手四次挥手的例子。
当输入 tcp.flags.ack == 0 即代表底层握手(链接成功)
当输入 tcp.flags.syn == 1 即代表底层握手(数据发送成功)
不懂的可以自己去百度什么是三次握手四次挥手。
所抓到也都是底层链接成功和发送成功的包。
 
notion image
 
notion image
 
当然 命令和命令之间也可以通过and 或者or来完成与或非的关系。
 
notion image
notion image
 
即使讲到了链接和发送的命令 再讲一下发送成功结束的命令
tcp.flags.fin==1
notion image
 
其中展示了本机向此服务器发送成功的数据包 之前所讲到的所有协议包 都可以在这里过滤,
比如 udp,http,tcp 等等等

IP过滤

刚刚讲了可以通过协议过滤 那我们再抓取网站数据的时候能不能通过IP过滤呢。
搜下我们本地发送了那些包
ip.src_host==192.168.2.51
notion image
 
 
可以清楚的看到source来源就都是我们的主机了。
搜下目标地址是百度的包 百度的IP地址是180.101.50.188
ip.dst_host == 180.101.50.188
 
notion image
还有一个命令 ip.addr 代表着 只有IP是xxx 就全部显现出来,不管是接收 还是发送
 
notion image

wireshark解析ARP协议

在了解使用wireshark分析arp协议之前,我们先来了解下,什么是是arp协议?
通俗点说,在局域网中通信时使用的是MAC地址,而不是常见的IP地址。
所以在局域网的两台主机间通信时,必须要知道对方的MAC地址,这就是ARP协议要做的事:将IP地址转换为MAC地址。
 
光看这个讲arp可能太笼统了,我们肯定之前听过一个名称——arp欺骗,那什么是arp欺骗呢?
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,
攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。
由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,
由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了
这里也介绍完了 我们先来抓下arp的包 ,直接在过滤器中搜索ARP,并且随意打开一个包
notion image
 
  • Hardware type(网卡类型):以太网(Ethernet)是1。我们常见的网络都是以太网
  • Protocol type:查询中提供的网络地址的类型,IPv4是0x0800。
  • Harware size:网卡地址长度,以太网网卡是6字节。
  • Protocol size:查询中提供的网络地址的的长度,IPv4是4字节。
  • Opcode:查询包值为1,响应包值为2。
  • Sender MAC address:发送者的Mac地址。
  • Sender IP address:发送者的IP地址。
  • Target MAC address:接收者的Mac地址,指向性查询包是MAC地址表中记录的mac,广播性查询包是00:00:00:00:00:00。(注意区分ARP头和Eth头,指向性查询包Eth头的dst mac是MAC地址表中记录的mac,而广播性查询包是ff:ff:ff:ff:ff:ff)。
  • Target protocol address:要查询目标的mac地址的ip。
再来看一下回复包
notion image
故: 由一个request 和一个reply 组成的一组arp包,有请求有回复组成的arp响应。

WireShark解析ICMP协议

使用Ping命令用来测试网络的可达性。从而接受ICMP的报文包 首先我们ping下自己的网关
notion image
然后找下wireshark中刚刚抓到的包
notion image
重点看下ICMP里面的内容
notion image
type:报文类型,8代表请求,0代表应答; code:为0,表示为回显应答成功; checksum:表示认证这个ICMP报文是否被篡改过。校验完整性。 checksum Status: 表示校验的结果,Good代表没问题。 identifier:表示标识符ID Sequence Number: 表示序列号
Data: 具体发送到数据包,当然肯定是通过加密的。
这是请求数据,还有一组回复数据
notion image
可以看到。标示符和序列号都是一样的

wireshark 解析TCP协议

即两台电脑或者是两台机器之间的相互链接>>>中间会经历一个三次握手 四次挥手的过程。

TCP 三次握手

如下图所示是示意图>>>
notion image
我们随意打开一个网页:百度 IP是
180.101.50.188
notion image
如上图所示 有syn的tcp链接包
notion image
 
然后我们来看下TCP协议的具体的内容
notion image
封包信息:
  1. Frame: 物理层的数据帧概况
  1. Ethernet II: 数据链路层以太网帧头部信息
  1. Internet Protocol Version 4: 网络层IP包头部信息
  1. Transmission Control Protocol: 传输层TCP数据段头部信息
传输层TCP数据段信息
  1. 源端口:source Port: 44922
  1. 目的端口:Destination Port: 19999
  1. 序号:sequence Number: o
  1. 确认号:Acknowledgment number: o
  1. 报头长度:Header Length: 4o bytes
  1. 标志位:Flags: ox002 (SYN)
  1. 校验和:Checksum: oxac81
当然这么看肯定不太直观,还要结合这回复包去看每一条信息。所以我们可以打开流数据包来查看tcp协议报文
notion image
选择限制显示过滤器 选择百度的地址
notion image
 
notion image
这样看起来就非常的直观了。

TCP断开链接 四次挥手

既然有链接,肯定就有断开链接 天下无不散之筵席嘛,不可能一直互相连接的。 而断开链接则有另一个名词—— 四次挥手
 
notion image
和三次握手一样,我们直接关闭百度这个网站, 然后去wireshark中搜索
180.101.50.242
这个ip(由于百度的地址会改变,我们需要实时查看下百度的ip)
notion image
notion image
首先就会发起
第一步:客户端打算断开连接
第二步:服务器收到连接释放报文段(FIN报文)后,就向客户端发送ACK应答报文
第三步:服务器也打算断开连接,向客户端发送连接释放(FIN)报文段
第四步:客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送一个ACK应答报文段,以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq,以连接释放(FIN)报文段的序列号 seq+1作为确认序号ack。

wireShark 解析HTTP协议

http的底层本质上还是TCP协议。
话不多说,直接请求百度地址。
这里百度地址不是www.baidu地址
notion image
然后打开抓包软件 搜索tcp
notion image
还可以查看具体信息
 
notion image
 
notion image

总结

 
总的来说,WireShark非常强大,不仅可以抓各种包,还能对局域网的某些数据进行监控抓包分析。非常强大。 不过要慎用。