超详细的Wireshark的抓包和分析,从零基础到精通,收藏这篇就够了!

还在靠抓包工具吭哧吭哧分析网络问题?OUT啦!今天就来聊聊网络安全界的“显微镜”—— Wireshark。这玩意儿可不是简单的抓包工具,它能把网络世界的数据包扒得底裤都不剩,让你看得明明白白!无论是定位网络故障,还是分析恶意流量,Wireshark 都是你居家旅行、摸鱼必备之良品。

本文将用最通俗易懂的语言,带你玩转 Wireshark,主要内容包括:

  • 1、Wireshark 主界面大揭秘。别再对着一堆按钮发呆了,秒懂每个区域的功能!

  • 2、手把手教你 WireShark 抓包。从入门到入土,啊不,是入门!学会抓包,才能开始分析嘛。

  • 3、Wireshark 过滤器骚操作。数据包太多?不存在的!用过滤器精准定位你想分析的内容,效率提升 N 倍!包括按照协议、端口、主机名,甚至数据包内容进行过滤。

废话不多说,咱们直接上干货!先来认识一下 Wireshark 这款“神器”的庐山真面目。

没错,就是这个界面,是不是感觉有点眼花缭乱?淡定,看完这篇文章,你也能把它玩成俄罗斯方块!

这就是传说中的 Wireshark 主界面!

想开始抓包?So easy!

点击菜单栏的 Capture -> Option,然后勾选你的 WLAN 网卡(具体选哪个,看你电脑用哪个网卡上网,最简单的方法是看你当前 IP 对应的网卡)。 选好之后,点击 Start,Wireshark 就开始帮你“偷窥”网络上的数据啦!

Wireshark 一旦启动,就进入了亢奋的抓包模式,疯狂地捕获着网络中的各种数据包。

接下来,就是见证奇迹的时刻:

1、 执行你想抓包的操作,比如在命令行里 ping 一下 www.baidu.com。

2、 操作完成后,相关的数据包就被 Wireshark 抓取到了。为了避免被其他乱七八糟的数据包干扰,我们可以在过滤栏里设置过滤条件,只看我们关心的内容。比如,输入ip.addr == 119.75.217.26 and icmp,意思就是:只显示 ICMP 协议,并且源 IP 或目标 IP 是 119.75.217.26 的数据包。

3、 搞定!Wireshark 抓包就是这么简单粗暴!至于更高级的过滤技巧,以及如何查看数据包的详细内容,咱们后面慢慢聊。

Wireshark 抓包界面,信息量有点大!

注意:在数据包列表区,不同的协议会用不同的颜色来区分。想知道这些颜色都代表啥?可以点击菜单栏的 View --> Coloring Rules,里面有详细的说明。

WireShark 的界面主要分为以下几个部分:

  1. Display Filter (显示过滤器), 顾名思义,就是用来设置过滤条件的,可以帮你快速筛选出想要的数据包。菜单路径:Analyze --> Display Filters。

  1. Packet List Pane (数据包列表), 这里会显示所有抓取到的数据包,包括编号、时间戳、源地址、目标地址、协议、长度以及数据包信息。不同协议的数据包会用不同的颜色区分显示。

  1. Packet Details Pane (数据包详细信息), 这个面板是最重要的,选中某个数据包后,这里会显示该数据包的详细信息,包括协议中的每一个字段。

各行信息分别代表:

(1)Frame: 物理层的数据帧概况

(2)Ethernet II: 数据链路层以太网帧头部信息

(3)Internet Protocol Version 4: 互联网层 IP 包头部信息

(4)Transmission Control Protocol: 传输层 TCP 的数据段头部信息,此处是 TCP

(5)Hypertext Transfer Protocol: 应用层的信息,此处是 HTTP 协议

来,仔细看看 TCP 包里都有些啥:

从下图可以看到,Wireshark 捕获到的 TCP 包,每个字段都安排得明明白白。

  1. Dissector Pane (数据包字节区)。 顾名思义,就是显示数据包的原始字节数据的区域。

Wireshark 过滤器,网络世界的“放大镜”!

