网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习



专栏跑道二

➡️ 24 Network Security -LJS



专栏跑道三

➡️ MYSQL REDIS Advance operation

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]



专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]

image.png


专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]


专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]



上节回顾 2.实战:使用 WireShark 对常用协议抓包并分析原理

  • 协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。

2.1常用协议分析-ARP 协议

  • 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。
  • ARP 是通过网络地址来定位 MAC 地址。

开始抓包---过滤 arp

image.gif 编辑

使用 nmap 来基于 ARP 协议进行扫描

root@xuegod53:~# nmap -sn 192.168.1.1
  • image.gif
  • image.gif 编辑

看一下我们抓取到的数据包并分析第一个请求包

  • image.gif

查看 Address Resolution Protocol (request) ARP 请求包内容:

  • image.gif
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_ 96:67:52 (00:0c:29:8b:2b:b8) #源 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 地址
  • image.gif image.gif
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 (a4:56:02:3b:4b:03) #源 MAC 地址
Sender IP address: 192.168.1.1 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00:0c:29:8b:2b:b8) #目标 MAC 地址
Target IP address: 192.168.1.53 #目标 IP 地址
  • image.gif 总结:
  • 可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换
  • 我们再来看两个数据包的请求和过程
  • image.gif 编辑
192.168.1.53 广播:谁有 192.168.1.1 的 MAC 地址?
192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
  • image.gif

2.2常用协议分析-ICMP 协议

  • 把之前的数据包清空掉然后筛选 ICMP 协议的数据包

image.gif

打开一个终端

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

  • 只发送一个 ping 包,方便我们分析发送完之后停止抓包即可。

image.gif

先看请求包的内容我们可以看到这是个 4 层的协议包

image.gif

下面开始分析 ICMP 协议包:

ICMP 协议分析请求包

image.gif

image.gif

ICMP 协议分析应答包

image.gif

工作过程:

  • 本机发送一个 ICMP Echo Request 的包
  • 接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

image.gif

2.3常用协议分析-TCP 协议

首先是清空数据包然后筛选 tcp 开始抓包

image.gif

  • 模拟一下 tcp 会话建立,那最简单的方式是什么呢?
  • 我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。

image.gif

  • 抓完数据包之后我们就停止抓包,接下来我们开始分析 TCP 的数据包
  • TCP 协议最核心的概念无非就是 3 次握手 4 次断开,我们先讲 TCP 的 3 次握手

image.gif

查看 TCP 协议:

  • 先来看第一个数据包 SYN 数据包

image.gif

打开标志位的详细信息

image.gif

从以上信息就可以看出这是一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和
ACK 都是 0

分析第二个数据包

image.gif

Flags 位信息

image.gif

image.gif

  • 可以看到服务端收到 SYN 连接请求返回的数据包 SYN=1,ACK=1 表示回应第一个 SYN 数据包。

分析第三个数据包 image.gif

这里三次握手过程就结束了。

image.gif

生成一个图表来观察数据交互的过程

image.gif

image.gif 编辑

全工程分析如下:

  • 在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。
  1. 第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态
  2. 第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
  3. 第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。
  4. 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

2.4常用协议分析-HTTP 协议

  • 还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协议的数据包

image.gif 编辑

打开一个终端输入下面命

root@xuegod53:~# curl -I baidu.com

image.gif

image.gif

cur介绍

 

  • 是一个在命令行下工作的文件传输工具,我们这里用来发送 http 请求
  • -I 大写的 i 表示仅返回头部信息。
  • 可以看到我们抓到了 TCP 的 3 次握手 4 次断开

image.gif

第 4 个和第 6 个是我们的 HTTP 数据包

image.gif

完整过程分析:

  • 第一步:我们我们发送了一个 HTTP 的 HEAD 请求
  • 第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认
  • 第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
  • 第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
  • 发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。

image.gif

3.实战:WireShark 抓包解决服务器被黑上不了网

场景:服务器被黑上不了网,可以 ping 通网关,但是不能上网。
模拟场景
修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。

root@xuegod53:~# echo "1" > /proc/sys/net/ipv4/ip_default_ttl
image.gif

