Wireshark抓包分析ARP协议
Posted 士别三日wyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wireshark抓包分析ARP协议相关的知识,希望对你有一定的参考价值。
「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》
使用Wireshark工具抓取ARP协议的数据包,分析ARP协议的地址解析过程、自主学习逻辑以及初次访问和多次访问的区别。
第一步:Ping本网段内任意主机
1)cmd执行下面这条命令获取局域网内所有主机:
for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.31.%i
命令的意思是:ping 192.168.0.1 到 192.168.0.255 之间的所有IP,注意将IP地址的第3位改成自己的网段。
2)cmd执行 arp -a 命令,从ARP表中查看本网段内有哪些主机。
3)记录一个本网段的IP,然后 arp -d 清空ARP表
4)cmd执行 arp -a,验证ARP表已被清空(第五步会解释为什么要清空)
5)Wireshark开启抓包后,ping 本网段的IP
第二步:过滤ARP协议的数据包
显示过滤器中输入:arp,过滤ARP协议的数据包。
抓到了两个数据包,第一个包是ARP请求包,第二个包是ARP响应包。
第三步:数据包分析
先分析一下这两个数据包做了什么
1)先看第一个数据包,源地址(Source字段)是我自己的MAC地址
cmd 执行 ipconfig /all 验证一下:
目标地址(Destination字段)是 Broadcast,就是广播的意思
Info 字段,是对当前动作的描述:
总结一下第一个数据包做了什么:
我的电脑,发送了一个广播,广播的内容是 “谁是192.168.31.118?告诉192.168.31.121”
192.168.31.121是我电脑的IP,意思就是:呼叫192.168.31.118,收到请回复我。
4)第二个数据包的目的地址(Destination 字段)是我电脑的MAC地址
结合 Info 字段的信息,总结一下第二个数据包做了什么:
有个主机,向我的电脑发送了一个信息,信息的内容是 “192.168.31.118 是 74:b5:87:db:06:ac”
这个主机把MAC地址告诉了我的电脑。
综上所述,我们可以得出一个结论:
ARP地址解析协议就像一个队内语音,他会向局域网内所有主机广播请求,索要目标IP的MAC地址;知道的主机就会响应具体的MAC地址。
第四步:数据内容分析
接下来我们根据包的数据分析一下,这两个包是怎么做的
1)第一个包的数据,重点看我圈起来的两个地方
- 第一处:ARP后面的括号里是 request,说明这是个请求包
- 第二处:源IP、源MAC、目标IP都有值,目标MAC却全是0,意思就是告诉他们:我不知道这个IP的MAC地址。
2)第二个包的数据,重点看我圈起来的两个地方
- 第一处:ARP后面的括号里是 reply,说明这是个响应包
- 第二处:源IP、源MAC、目标IP、目标MAC都有值,接收方可以从这里获取IP对应的MAC地址。
第五步:ARP自主学习
还记得第一步的时候,我们清空了ARP表吗?
再次使用 arp -a 查看ARP表
可以发现,表中添加了我们刚才 ping 的IP,以及对应的MAC地址,这就是ARP的学习能力:解析成功的MAC地址会被临时缓存,以节约资源。
第六步:再次访问
1)Wireshark开启抓包,重新访问这个主机
2)查看ARP请求包的目的MAC地址
由于是第二次访问,ARP表中已经缓存了MAC地址,所以这次ARP请求不再广播,而是直接从ARP表中获取。
WireShark如何抓包,各种协议(HTTPARPICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手
WireShark
wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。常用来检测网络问题、攻击溯源、或者分析底层通信机制。
一、开启WireShark的大门
cmd——>ipconfig
我连的是WIFI,这是我的IP
左侧对应你的电脑网卡,可以注意右侧的折线图,有波动的就是我在使用的网卡。
先停止运行,再点击捕获,选项,可以看到是否选择混杂模式
混杂模式︰混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。
普通模式:普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
二、如何抓包 搜索关键字
2.1 协议过滤
点击箭头指向的红色方框,就会出现蓝色鲨鱼状的。
比如说查TCP、UDP建立连接的时候是什么样的,至于协议为什么有其他的协议是因为这些协议的最顶层都是TCP或者UDP
再或者如何抓http的包
其他的协议同理咯。
2.2 IP过滤
或者搜一下我的网关试试
注意:抓包的时候蓝色的亮
语法格式:
IP源地址:ip.src == 192.168.1.1
IP目的地址:ip.dst == 192.168.1.1
IP地址(包括源和目的):ip.addr == 192.168.1.1
我凭感觉试了一个,还真能弄出来
ip.src_host == 192.168.1.108 and ip.dst_host == 192.168.1.1
欢迎关注:宝藏女孩的成长日记
地址:https://blog.csdn.net/hanhanwanghaha
2.3 过滤端口
语法格式
TCP端口:tcp.port==80
TCP目的端口:tcp.dstport == 80
TCP源端口:tcp.srcport == 80
UDP端口:udp.port eq 15000
TCP 1-80之间的端口:tcp.port >= 1 and tcp.port <= 80
例如
tcp.port == 80 || udp.port == 80
2.4 过滤MAC地址
语法格式
源MAC地址:eth.src==00-BB-60-7C-A4-BB
目的MAC地址:eth.dst==00-BB-60-7C-A4-BF
MAC地址(包括源和目的):eth.addr==00-BB-60-7C-A4-BB
2.5 过滤包长度
语法格式
整个UDP数据包:udp.length==20
TCP数据包中的IP数据包:tcp.len>=20
整个IP数据包:ip.len==20
整个数据包:frame.len==20
2.6 HTTP模式过滤
请求方法为GET:http.request.method==“GET”
请求方法为POST:http.request.method==“POST”
指定URI:http.request.uri.path contains "x"
泛指:http contains "x"
例如
http.request.method == "GET"
三、ARP协议分析
ARP的基本功能就是负责将一个已知的IP地址解析成MAC地址,以便主机间能正常进行通信。
cmd
ping 192.168.1.1(这是我的网关)
192.168.1.108发出一个广播来询问MAC地址:Who Has 192.168.1.108? Tell 192.168.1.1
182.168.1.108做出应答:182.168.1.108的MAC地址是 ee: bb: 60: 7c:a4: bb
ARP请求包
ARP响应包
四、WireShark之ICMP协议
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 [3] 它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
icmp数据包解读
(1) Frame: 物理层
(2) Ethernet II: 数据链路层
(3) Internet Protocol Version 4: 网络层
(4) Internet Control Message Protocol: icmp信息
ping www.baidu.com
可以看到windows下ping默认执行四次ping,因此,Wireshark抓到8个ICMP查询报文,随便点一个看
分析:
Code: 0 表示发成功
校验完整性:
Checksum: ex4d32 [ correct]
[checksum Status: Good]
检查数据有么有被黑客篡改过
五、TCP三次握手与四次挥手
SYN(synchronize)指请求同步
ACK指确认同步
5.1 TCP三次握手实验
获取百度的IP地址
ping www.baidu.com
tcp && ip.addr == 163.177.151.110
www.baidu.com的IP地址(目的IP)
输入后,回车。可以看到下面还是空的流量信息。现在再打开百度首页(浏览器网址www.baidu.com),关注这里的流量信息,可以发现三次握手的流量包信息已经显示在下方了
第一次握手
第二次握手
第三次握手
欢迎关注:宝藏女孩的成长日记
地址:https://blog.csdn.net/hanhanwanghaha
5.2 可视化看TCP三次握手
统计——>流量图
这种说实话还挺好看的hhh。
SYN洪泛攻击:一直发送第一次握手的SYN数据包,并不进行确认,导致服务器有大量挂起等待确认的TCP连接,消耗CPU和内存,进而导致死机
解决方法:SYN cookie
5.3 TCP四次挥手
SYN指请求同步
ACK指确认同步
FIN指结束
四次挥手
本机地址:192.168.1.108
百度地址:163.177.151.110(注意:这个每个人不一样,要ping www.baidu.com查)
第一次挥手:本机发送带有[FIN,ACK]标志的数据包发送至baidu.com,Seq=21939,ACK=115238,发送后 主机A进入FIN-WAIT-1(终止等待)状态。
192.168.1.108 163.177.151.110 TCP 5463085 > 443[FIN,ACK] Seq=21939 Ack=115238 Win=131584 Len=e
第二次挥手:baidu.com收到本机的FIN数据包,向本机响应ACK数据包,Seq=115238(与本机的FIN数据包 ACK值相同),ACK=21940(等于本机 FIN数据包的 Seq +1 )。后baidu.com进入了CLOSE-WAIT(关闭等待)状态。
163.177.151.110 192.168.1.108 TCP 54 443 → 63085 [ACK] Seq=115238 Ack=21940 win=75264 Len=0
第三次挥手:数据发送完后,baidu.com向本机发送[FIN,ACK]报文,Seq=115269(在半关闭状态服务器可能又发送了一些数据,数据长度为31,我自己的理解),ACK=21940(与上一条报文的ACK值相同)。
163.177.151.116 192.168.1.108 TCP 54 443 → 63085 [FIN,ACK] Seq=115269 Ack=21940 win=75264 Len=0
第四次挥手:本机向baidu.com发送标志为[RST,ACK]的报文,Seq=21940(与baidu.com发送至本机的FIN报文ACK值相同),ACK=115269(与baidu.com发送到本机的FIN报文的Seq值相同)。
192.168.1.108 163.177.151.110 TCP 54 63085 → 443 [RST,ACK ] Seq=21940 Ack=115269 win=0 Len=0
四次挥手过程完成,等过等待计时器设置的2MSL(最长报文段寿命后)TCP连接才真正释放。本机才真正进入COSED状态。
可视化
看刚刚第三次握手数据长度为31,证明我的理解是对的。
以上为我参考了n多资料后自己的理解,如有大佬看到有不对的地方还请指教!
5.4 总结TCP三次握手和四次挥手
总结:
这周六或者周天的时候,打算自己写一个web页面测试黑客是如何利用WireShark获取用户密码的,(最迟下周末,flag立下了)感觉很有意思。
以上是关于Wireshark抓包分析ARP协议的主要内容,如果未能解决你的问题,请参考以下文章
Kali Linux --《网络安全》-- 使用 WireShark 对常用协议抓包并分析原理
WireShark如何抓包,各种协议(HTTPARPICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手