协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。
这篇文章教大家如何使用WireShark对常用协议抓包并分析原理
以下有视频版还有文字版
不知道怎么操作的请看文字版的,里面详细的步骤。
关注公众号侠盗男爵回复【kali系统】
视频版↓:
网络安全/kali/黑客/web安全/渗透测试/-3-5个月网络安全全套课程-小白入门到精通!_哔哩哔哩_bilibili
文字版↓:
年底了号主把我自己用到所有技术“做过的实战项目-内网实战靶场环境-渗透工具”还有很多渗透思维图谱!
常用协议分析-ARP协议 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。
开始抓包—过滤arp
文章图片
我们使用nmap来基于ARP协议进行扫描
┌──(rootxuegod53)-[~]
└─# 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协议的数据包
文章图片
打开一个终端
┌──(rootxuegod53)-[~]
└─# 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生成图标
文章图片
【网络安全|网络安全kali渗透学习 web渗透入门 使用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来进行关闭链接的请求。
更多技术干货技术文章可以扫描下方二维码
文章图片
推荐阅读
- Python中如何实现密码验证(两种方法)
- MD5和SHA1之间有什么区别(详细介绍)
- 数字信号处理|实验一 序列的傅里叶变换和离散傅里叶变换及其关系
- 毛概知识点
- 学习|python学习第三十三天
- 重磅!百度安全参编的国家标准《信息安全技术 术语》正式发布
- 学习|学习笔记(深度学习(2)——BP神经网络)
- 学习方法|【献计一刻】软件开发小工的学习和工作清单
- Spring|09 SpringSecurity-跨域与CORS