拓展补充:

  • TTL : 数据报文的生存周期。
  • 默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。TTL 值为 0 时,说明目标地址不可达并返回:Time to live exceeded
  • 作用: 防止数据包,无限制在公网中转发。

进行测试

root@xuegod53:~# ping 192.168.1.1 -c 1

image.gif

image.gif 编辑

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 可以看到提示我们 Time to live exceeded 这表示超过生存时间,
  • 我们判断和目标之间经过多少个网络设备根据目标返回给我们的 TTL 值来判断的,因为我们发送的数据包是看不到的。

实战抓包分析数据包

image.gif 编辑

开启抓包,过滤 icmp 协议

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

然后回到 WireShark 中查看数据包

image.gif 编辑

image.gif 编辑

  • 可以看到第一个包是发送了一个 ping 请求包 ttl=1
  • 然后呢我们收到了 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢

如果把 TTL 值修改成 2 会有什么效果呢?

root@xuegod53:~# echo "2" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 对比数据包发现返回我们数据包被丢弃的源地址变成了 123.115.0.1,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃
  • 由此我们还判断出我们的运营商网关地址为 123.115.0.1 但是我们并没有到达目标主机。

恢复系统内核参数

root@xuegod53:~# echo "64" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 目标返回给我们的 TTL 值为 52,这表示我们的 TTL 值需要大于 64-52=12 才可以访问 xuegod.cn
  • MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,

默认系统是没有安装 MTR 工具的我们手动安装一下

root@xuegod53:~# apt install -y mtr

image.gif

示例:检测到达 xuegod.cn 所有节点的通信质量

root@xuegod53:~# mtr xuegod.cn

image.gif

image.gif 编辑

可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。

 2.实战:使用 WireShark 对常用协议抓包并分析原理

  • 协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。

2.1常用协议分析-ARP 协议

  • 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。
  • ARP 是通过网络地址来定位 MAC 地址。

开始抓包---过滤 arp

image.gif 编辑

使用 nmap 来基于 ARP 协议进行扫描

root@xuegod53:~# nmap -sn 192.168.1.1
  • image.gif
  • image.gif 编辑

看一下我们抓取到的数据包并分析第一个请求包

  • image.gif 编辑

查看 Address Resolution Protocol (request) ARP 请求包内容:

  • image.gif 编辑
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_ 96:67:52 (00:0c:29:8b:2b:b8) #源 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 地址
  • image.gif image.gif 编辑
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 (a4:56:02:3b:4b:03) #源 MAC 地址
Sender IP address: 192.168.1.1 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00:0c:29:8b:2b:b8) #目标 MAC 地址
Target IP address: 192.168.1.53 #目标 IP 地址
  • image.gif 总结:
  • 可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换
  • 我们再来看两个数据包的请求和过程
  • image.gif 编辑
192.168.1.53 广播:谁有 192.168.1.1 的 MAC 地址?
192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
  • image.gif

2.2常用协议分析-ICMP 协议

  • 把之前的数据包清空掉然后筛选 ICMP 协议的数据包

image.gif 编辑

打开一个终端

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

  • 只发送一个 ping 包,方便我们分析发送完之后停止抓包即可。

image.gif 编辑

先看请求包的内容我们可以看到这是个 4 层的协议包

image.gif 编辑

下面开始分析 ICMP 协议包:

ICMP 协议分析请求包

image.gif

image.gif 编辑

ICMP 协议分析应答包

image.gif

工作过程:

  • 本机发送一个 ICMP Echo Request 的包
  • 接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

image.gif

2.3常用协议分析-TCP 协议

首先是清空数据包然后筛选 tcp 开始抓包

image.gif

  • 模拟一下 tcp 会话建立,那最简单的方式是什么呢?
  • 我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。

image.gif

  • 抓完数据包之后我们就停止抓包,接下来我们开始分析 TCP 的数据包
  • TCP 协议最核心的概念无非就是 3 次握手 4 次断开,我们先讲 TCP 的 3 次握手

image.gif

查看 TCP 协议:

  • 先来看第一个数据包 SYN 数据包

