当前位置: 首页 > Linux

Kali Linux --《网络安全》-- 使用 WireShark 对常用协议抓包并分析原理

时间:2023-04-06 06:36:30 Linux

KaliLinux--《网络安全》--使用WireShark抓取分析常用协议并分析原理最大的优点是免费、开源、多平台支持。在GNU通用公共许可证的保护下,用户可以免费获得软件和代码,并有权修改和定制自己的源代码。今天,它是世界上最广泛的许可证。网络数据包分析软件之一。接下来,我将带大家使用WireShark进行练习:使用WireShark抓取并分析常见的协议地址,找到数据链路层地址的网络传输协议,这在IPv4中极为重要。ARP通过网络地址来定位MAC地址。开始抓包---filterarp我们使用nmap基于ARP协议进行扫描┌──(rootxuegod53)-[~]└─#nmap-sn192.168.1.1下面看一下我们抓到的数据包并进行分析首先查看AddressResolutionProtocol(request)ARP请求包内容:AddressResolutionProtocol(request)#ARP地址解析协议request表示请求包Hardwaretype:Ethernet(1)#hardwaretypeProtocoltype:IPv4(0x0800)#protocoltypeHardwaresize:6#硬件地址Protocolsize:4#协议长度Opcode:_request(1)#操作码,值为1表示ARP请求包SenderMACaddress:VMware_f1:35:ee(00:0c:29:f1:35:ee)#SourceMACaddressSenderIPaddress:192.168.1.53.#源IP地址目标MAC地址:00:00:00_00:00:00(00:00:00:00:00:00)#目标MAC地址目标IP地址:192.168.1.1#目标IP地址我们来分析第二个datapacketARPresponsedatapacketview:AddressResolutionProtocol(reply)ARPAddressResolutionProtocolAddressResolutionProtocol(reply)#ARPAddressResolutionProtocolreply表示回复包Hardwaretype:Ethernet(1)#hardwaretypeProtocoltype:IPv4(0x0800)#protocoltypeHardwaresize:6#hardwareaddressProtocolsize:4#protocollengthOpcode:_reply(2)#操作码,值2表示ARPreplypacketSenderMACaddress:XXXXXXXXXXXX(9c:61:21:75:55:50)#SourceMAC地址发件人IP地址ss:192.168.1.1#源IP地址目标MAC地址:VMware_f1:35:ee(00:0c:29:f1:35:ee)#目标MAC地址目标IP地址:192.168.1.53#目标IP地址总结:我们可以看到响应包完成了自己的MAC地址,目的地址和源地址都被替换了。下面看看两个数据包的请求和过程。192.168.1.53广播:谁有192.168.1.1的MAC地址?192.168.1.1回复:192.168.1.1的MAC地址是xxxxxxxxxxxx是不是很有意思的过程?常用协议分析-ICMP协议我们清除前面的数据包,然后过滤ICMP协议数据包,打开一个终端┌──(rootxuegod53)-[~]└─#pingxuegod.cn-c1我们只发送一个ping我们先看一下请求包的内容,可以看出这是一个4层协议包。接下来我们开始分析ICMP协议包:ICMP协议解析请求包ICMP协议解析响应包工作流程:本机发送一个ICMPEchoRequest包,接收方返回一个ICMPEchoReply,其中包括接收到的数据副本和一些其他命令。常见协议分析——TCP协议先清除数据包,然后过滤tcp开始抓包。我们来模拟一下tcp建立会话最简单的方法是什么?当我们通过Xshell远程连接到KaliLinux时,我们会捕获到完整的TCP3握手链接。抓到数据包后,我们就停止抓包,接下来开始分析TCP数据包。TCP协议的核心概念无非就是3次握手4次断开。先说TCP的3次握手。查看TCP协议:我们先来看第一个数据包,SYN数据包。下图是openflag的详细信息。从以上信息我们可以看出这是一个SYN数据包,SYN=1表示发送链接请求。此时Seq和ACK都为0,我们分析第二个数据包的Flags位信息,可以看到服务器收到了SYN连接请求返回的数据包。SYN=1,ACK=1表示响应第一个SYN数据包。再来看第三个数据包,三次握手过程到此结束。我们生成一个图表来观察数据交互的过程,点击显示过滤器。前三个是TCP建立连接的过程,后一个是相互通信的过程。这时候seq会根据数据包的大小发生变化。下面我们清一下数据包,看看断开链接是个怎样的过程。我们在Xshell窗口输入exit退出,我们回到WireShark生成图标。我们来分析一下这个过程。我们在终端输入EXIT,实际上在我们的Kali上执行命令,意思是我们SSHD的服务器端向客户端发起关闭连接的请求。第一次挥手:服务器发送一个[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-Ibaidu.comcurl是一个在命令行下运行的文件传输工具。我们这里用它来发送http请求。-I大写的i表示只返回头部信息。可以看到我们捕获了TCP的3次握手和4次断开连接。第4个和第6个是我们的HTTP数据包。第一步:我们发送一个HTTPHEAD请求。第二步:服务器收到我们的请求返回一个Seq/ACK进行确认。第三步:服务器返回HTTP头信息给我们。客户端状态码为200,表示页面正常。第四步:客户端收到服务器返回的头信息,发送给服务器Seq/ACK确认发送完成后,客户端发送FIN/ACK请求关闭链接。亲爱的兄弟姐妹们,本文到此结束。想获取文章视频+源码和笔记请加我们妹子