刚开始用 Wireshark 的时候,你可能会被海量的数据包淹没,根本找不到自己想要的信息。这时候,过滤器就派上大用场了!它可以帮你从茫茫数据中,快速定位到目标,就像给网络世界装了个“放大镜”。

Wireshark 自带两种类型的过滤器:抓包过滤器显示过滤器

(1)抓包过滤器

菜单路径:Capture --> Capture Filters。 这种过滤器是在抓包之前设置的,可以让你只捕获特定类型的数据包,减少后续分析的压力。

怎么用呢?很简单!在抓包前,设置如下:

ip host 60.207.246.216 and icmp 表示:只捕获主机 IP 为 60.207.246.216 的 ICMP 数据包。效果如下:

(2)显示过滤器

这种过滤器是在抓取数据包之后设置的,可以让你在已有的数据包列表中,根据条件筛选出想要的信息。

举个栗子,如果你在抓包时没有设置任何过滤规则,直接抓取了所有数据包,就像这样:

然后,你 ping 了一下 www.huawei.com,得到的数据包列表是这样的:

可以看到,里面夹杂着各种各样的“噪音”数据包。这时候,就可以使用显示过滤器来提取我们想要的信息。比如,输入ip.addr == 211.162.2.183 and icmp,然后点击 Apply,就能得到过滤后的结果:

总的来说,如果网络环境比较简单,流量不大,用显示过滤器就足够了。但如果网络环境复杂,流量巨大,最好还是在抓包前设置好抓包过滤器,避免捕获过多的无用数据。

下面我们来详细看一下这两种过滤器的语法和区别。

Wireshark 过滤器表达式,语法是关键!

1、抓包过滤器语法和实例

抓包过滤器的语法由以下几个部分组成:

  • Type(类型):host、net、port
  • Dir(方向):src、dst
  • Proto(协议):ether、ip、tcp、udp、http、icmp、ftp 等
  • 逻辑运算符:&& (与)、|| (或)、! (非)

(1)协议过滤

最简单的过滤方式,直接输入协议名即可。

  • TCP:只显示 TCP 协议的数据包
  • HTTP:只显示 HTTP 协议的数据包
  • ICMP:只显示 ICMP 协议的数据包

(2)IP 过滤

  • host 192.168.1.104: 过滤所有与主机 192.168.1.104 通信的数据包
  • src host 192.168.1.104:只过滤源地址为 192.168.1.104 的数据包
  • dst host 192.168.1.104:只过滤目标地址为 192.168.1.104 的数据包

(3)端口过滤

  • port 80: 过滤所有与端口 80 通信的数据包
  • src port 80:只过滤源端口为 80 的数据包
  • dst port 80:只过滤目标端口为 80 的数据包

(4)逻辑运算符

  • src host 192.168.1.104 && dst port 80: 抓取源地址为 192.168.1.104,且目标端口为 80 的数据包
  • host 192.168.1.104 || host 192.168.1.102: 抓取主机为 192.168.1.104 或 192.168.1.102 的数据包
  • !broadcast: 不抓取广播数据包

2、显示过滤器语法和实例

(1)比较操作符

显示过滤器支持的比较操作符有:

  • == (等于)
  • != (不等于)
  • > (大于)
  • < (小于)
  • >= (大于等于)
  • <= (小于等于)

(2)协议过滤

和抓包过滤器一样,直接输入协议名即可,注意要小写。

  • tcp:只显示 TCP 协议的数据包
  • http:只显示 HTTP 协议的数据包
  • icmp:只显示 ICMP 协议的数据包

(3) IP 过滤

  • ip.src ==192.168.1.104: 显示源地址为 192.168.1.104 的数据包
  • ip.dst==192.168.1.104: 显示目标地址为 192.168.1.104 的数据包
  • ip.addr == 192.168.1.104: 显示源 IP 地址或目标 IP 地址为 192.168.1.104 的数据包

(4)端口过滤

  • tcp.port ==80: 显示源主机或目标主机端口为 80 的数据包
  • tcp.srcport == 80: 只显示 TCP 协议的源主机端口为 80 的数据包
  • tcp.dstport == 80: 只显示 TCP 协议的目标主机端口为 80 的数据包

