1、WireShark快速分析数据包技巧
(1)确定 Wireshark的物理位置。如果没有一个正确的位置,启动 Wireshark后会花费很长时问捕获一些与自己无关的数据。“
(2)选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
(3)使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。”
(4)使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。“
(5)使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
(6)构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。“
(7)重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用重组数据的方法来抓取完整的数据。Wireshark的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件。
2、实战:WireShark抓包及快速定位数据包技巧
2.1常见协议包
ARP协议
ICMP协议
TCP协议
UDP协议
DNS协议
HTTP协议
2.2使用 WireShark 进行抓包
启动WireSharke
2.3 混杂模式介绍
1)混杂模式概述:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
2)关闭和开启混杂模式方法
打开wireshark,点击capture(捕获)——Options(选项)
勾选箭头,Enable promiscuous mde on all interfaces(在所有接口上使用混杂模式),这样就开启混杂模式,取消勾选,就变为普通模式
2.4 WireShark的过滤使用
开启混杂模式,在捕获过滤器处输入如下指令
1)host 172.16.12.15 捕获该IP相关的数据包
2)src 172.16.12.15 捕获该IP发出去的数据包
3)dst 172.16.12.15 捕获所有发给该IP的数据包
4)port 80 捕获和80端口有关的数据包
5)ether host [MAC地址] 捕获该MAC地址相关的数据包
在显示过滤器下面输入如下指令
1、tcp/arp/udp/http/dns等 捕获所有tcp数据包
2、ip.src_host == 172.16.12.15 or ip. dst_host ==172.16.12.2 捕获源地址是15或者目标地址是2的ip
3、ip.src_host == 172.16.12.15 and ip.dst_host ==172.16.12.2 捕获源地址是15且目标地址是2的ip and可以用&&表示
4、ip.addr == == 172.16.12.15 and ip.addr ==172.16.12.2
3 、实战:使用 WireShark 对常用协议抓包并分析原理
协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。
3.1常用协议分析-ARP协议
地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。ARP是通过网络地址来定位 MAC 地址。
关闭混杂模式,显示过滤器输入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回复包 1表示request请求包
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 地址,目的地址和源地址做了替换我们再来看两个数据包的请求和过程
Who has 192.168.1.1? Tell 192.168.1.53
192.168.1.1 is at 9c:61:21:75:55:50
192.168.1.53 广播:谁有192.168.1.1的MAC地址?
192.168.1.1 应答:192.168.1.1的MAC地址是XXXXXXXXXXX
3.2常用协议分析-ICMP协议
ICMP请求包
Internet Control Message Protocol
Type:8 (Echo (ping) request)
Code:0 #type0 协议类型8 code 0 代码0 表示请求报文
Checksum:Oxfd1c [correct] #校验和,用户检查错误的数据
[Checksum Status:Good] #校验状态:good
Identifier (BE):63126(Oxf696)
Identifier (LE):38646(0x96f6) #ID值,在应答包中返回该字段
Sequence Number (BE):1 (0x0001) #序列号依旧在应答包中返回该字段
Sequence Number (LE):256 (0x0100)
[Response frame:654] 响应帧的序列号:654
Timestamp from icmpdata:Sep 8,202108:54:30.000000000 EDT [Timestamp from icmp data(relative):0.746635014 seconds] Data (48 bytes)
ICMP响应包
Internet Control Message Protocol
Type:0(Echo (ping) reply)
Code:0 #type0 协议类型0 code 0 代码0 表示回显应答报文
Checksum:0x051d [correct] #校验和
「Checksum Status:Goodl
Identifier (BE):63126(Oxf696)
Identifier (LE):38646(0x96f6)
Sequence Number (BE):1 (0×0001)
Sequence Number (LE):256 (0x0100) #这里的ID和序列号和请求包一样
[Request frame:653] #请求帧的序列号
[Response time:60.003 ms] #响应时间
Timestamp from icmp data: Sep 8,2021 08:54:30.000000000 EDT [Timestamp from icmp data(relative):0.806637645seconds]Data (48 bytes) #填充数据,共48字节
本机发送一个ICMP Echo Request的包
接收方返回一个ICMP Echo Reply,包含了接受到数据拷贝和一些其他命令
3.3 常用协议分析-TCP协议
三次握手
三次握手统计图
到这里三次握手就结束了,下面是三次握手统计图
四次挥手
我们分析一下过程,我们在终端输入 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状态并关闭本端的会话接口,释放相应资源。
3.4 常用协议分析-GTTP协议
┌──(root💀kali)-[~]
└─# curl -I baidu.com 请求百度头部字段
HTTP/1.1 200 OK
Date: Thu, 09 Sep 2021 11:53:50 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: “51-47cf7e6ee8400”
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Fri, 10 Sep 2021 11:53:50 GMT
Connection: Keep-Alive
Content-Type: text/html
第一步:我们我们发送了一个HTTP的HEAD请求
第二步:服务器收到我们的请求返回了一个Seq/ACK进行确认
第三步:服务器将 HTTP的头部信息返回给我们客户端 状态码为200 表示页面正常
第四步:客户端收到服务器返回的头部信息向服务器发送Seq/ACK进行确认
发送完成之后客户端就会发送FIN/ACK来进行关闭链接的请求。
4、实战:WireShark抓包解决服务器被黑上不了网
场景:服务器被黑上不了网,可以ping通网关,但是不能上网。
模拟场景
修改主机TTL值为1,下面的方式是我们临时修改内核参数。
┌──(root💀kali)-[~]
└─# cat /proc/sys/net/ipv4/ip_default_ttl
64
┌──(root💀kali)-[~]
└─# echo “1” > /proc/sys/net/ipv4/ip_default_ttl
┌──(root💀kali)-[~]
└─# cat /proc/sys/net/ipv4/ip_default_ttl
1
TTL(time to live): 数据报文的生存周期。每过一个网络设备,TTL值-1
默认 linux 操作系统值:64,每经过一个路由节点,TTL值减1。TTL值为0时,说明目标地址不可达并返回:Time to live exceeded
作用:防止数据包,无限制在公网中转发。我们测试结果
┌──(root💀kali)-[~]
└─# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.36 icmp_seq=1 Time to live exceeded
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.99 ms #网关可以ping通
┌──(root💀kali)-[~]
└─# ping baidu.com -c1
PING baidu.com (220.181.38.148) 56(84) bytes of data.
From localhost (192.168.0.1) icmp_seq=1 Time to live exceeded
#出了网关,TTL为0,数据包丢弃,百度ping不通
我们可以看到提示我们 Time to live exceeded 这表示超过生存时间,
我们判断和目标之间经过多少个网络设备是根据目标返回给我们的 TTL 值来判断的,因为我们发送的数据包是看不到的。
开启抓包,过滤ICMP,然后ping百度,抓包结果如下
我们可以看到第一个包是发送了一个ping 请求包ttl=1
然后呢我们收到了网关 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢弃。
那我们把 TTL值修改成2会有什么效果呢?
┌──(root💀kali)-[~]
└─# echo “2” > /proc/sys/net/ipv4/ip_default_ttl
──(root💀kali)-[~]
└─# ping baidu.com -c1 1 ⨯
PING baidu.com (220.181.38.251) 56(84) bytes of data.
From localhost (192.168.1.1) icmp_seq=1 Time to live exceeded
我们对比数据包发现返回我们数据包被丢弃的源地址变成了220.181.38.251,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃,由此我们还判断出我们的运营商网关地址为 220.181.38.251,但是我们并没有到达目标主机。
那TTL恢复成正常的64,结果如何?
┌──(root💀kali)-[~]
└─# echo “64” > /proc/sys/net/ipv4/ip_default_ttl
┌──(root💀kali)-[~]
└─# ping baidu.com -c1
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=50 time=16.9 ms
目标返回给我们的TTL值为50,这表示我们的TTL值需要大于64-50=14才可以访问百度
下载mtr 路由跟踪工具进行查看
┌──(root💀kali)-[~/Desktop]
└─# apt install mtr –fix-missing
检测到达www.baidu.com的所有节点的通信质量
┌──(root💀kali)-[~/Desktop]
└─# mtr www.baidu.com
如图,主机连接到百度需要经过13个设备(13跳),100%表示丢包严重,可能是被防火墙过滤、
今天的文章WireShark抓包原理解析及抓包实战教程分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24220.html