image.gif

打开标志位的详细信息

image.gif

从以上信息就可以看出这是一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和
ACK 都是 0

分析第二个数据包

image.gif

Flags 位信息

image.gif

image.gif

  • 可以看到服务端收到 SYN 连接请求返回的数据包 SYN=1,ACK=1 表示回应第一个 SYN 数据包。

分析第三个数据包 image.gif

这里三次握手过程就结束了。

image.gif

生成一个图表来观察数据交互的过程

image.gif

image.gif

全工程分析如下:

  • 在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。
  1. 第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态
  2. 第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
  3. 第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。
  4. 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

2.4常用协议分析-HTTP 协议

  • 还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协议的数据包

image.gif

打开一个终端输入下面命

root@xuegod53:~# curl -I baidu.com

image.gif

image.gif

cur介绍


  • 是一个在命令行下工作的文件传输工具,我们这里用来发送 http 请求
  • -I 大写的 i 表示仅返回头部信息。
  • 可以看到我们抓到了 TCP 的 3 次握手 4 次断开

image.gif

第 4 个和第 6 个是我们的 HTTP 数据包

image.gif

完整过程分析:

  • 第一步:我们我们发送了一个 HTTP 的 HEAD 请求
  • 第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认
  • 第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
  • 第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
  • 发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。

image.gif

3.实战:WireShark 抓包解决服务器被黑上不了网

场景:服务器被黑上不了网,可以 ping 通网关,但是不能上网。
模拟场景
修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。

root@xuegod53:~# echo "1" > /proc/sys/net/ipv4/ip_default_ttl
image.gif

拓展补充:

  • TTL : 数据报文的生存周期。
  • 默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。TTL 值为 0 时,说明目标地址不可达并返回:Time to live exceeded
  • 作用: 防止数据包,无限制在公网中转发。

进行测试

root@xuegod53:~# ping 192.168.1.1 -c 1

image.gif

image.gif 编辑

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 可以看到提示我们 Time to live exceeded 这表示超过生存时间,
  • 我们判断和目标之间经过多少个网络设备根据目标返回给我们的 TTL 值来判断的,因为我们发送的数据包是看不到的。

实战抓包分析数据包

image.gif 编辑

开启抓包,过滤 icmp 协议

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

然后回到 WireShark 中查看数据包

image.gif 编辑

image.gif 编辑

  • 可以看到第一个包是发送了一个 ping 请求包 ttl=1
  • 然后呢我们收到了 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢

如果把 TTL 值修改成 2 会有什么效果呢?

root@xuegod53:~# echo "2" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 对比数据包发现返回我们数据包被丢弃的源地址变成了 123.115.0.1,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃
  • 由此我们还判断出我们的运营商网关地址为 123.115.0.1 但是我们并没有到达目标主机。

恢复系统内核参数

root@xuegod53:~# echo "64" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 目标返回给我们的 TTL 值为 52,这表示我们的 TTL 值需要大于 64-52=12 才可以访问 xuegod.cn
  • MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,

默认系统是没有安装 MTR 工具的我们手动安装一下

root@xuegod53:~# apt install -y mtr

image.gif

示例:检测到达 xuegod.cn 所有节点的通信质量

root@xuegod53:~# mtr xuegod.cn

image.gif

image.gif 编辑

可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。

 2.实战:使用 WireShark 对常用协议抓包并分析原理

  • 协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。

2.1常用协议分析-ARP 协议

  • 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。
  • ARP 是通过网络地址来定位 MAC 地址。

开始抓包---过滤 arp

image.gif 编辑

使用 nmap 来基于 ARP 协议进行扫描

root@xuegod53:~# nmap -sn 192.168.1.1
  • image.gif
  • image.gif 编辑

看一下我们抓取到的数据包并分析第一个请求包

  • image.gif 编辑