(5) HTTP 模式过滤

  • http.request.method=="GET": 只显示 HTTP GET 方法的数据包

(6)逻辑运算符

过滤多个条件组合时,使用 and/or/not

比如,获取 IP 地址为 192.168.1.104 的 ICMP 数据包,表达式为:ip.addr == 192.168.1.104 and icmp

(7)按照数据包内容过滤

如果你想根据数据包的内容进行过滤,可以先选中界面中的码流,然后在下方选中你想要过滤的数据,如下图:

右键单击选中内容,选择 Select,就会在过滤器中显示相应的表达式,如下:

然后,你就可以根据自己的需求,修改这个表达式。比如,你想过滤出 data 数据包中包含 "abcd" 内容的数据流,可以使用 contains 关键词,表达式如下:

看到这里,相信你对 Wireshark 已经有了初步的了解。

Wireshark 实战:TCP 三次握手分析

光说不练假把式,接下来我们来用 Wireshark 分析一下 TCP 三次握手的过程。

(1)TCP 三次握手连接建立过程

Step1:客户端发送一个 SYN=1,ACK=0 标志的数据包给服务端,请求建立连接,这是第一次握手;

Step2:服务端收到请求并且允许连接的话,就会发送一个 SYN=1,ACK=1 标志的数据包给客户端,告诉客户端可以通信了,并且要求客户端发送一个确认数据包,这是第二次握手;

Step3:客户端发送一个 SYN=0,ACK=1 的数据包给服务端,告诉服务端连接已被确认,这就是第三次握手。TCP 连接建立,开始通信。

(2)Wireshark 抓包获取访问指定服务端数据包

Step1:启动 Wireshark 抓包,打开浏览器输入 www.huawei.com。

Step2:使用 ping www.huawei.com 获取 IP 地址。

Step3:输入过滤条件 ip.addr == 211.162.2.183 获取待分析的数据包列表。

从图中可以看到,Wireshark 截获到了三次握手的三个数据包。第四个包才是 HTTP 的,这说明 HTTP 确实是使用 TCP 建立连接的。

第一次握手数据包

客户端发送一个 TCP 包,标志位为 SYN,序列号为 0,代表客户端请求建立连接。如下图。

数据包的关键属性如下:

  • SYN:标志位,表示请求建立连接
  • Seq = 0:初始建立连接值为 0,数据包的相对序列号从 0 开始,表示当前还没有发送数据
  • Ack =0:初始建立连接值为 0,表示当前没有接收到数据

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户端的 I S N 加 1,即 0+1=1, 如下图

数据包的关键属性如下:

  • [SYN + ACK]: 标志位,同意建立连接,并回送 SYN+ACK
  • Seq = 0:初始建立值为 0,表示当前还没有发送数据
  • Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加 1,因为包含 SYN 或 FIN 标志位。(并不会对有效数据的计数产生影响,因为含有 SYN 或 FIN 标志位的包并不携带有效数据)

第三次握手的数据包

客户端再次发送确认包(ACK) SYN 标志位为 0,ACK 标志位为 1.并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方.并且在数据段写 ISN 的+1, 如下图:

数据包的关键属性如下:

  • ACK:标志位,表示已经收到记录
  • Seq = 1:表示当前已经发送 1 个数据
  • Ack = 1:表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加 1,因为包含 SYN 或 FIN 标志位(并不会对有效数据的计数产生影响,因为含有 SYN 或 FIN 标志位的包并不携带有效数据)。

就这样,通过了 TCP 三次握手,建立了连接,开始进行数据交互。

下面针对数据交互过程的数据包进行一些说明:

数据包的关键属性说明

  • Seq: 1
  • Ack: 1: 说明现在共收到 1 字节数据

  • Seq: 1
  • Ack: 951: 说明现在服务端共收到 951 字节数据

在 TCP 层,有个 FLAGS 字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下

其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。

Wireshark 分析常用操作,效率提升 N 倍!

调整数据包列表中时间戳显示格式。调整方法为 View -->Time Display Format --> Date and Time of Day。调整后格式如下:

以上就是 Wireshark 的常用操作了。

一般来说,Wireshark 软件也可以与各主流厂家的模拟器一起使用,更适合于项目准确配置。

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值