前言
<font color=#999AAA > 作为一款高效收费的抓包工具,wireshark 能够捕捉并形容网络数据包,其最大的劣势就是收费、开源以及多平台反对,在 GNU 通用公共许可证的保障范畴下,用户能够收费获取软件和代码,并领有对其源码批改和定制的权力,现在其已是寰球最宽泛的网络数据包剖析软件之一。接下来我就带大家用 WireShark 实战:应用 WireShark 对罕用协定抓包并剖析原理 </font>
罕用协定剖析 -ARP 协定
地址解析协定(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协定,它在 IPv4 中极其重要。ARP 是通过网络地址来定位 MAC 地址。
开始抓包 — 过滤 arp
咱们应用 nmap 来基于 ARP 协定进行扫描
┌──(root xuegod53)-[~]
└─# nmap -sn 192.168.1.1
咱们看一下咱们抓取到的数据包
剖析第一个申请包
查看 Address Resolution Protocol (request) ARP 申请包内容:
Address Resolution Protocol (request) #ARP 地址解析协定 request 示意申请包
Hardware type: Ethernet (1) #硬件类型
Protocol type: IPv4 (0x0800) #协定类型
Hardware size: 6 #硬件地址
Protocol size: 4 #协定长度
Opcode:_ request (1) #操作码,该值为 1 示意 ARP 申请包
Sender MAC address: VMware_f1:35:ee (00:0c:29:f1:35:ee) #源 MAC 地址
Sender IP address: 192.168.1.53 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00: 00: 00 :00: 00:00) #指标 MAC 地址
Target IP address: 192.168.1.1 #指标 IP 地址
咱们来剖析第二个数据包 ARP 的应答数据包
查看:Address Resolution Protocol (reply) ARP 地址解析协定
Address Resolution Protocol (reply) #ARP 地址解析协定 reply 示意回复包
Hardware type: Ethernet (1) #硬件类型
Protocol type: IPv4 (0x0800) #协定类型
Hardware size: 6 #硬件地址
Protocol size: 4 #协定长度
Opcode:_ reply (2) #操作码,该值为 2 示意 ARP 回复包
Sender MAC address: XXXXXXXXXXXX (9c:61:21:75:55:50) #源 MAC 地址
Sender IP address: 192.168.1.1 #源 IP 地址
Target MAC address: VMware_f1:35:ee (00:0c:29:f1:35:ee) #指标 MAC 地址
Target IP address: 192.168.1.53 #指标 IP 地址
总结:咱们能够看到到应答包补全了本人的 MAC 地址,目标地址和源地址做了替换咱们再来看两个数据包的申请和过程
192.168.1.53 播送:谁有 192.168.1.1 的 MAC 地址?
192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
很乏味的一个过程不是吗?
罕用协定剖析 -ICMP 协定
咱们把之前的数据包清空掉而后筛选 ICMP 协定的数据包
关上一个终端
┌──(root xuegod53)-[~]
└─# ping xuegod.cn -c 1
咱们只发送一个 ping 包,不便咱们剖析发送完之后进行抓包即可。
咱们先看申请包的内容咱们能够看到这是个 4 层的协定包
上面咱们开始剖析 ICMP 协定包:
ICMP 协定剖析 申请包
ICMP 协定剖析 应答包
工作过程:
本机发送一个 ICMP Echo Request 的包
接受方返回一个 ICMP Echo Reply,蕴含了承受到数据拷贝和一些其余指令
罕用协定剖析 -TCP 协定
首先是清空数据包而后筛选 tcp 开始抓包
咱们模仿一下 tcp 会话建设,那最简略的形式是什么呢?
咱们通过 Xshell 近程连贯 Kali Linux 就会捕捉到残缺的 TCP3 次握手的链接。
抓完数据包之后咱们就进行抓包,接下来咱们开始剖析 TCP 的数据包
TCP 协定最外围的概念无非就是 3 次握手 4 次断开,咱们先讲 TCP 的 3 次握手
查看 TCP 协定:
咱们先来看第一个数据包 SYN 数据包
上面这样图是关上标记位的详细信息
咱们从以上信息就能够看出这是一个 SYN 数据包,SYN=1 示意发送一个链接申请。这时 Seq 和
ACK 都是 0
咱们剖析第二个数据包
Flags 位信息
咱们能够看到服务端收到 SYN 连贯申请返回的数据包 SYN=1,ACK=1 示意回应第一个 SYN 数据
包。
咱们看第三个数据包
到这里三次握手过程就完结了。
咱们生成一个图表来察看数据交互的过程
点击显示过滤器
后面 3 个就是 TCP 建设链接的过程,前面的就是互相通信的过程了这个时候 seq 就会依据数据包的
大小扭转。
咱们清空一下数据包来看一下断开链接是一个什么样的过程.
咱们在 Xshell 窗口中输出 exit 退出
咱们从新到 WireShark 生成图标
们剖析一下过程,咱们在终端输出 EXIT 实际上是在咱们 Kali 上执行的命令,示意咱们 SSHD 的
Server 端向客户端发动敞开链接申请。
第一次挥手:服务端发送一个[FIN+ACK],示意本人没有数据要发送了,想断开连接,并进入
FIN_WAIT_1 状态
第二次挥手:客户端收到 FIN 后,晓得不会再有数据从服务端传来,发送 ACK 进行确认,确认序号
为收到序号 +1(与 SYN 雷同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
第三次挥手:客户端发送 [FIN+ACK] 给对方,示意本人没有数据要发送了,客户端进入
LAST_ACK 状态,而后间接断开 TCP 会话的连贯,开释相应的资源。
第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消
息。
服务端在 TIMED_WAIT 状态下,期待一段时间,没有数据到来,就认为对面曾经收到了本人发送的
ACK 并正确敞开了进入 CLOSE 状态,本人也断开了 TCP 连贯,开释所有资源。当客户端收到服务端的 ACK 回应后,会进入 CLOSE 状态并敞开本端的会话接口,开释相应资源。
罕用协定剖析 -HTTP 协定
咱们还是筛选 TCP 协定因为 HTTP 是 TCP 的下层协定,所以咱们过滤 TCP 的数据会蕴含 HTTP 协
议的数据包
咱们关上一个终端输出上面命令。
┌──(rootxuegod53)-[~]
└─# curl -I baidu.com
curl 是一个在命令行下工作的文件传输工具,咱们这里用来发送 http 申请
-I 大写的 i 示意仅返回头部信息。
咱们能够看到咱们抓到了 TCP 的 3 次握手 4 次断开
第 4 个和第 6 个是咱们的 HTTP 数据包
第一步:咱们咱们发送了一个 HTTP 的 HEAD 申请
第二步:服务器收到咱们的申请返回了一个 Seq/ACK 进行确认
第三步:服务器将 HTTP 的头部信息返回给咱们客户端 状态码为 200 示意页面失常
第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
发送实现之后客户端就会发送 FIN/ACK 来进行敞开链接的申请。
各位敬爱的小哥哥小姐姐没文章到此就完结了
想要获取文章视频 + 源码和笔记的
请增加咱们的小姐姐