查看 Address Resolution Protocol (request) ARP 请求包内容:

  • image.gif 编辑
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_ 96:67:52 (00:0c:29:8b:2b:b8) #源 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 地址
  • image.gif image.gif 编辑
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 (a4:56:02:3b:4b:03) #源 MAC 地址
Sender IP address: 192.168.1.1 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00:0c:29:8b:2b:b8) #目标 MAC 地址
Target IP address: 192.168.1.53 #目标 IP 地址
  • image.gif 总结:
  • 可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换
  • 我们再来看两个数据包的请求和过程
  • image.gif 编辑
192.168.1.53 广播:谁有 192.168.1.1 的 MAC 地址?
192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
  • image.gif

2.2常用协议分析-ICMP 协议

  • 把之前的数据包清空掉然后筛选 ICMP 协议的数据包

image.gif 编辑

打开一个终端

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

  • 只发送一个 ping 包,方便我们分析发送完之后停止抓包即可。

image.gif 编辑

先看请求包的内容我们可以看到这是个 4 层的协议包

image.gif 编辑

下面开始分析 ICMP 协议包:

ICMP 协议分析请求包

image.gif 编辑

image.gif

ICMP 协议分析应答包

image.gif

工作过程:

  • 本机发送一个 ICMP Echo Request 的包
  • 接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

image.gif

2.3常用协议分析-TCP 协议

首先是清空数据包然后筛选 tcp 开始抓包

image.gif

  • 模拟一下 tcp 会话建立,那最简单的方式是什么呢?
  • 我们通过 Xshell 远程连接 Kali Linux 就会捕获到完整的 TCP3 次握手的链接。

image.gif

  • 抓完数据包之后我们就停止抓包,接下来我们开始分析 TCP 的数据包
  • TCP 协议最核心的概念无非就是 3 次握手 4 次断开,我们先讲 TCP 的 3 次握手

image.gif

查看 TCP 协议:

  • 先来看第一个数据包 SYN 数据包

image.gif

打开标志位的详细信息

image.gif

从以上信息就可以看出这是一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和
ACK 都是 0

分析第二个数据包

image.gif

Flags 位信息

image.gif

image.gif

  • 可以看到服务端收到 SYN 连接请求返回的数据包 SYN=1,ACK=1 表示回应第一个 SYN 数据包。

分析第三个数据包 image.gif 编辑

这里三次握手过程就结束了。

image.gif

生成一个图表来观察数据交互的过程

image.gif

image.gif 编辑

全工程分析如下:

  • 在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。
  1. 第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态
  2. 第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
  3. 第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。
  4. 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

2.4常用协议分析-HTTP 协议

  • 还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协议的数据包

image.gif 编辑

打开一个终端输入下面命

root@xuegod53:~# curl -I baidu.com

image.gif

image.gif

cur介绍

 

  • 是一个在命令行下工作的文件传输工具,我们这里用来发送 http 请求
  • -I 大写的 i 表示仅返回头部信息。
  • 可以看到我们抓到了 TCP 的 3 次握手 4 次断开

image.gif

第 4 个和第 6 个是我们的 HTTP 数据包

image.gif

完整过程分析:

  • 第一步:我们我们发送了一个 HTTP 的 HEAD 请求
  • 第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认
  • 第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
  • 第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
  • 发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。

image.gif

3.实战:WireShark 抓包解决服务器被黑上不了网

场景:服务器被黑上不了网,可以 ping 通网关,但是不能上网。
模拟场景
修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。

root@xuegod53:~# echo "1" > /proc/sys/net/ipv4/ip_default_ttl
image.gif

拓展补充:

  • TTL : 数据报文的生存周期。
  • 默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。TTL 值为 0 时,说明目标地址不可达并返回:Time to live exceeded
  • 作用: 防止数据包,无限制在公网中转发。

进行测试

root@xuegod53:~# ping 192.168.1.1 -c 1

image.gif

image.gif 编辑

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 可以看到提示我们 Time to live exceeded 这表示超过生存时间,
  • 我们判断和目标之间经过多少个网络设备根据目标返回给我们的 TTL 值来判断的,因为我们发送的数据包是看不到的。

实战抓包分析数据包

image.gif 编辑

开启抓包,过滤 icmp 协议

root@xuegod53:~# ping xuegod.cn -c 1

image.gif

然后回到 WireShark 中查看数据包

