Wireshark数据包分析
- 1. 网络协议基础
- 1.1. 应传网数物(应表会传网数物)
- 2. 三次握手
- 2.1. 第一次握手
- 2.2. 第二次握手
- 2.3. 第三次握手
- 2.4. 三次握手后流量特征
- 3. 第一层---物理层(以太网)
- 4. 第二层---数据链路层(PPP L2TP PPTP)
- 5. 第三层---网络层(IP ICMP ARP)
- 5.1. ip协议解析
- 5.2. ARP协议解析
- 6. 第四层---传输层(TCP UDP TLS)
- 6.1. Tcp协议解析
- 7. 第五层---应用层(HTTP SSH FTP TELNET DNS)
- 8. https之wireshrk解密
- 8.1. 获取证书(略)
- 8.2. 进行动态获取对称加密密钥解码
- 9. wireshrk常用语法
- 9.1. 按协议查询
- 9.2. 按ip地址查询
- 9.3. 按ip端口查询
- 9.4. 按GET,POST查询
- 9.5. 按MAC查询
- 9.6. 按包长度过滤
- 9.7. 按正则过滤
- 10. 常见问题
- 10.1. Eth/ethernet(以太网) ip tcp http关系?
- 10.2. 序列标识?
- 10.3. 结束包标识?
- 10.4. Flags标识?
- 10.5. 数据包分组的标识?
- 11. 实战案例
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. 进行动态获取对称加密密钥解码
- 首先针对Chrome浏览器进行配置
a) 先创建保存密期文件,最好是英文路径,文件以英文名称,如:
E:\Wireshark\wiresharkkey\sslkeylog.log
b) 找到Chrome的快捷方式,快捷方式->鼠标右键->快捷方式->目标,目标启动路径后面添加–ssl-key-log-file=E:\Wireshark\wiresharkkey\sslkeylog.log
- 针对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. 实战案例
暂无