相关资料链接
抓包+各种协议(http、arp、icmp)的过滤或分析
wireShark 抓包分析基础
wireShark抓包分析
分析数据详情
wireshark抓包获取访问指定服务端数据包
Step1:启动wireshark抓包,打开浏览器输入www.huawei.com。
Step2:使用ping www.huawei.com获取IP。(win+r cmd)
Step3:输入过滤条件获取待分析数据包列表 ip.addr == 211.162.2.183。
wireShark抓包
捕获过滤器
在设置了过滤项之后只抓取需要的包
类型Type:host、net、port;
方向Dir:src、dst;
协议Proto:ether、ip、tcp、udp、http、icmp、ftp;
逻辑运算符:and、or、not、&&、||、!
显示过滤器
抓取所有包,之后再根据过滤规则显示需要的包,显示过滤器的基本结构包括字段名、运算符和值。 eg:ip.src == 192.168.1.1
字段名通常对应于协议的某个特定部分;
运算符用于比较字段值;
值则是字段匹配的具体内容。
语法格式:一条基本的表达式由过滤项、过滤关系、过滤值组成
过滤项:协议+. +协议字段
过滤IP地址:ip.src、ip.dst、ip.addr、eth.addr、eth.type
eg:IP源地址 ip.src == 192.168.1.101
IP目的地址 ip.dst == 192.168.1.101
IP地址(包括源和目的) ip.addr == 192.168.1.101
过滤端口:tcp.port、tcp.srcport、tcp.dstport、tcp.flag.syn
eg:TCP端口 tcp.port == 80
TCP目的端口 tcp.dstport == 80
TCP源端口 tcp.srcport == 80
TCP 1 - 80 之间的端口 tcp.port >= 1 and tcp.port <= 80
tcp.flags.syn:SYN标志位,用于过滤TCP连接请求
tcp.flags.ask:ACK标志位,用于过滤确认段
过滤MAC地址:eth
eg:源(以太网)MAC地址 eth.src == 00 - BB - 60 - 7C - A4 - BB
目的(以太网)MAC地址 eth.dst == 00 - BB - 60 - 7C - A4 - BB
MAC地址(包括源和目的) eth.addr == 00 - BB - 60 - 7C - A4 - BB
过滤包长度:len、length
eg:整个UDP数据包 udp.length == 20
TCP数据包中的IP数据包 tcp.len >= 20
整个IP数据包 ip.len == 20
整个数据包 frame.len == 20
HTTP模式过滤:get、post、uri
eg:请求方法为GET http.request.method == “GET”
请求方法为POST http.request.method == “POST”
指定URI http.request.uri.path contains “x”
泛指 http contains “x”
http.host:HTTP请求的主机名
协议过滤:arp、tcp、udp、http、dns(直接在过滤框中输入协议名,协议名需要小写)
eg:udp.srcport:UDP源端口
udp.dstport:UDP目的端口
udp.port:UDP源或目的端口
dns.qry.name:DNS查询的域名
逻辑运算符:and、or、not、&&、||、!、in、contains、()
与:and 或 &&( ip.src == 192.168.1.1 and ip.src == 192.168.1.1)
或:or 或 ||( ip.src == 192.168.1.1 or ip.src == 192.168.1.1)
包含:contains(http.request.uri contains “google”)
匹配正则表达式:matches(http.user_agent matches “Chrome”)
非:not 或 !( not icmp)
组合和分组 :() eg: ip.src == 192.168.1.101 and ( ip.src == 192.168.1.101 or ip.src == 192.168.1.101)
比较操作符:==、!=、>=、> 、<=、<
wireShark抓包数据分析
数据包的大致结构
第一行:数据包整体概述;
第二行:链路层详细信息,主要的是双方的mac地址;
第三行:网络层详细信息,主要的是双方的ip地址;
第四行:传输层详细信息,主要的是双方的端口号;
第五行:和协议相关,不同的协议展示不同的内容。例如:dns协议,展示域名系统相关信息
1、物理层
frame
2、数据链路层
ethernet II
3、互联网层IP包头部信息
internet protocol version
报文
TCP
TCP:面向连接的通信协议,通过三次握手建立连接
当主动方发出SYN连接请求后,等待对方回答SYN,ACK
这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议
- SYN指请求同步
- ACK指确认同步
- FIN指结束
三次握手
第一次握手:客户端发送一个数据包,SYN=1 ,ACK=0,序列号从0开始(seq=0),表示客户端请求建立连接;
第二次握手:服务器端发回数据包,SYN=1,ACK=1 ,seq=0,ack=seq+1表示已接收的数据包数量;
第三次握手:客户端重新传回确认包,SYN=0,服务器端检查 ACK=1 ,ack=seq+1表示当前段成功接收数据位数。
四次挥手
第一次挥手:发送带有 [FIN,ACK] 标志的数据包,Seq = 348,Ack = 748,发送后112.53.48.186进入FIN-WAIT-1(终止等待)状态;
第二次挥手:192.168.1.48收到 FIN 数据包,响应ACK数据包,Seq = 748(与FIN数据包ACK值相同),Ack = 349(等于FIN数据包的Seq + 1),后112.53.48.186进入了CLOSE-WAIT(关闭等待)状态;
第三次挥手:数据发送完后,192.168.1.48向112.53.48.186发送 [FIN,ACK] 报文,Seq = 748,Ack = 349;
第四次挥手:112.168.53.186向192.168.1.48发送标志为 [RST] 的报文,Seq = 349
TCP层FLAGS字段重要标识
ACK:为TCP报文段首部中的“ACK字段”,置1时该报文段为确认报文段。
ack:为TCP报文段首部中“确认号字段”的具体数值。
ack=x+1说明服务器希望客户端下次发来的报文段的第一个数据字节为序号=x+1的字节;
ack=y+1说明客户端希望服务器下次发来的报文段的第一个数据字节为序号=y+1的字节。
源IP地址:发送包的IP地址; 源端口:源系统上的连接的端口;
目的IP地震:接收包的IP地址; 目的端口:目的系统上的连接的端口。
1> 封包详细信息
2> Frame信息分析
3> EthernetII信息分析
4> IPv4协议信息分析
5> Trasmission Control Protocol信息分析
6> Data信息分析
HTTP
链路层的信息上是以帧的形式进行传输的,帧封装了应用层、传输层、网络层的数据。而Wireshark抓到的就是链路层的一帧。
1> 封包详细信息
2> Http请求报文分析
3> Http响应报文分析
ARP
Address Resolution Protocol(地址解析协议),通过目标设备的IP地址,查询目标设备的MAC地址。
第一个数据包信息
第一个数据包发送(或广播)一条请求信息,询问目标端:谁有192.168.1.4的MAC地址,告诉192.168.1.1
第二个数据包信息
第二个数据包表示:192.168.1.4的MAC地址是60:14:b3:7d:54:1d并单播数据帧回复给询问端
DNS
分布式的域名服务系统,每个DNS服务器上都存放着大量的机器名和IP地址的映射,并且是动态更新的
DNS协议基于TCP和UDP
1> 封包详细信息
2> DNS查询报文
3> DNS响应报文
4> Ping
UDP
User Datagram Protocol,OSI七层模型中一种无连接的传输协议
UDP信息包的标题很短,只有8个字节的大小,相比于TCP的20字节信息包,额外开销非常小
ICMP
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
icmp数据包解读
(1) Frame:物理层
(2)Ethernet II:数据链路层
(3)Internet Protocol Version 4:网络层
(4)Internet Control Message Protocol:icmp信息
TLS
TLS 是一种密码学协议,保证了两个端点之间的会话安全
TLS 的四个核心子协议:握手协议 (handshake protocol)、密钥规格变更协议 (change cipher spec protocol)、应用数据协议 (application data protocol) 和警报协议 (alert protocol)
最主要、最复杂是“握手协议”,协商对称密码就是在该协议中完成的
握手过程
HTTPS 链接建立、TLS 握手协议里参数传递、证书验证、协商对称密钥的过程↓
-
Client Hello
-
Server Hello
-
Certificate(发送服务器证书信息到客户端)
-
Server Key Exchange(密钥交换)
-
Server Hello Done(将握手消息需要的数据发送完毕)
-
Client Key Exchange(客户端发送给服务器的密钥交换信息)
客户端验证证书和计算密钥
验证服务器发来的证书合法性
计算预主密钥
计算主密钥
构建会话密钥 -
客户端发出Change Cipher Spec,Encrypted Handshake Message
Change Cipher Spec 客户端已生成加密密钥,并切换到加密模式
Encrypted Handshake Message 将之前所有的握手数据做一个摘要,再用最后协商好的对称加密算法对数据做加密
服务器计算密钥 -
服务器发出Change Cipher Spec,Encrypted Handshake Message
Change Cipher Spec 告诉客户端,服务端已生成密钥,请求客户端切换加密模式
Encrypted Handshake Message 服务器对握手的所有数据用协商好的对称加密算法加密,供客户端校验文章来源:https://www.toymoban.com/news/detail-855126.html -
应用数据协议文章来源地址https://www.toymoban.com/news/detail-855126.html
到了这里,关于结合wireshark理解tcp、http、dns、icmp、arp等协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!