image.gif 编辑

image.gif 编辑

  • 可以看到第一个包是发送了一个 ping 请求包 ttl=1
  • 然后呢我们收到了 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢

如果把 TTL 值修改成 2 会有什么效果呢?

root@xuegod53:~# echo "2" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 对比数据包发现返回我们数据包被丢弃的源地址变成了 123.115.0.1,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃
  • 由此我们还判断出我们的运营商网关地址为 123.115.0.1 但是我们并没有到达目标主机。

恢复系统内核参数

root@xuegod53:~# echo "64" > /proc/sys/net/ipv4/ip_default_ttl
root@xuegod53:~# ping xuegod.cn -c 1

image.gif

image.gif 编辑

  • 目标返回给我们的 TTL 值为 52,这表示我们的 TTL 值需要大于 64-52=12 才可以访问 xuegod.cn
  • MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,

默认系统是没有安装 MTR 工具的我们手动安装一下

root@xuegod53:~# apt install -y mtr

image.gif

示例:检测到达 xuegod.cn 所有节点的通信质量

root@xuegod53:~# mtr xuegod.cn

image.gif

image.gif 编辑

可以看到从我当前主机到目标主机[xuegod.cn ]之间经过 12 跳。

























相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
|
2月前
|
机器学习/深度学习 数据采集 算法
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
本文将BSSNN扩展至反向推理任务,即预测X∣y,这种设计使得模型不仅能够预测结果,还能够探索特定结果对应的输入特征组合。在二元分类任务中,这种反向推理能力有助于识别导致正负类结果的关键因素,从而显著提升模型的可解释性和决策支持能力。
201 42
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
|
2月前
|
监控 安全 网络安全
网络安全工具及其使用方法:保护数字安全的第一道防线
在信息时代,网络攻击变得日益复杂且频繁,保护个人和企业数据安全的重要性日益凸显。幸运的是,各种网络安全工具为用户提供了有效的防护手段。从防火墙到密码管理器,这些工具覆盖了威胁检测、攻击防御和数据保护的方方面面。本文将介绍几款常用的网络安全工具,并提供其使用方法,以帮助您构建强大的网络安全防线。
111 1
|
1月前
|
运维 监控 安全
计算机网络及其安全组件纲要
本文主要介绍了 “计算机网络及常见组件” 的基本概念,涵盖网卡、IP、MAC、OSI模型、路由器、交换机、防火墙、WAF、IDS、IPS、域名、HTTP、HTTPS、网络拓扑等内容。
191 0
|
4月前
|
监控 安全 Linux
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
164 2
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
|
5月前
|
运维 监控 安全
如何高效进行网络质量劣化分析与流量回溯分析?-AnaTraf
在数字化时代,网络质量分析与流量回溯对保障业务运行至关重要。网络拥塞、丢包等问题可能导致业务中断、安全隐患及成本上升。传统工具常缺乏细粒度数据,难以溯源问题。流量回溯分析可还原现场,助力精准排障。AnaTraf网络流量分析仪作为专业工具,能高效定位问题,提升团队响应力,降低运营风险。
如何高效进行网络质量劣化分析与流量回溯分析?-AnaTraf
|
5月前
|
大数据
“你朋友圈的真面目,大数据都知道!”——用社交网络分析看透人情世故
“你朋友圈的真面目,大数据都知道!”——用社交网络分析看透人情世故
174 16
|
4月前
|
监控 数据可视化 安全
看得见的安全:如何用可视化大屏提升数据监测和网络预警效率
网络安全已成各组织核心议题,传统防护难以应对复杂攻击。AnaTraf网络流量分析仪通过实时分析流量,提取关键行为,提前发现潜在威胁。其可视化大屏将数据直观呈现,助力安全人员快速捕捉风险。系统基于趋势分析构建动态风险模型,实现预判而非仅报警,成为有判断力的“网络安全参谋”。在攻击无孔不入的时代,AnaTraf提供全新认知方式,以“看得见”提升对威胁的判断力。
看得见的安全:如何用可视化大屏提升数据监测和网络预警效率
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
219 17
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
174 10