• Wireshark数据包分析入门


    1. 网络协议基础

    1.1. 应传网数物(应表会传网数物)

    Wireshark 是分成了tcp/ip五层模型的方式
    在这里插入图片描述

    2. 三次握手

    2.1. 第一次握手

    在这里插入图片描述

    2.2. 第二次握手

    在这里插入图片描述

    2.3. 第三次握手

    在这里插入图片描述

    2.4. 三次握手后流量特征

    在这里插入图片描述
    在这里插入图片描述

    注1:"TCP segment of a reassembled PDU"意味着你正在查看的是一个重新组装后的PDU中的一个TCP段。这通常发生在数据包的原始大小超过了网络的最大传输单元(MTU)时,因此数据在发送前被分割成多个段,并在接收端被重新组装。

    3. 第一层—物理层(以太网)

    简介:在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。

    种类:以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等。

    在这里插入图片描述

    4. 第二层—数据链路层(PPP L2TP PPTP)

    简介:两个相邻结点之间传送数据是直接传送的(点对点),需要使用专门的链路层的协议,而在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上“透明”地传送帧中的数据。

    种类:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP ·
    ISDN·STP · CSMA/CD等。

    在这里插入图片描述

    5. 第三层—网络层(IP ICMP ARP)

    简介:1.在发送数据时,网络层把传输层产生的报文封装成分组或包进行传送。2.选则合适的路由,找到目的主机。

    种类:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP ·
    RARP · RIP等。

    5.1. ip协议解析

    在这里插入图片描述

    注1:Flags标记是否分片与流量包过大分包传输的主要区别在于:前者是数据包头部的一个标志位,用于指示数据包的状态或特性;而后者是一种数据传输机制,用于处理超过MTU限制的数据包。要注意的是,虽然flags标记和分包传输都与数据包的处理和传输有关,但它们在实际应用中可能相互独立或相互关联。例如,一个数据包可能因为其大小超过了MTU而被分片传输,同时其flags标记也可能指示其他状态或特性。

    注2:Identification:02xa3f(10815) 为数据包标识,用于判断回复包的对应id

    注3:TTL:128 意思是能跳转128个路由或交换机,超出128次,则丢弃。

    5.2. ARP协议解析

    在这里插入图片描述

    6. 第四层—传输层(TCP UDP TLS)

    简介:负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用(多个应用层进程可同时使用下面传输层的服务)和分用(把收到的信息分别交付给上面应用层中相应的进程)的功能。

    种类:TCP · UDP · TLS · DCCP · SCTP · RSVP · OSPF 等。

    6.1. Tcp协议解析

    在这里插入图片描述

    注1:Stream index : 组序号,用来表示多个数据白是否属于同一组的id表示。

    注2:TCP payload :后续携带的相关数据

    注3:TCP Segment : 当传输数据较大时,一个完整消息会被分割成多个请求包,每个请求包的大小。

    注4:[Conversation completeness: Incomplete,ESTABLISHED(7)] :会话完整标记,计算方法:
    1:SYN 2:SYN-ACK 4:ACK 8:DATA 16:FIN 32:RST
    如:7=1+2+4 表示一个仅包含标准TCP三次握手的会话。

    7. 第五层—应用层(HTTP SSH FTP TELNET DNS)

    简介:直接为用户的应用进程提供服务

    种类: DNS · FTP(文件传送)· HTTP(万维网应用)· SMTP(电子邮件)·SSH
    ·TELNET · SNMP · POP3 ·RPC · RTCP · RTP · RTSP· SDP· SOAP · GTP · STUN
    · NTP · SSDP · BGP · DHCP · Gopher · IMAP4 · IRC · SIP · NNTP · XMPP等。

    8. https之wireshrk解密

    在这里插入图片描述

    8.1. 获取证书(略)

    8.2. 进行动态获取对称加密密钥解码

    1. 首先针对Chrome浏览器进行配置
      a) 先创建保存密期文件,最好是英文路径,文件以英文名称,如:
      E:\Wireshark\wiresharkkey\sslkeylog.log
      在这里插入图片描述
      b) 找到Chrome的快捷方式,快捷方式->鼠标右键->快捷方式->目标,目标启动路径后面添加–ssl-key-log-file=E:\Wireshark\wiresharkkey\sslkeylog.log
      在这里插入图片描述
    2. 针对wireshark进行配置
      a) 编辑->首选项->Protocols->TLS->修改路径
      在这里插入图片描述

    在这里插入图片描述
    3. 重启浏览器,解密成功。
    在这里插入图片描述

    9. wireshrk常用语法

    9.1. 按协议查询

    tcp,udp,arp,icmp,http,ftp,dns,ip,ssl等
    排除arp包,如!arp 或者 not arp

    9.2. 按ip地址查询

    (ip.dst == 192.168.70.1 && ip.src == 192.168.70.128)

    (ip.dst == 192.168.70.1 && ip.src == 192.168.70.128) || (ip.dst == 192.168.70.128 && ip.src == 192.168.70.1)

    9.3. 按ip端口查询

    tcp.port eq 80 // 不管端口是来源的还是目标的都显示
    tcp.port == 80
    tcp.port eq 2722
    tcp.port eq 80 or udp.port eq 80
    tcp.dstport == 80 // 只显tcp协议的目标端口80
    tcp.srcport == 80 // 只显tcp协议的来源端口80
    udp.port eq 15000

    过滤端口范围
    tcp.port >= 1 and tcp.port <= 80

    9.4. 按GET,POST查询

    http.request.method == “GET”
    http.request.method == “POST”
    http.request.uri == “/img/logo-edu.gif”
    http contains “GET”
    http contains “HTTP/1.”
    // GET包
    http.request.method == “GET” && http contains "Host: "
    http.request.method == “GET” && http contains "User-Agent: "
    // POST包
    http.request.method == “POST” && http contains "Host: "
    http.request.method == “POST” && http contains "User-Agent: "
    // 响应包
    http contains “HTTP/1.1 200 OK” && http contains "Content-Type: "
    http contains “HTTP/1.0 200 OK” && http contains "Content-Type: "

    9.5. 按MAC查询

    太以网头过滤
    eth.dst == A0:00:00:04:C5:84 // 过滤目标mac
    eth.src eq A0:00:00:04:C5:84 // 过滤来源mac
    eth.dst == A0:00:00:04:C5:84
    eth.dst == A0-00-00-04-C5-84
    eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

    9.6. 按包长度过滤

    udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
    tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
    ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
    frame.len == 119 整个数据包长度,从eth开始到最后

    eth —> ip or arp —> tcp or udp —> data

    9.7. 按正则过滤

    1、wireshark基本的语法字符
    \d 0-9的数字
    \D \d的补集(以所以字符为全集,下同),即所有非数字的字符
    \w 单词字符,指大小写字母、0-9的数字、下划线
    \W \w的补集
    \s 空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f
    \S \s的补集
    . 除换行符\n外的任意字符。 在Perl中,“.”可以匹配新行符的模式被称作“单行模式”
    .* 匹配任意文本,不包括回车(\n)? 。 而,[0x00-0xff]* 匹配任意文本,包括\n
    […] 匹配[]内所列出的所有字符
    [^…] 匹配非[]内所列出的字符

    2、定位字符 所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。
    ^ 表示其后的字符必须位于字符串的开始处
    $ 表示其前面的字符必须位于字符串的结束处
    \b 匹配一个单词的边界
    \B 匹配一个非单词的边界

    3、重复描述字符
    {n} 匹配前面的字符n次
    {n,} 匹配前面的字符n次或多于n次
    {n,m} 匹配前面的字符n到m次
    ? 匹配前面的字符0或1次
    + 匹配前面的字符1次或多于1次
    * 匹配前面的字符0次或式于0次

    4、and or 匹配
    and 符号 并
    or 符号 或
    例如:
    tcp and tcp.port==80
    tcp or udp

    10. 常见问题

    10.1. Eth/ethernet(以太网) ip tcp http关系?

    HTTP协议定义了数据传输的格式和语义,而TCP协议提供了实际的传输通道当客户端向服务器发送请求时,TCP协议将请求消息分割成多个数据包进行传输,而HTTP协议则解析这些数据包并进行处理,最终返回响应消息。 当数据传输完成后,TCP协议通过四次握手来断开连接,HTTP协议也随之结束。

    10.2. 序列标识?

    在这里插入图片描述

    在这里插入图片描述

    10.3. 结束包标识?

    tcp.flags.fin

    10.4. Flags标识?

    SYN : 为1表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步。
    ACK : 为1表示确认号字段有效。
    FIN : 为1表示发送方没有数据要传输了,要求释放连接。
    RST : 为1表示出现严重差错。可能需要重新建立TCP连接,还可以用于拒绝非法的报文段和拒绝连接请求
    Windows : 窗口,表示从确认号开始,本报文的发送方可接收的最大流量。
    标记中括号【】的都是wireshark自动实现的。

    10.5. 数据包分组的标识?

    【stream index :29】 数据包分组的标识 追踪流就是按这个来的

    11. 实战案例

    暂无

  • 相关阅读:
    Spring Cloud系列(二):Eureka Server应用
    Oracle一个诡异的临时表空间不足的问题
    JAVA核心类-String
    封装一个vue3 Toast组件,支持组件和api调用
    Model Inspector—软件模型静态规范检查工具
    Spring中事务的失效条件
    C语言——指针进阶(三)
    Springboot 之 Mybatis-plus 多数据源
    Qt基于Qml超链接使用
    震裕科技-300953 三季报分析(20231108)
  • 原文地址:https://blog.csdn.net/li963820454/article/details/138160092