文章目录
一、下载
Wireshark官网:https://www.wireshark.org/
打开官网后点击Download Wireshark Now->,会跳转到下载部分,选择自己对应的机器,然后下载安装包到本地。我这里Windows 64位,所以选择最新稳定版的Win64安装包
二、安装
双击exe文件会默认安装到C盘。
点击桌面快捷方式启动后页面:
打开命令窗口(win+R)输入ipconfig。找到正在使用的网卡
三、使用步骤
3.1 捕获数据
- 双击指定网卡:
- 开始捕获指定网卡上所有的数据包:
一般情况下,我们捕获的都是指定IP或者指定端口的数据库,全部的数据包捕获内容太多,不利于分析。
3.2 设置过滤器
- 暂停捕获:设置过滤器
- 设置捕获指定端口:
3.3 捕获数据包输出到文档中
不输出到文件中,会导致数据包都缓存在内存中,最后导致内存爆满,导致重启,捕获的包也全部丢失了。
四、日志分析
4.1 打开日志:
4.2 找到http请求,里面是包含调用时的数据包的。
每次分析时的数据都是不一样的。要根据实际情况找到自己需要的数据包,找到一个方便查询的条件,才能更快的获取数据包
4.3 将条件改为模糊匹配:
4.4 选中自己想要的数据,采用追踪流:
我采用的是tcp追流。就能找到一次调用的所有数据包。
- 跳转日期格式
日期格式存在问题,选择视图中的时间显示格式,日期和时间
五、数据包层次结构
5.1 界面分析:
- 3 个面板中,每个面板包含的信息含义如下:
- Packet List 面板:上面部分,显示 Wireshark 捕获到的所有数据包,这些数据包从 1 进行顺序编号。
- Packet Details 面板:左下,显示一个数据包的详细内容信息,并且以层次结构进行显示。这些层次结构默认是折叠起来的,用户可以展开查看详细的内容信息。
- Packet Bytes 面板:右下,显示一个数据包未经处理的原始样子,数据是以十六进制和 ASCII 格式进行显示。
5.2 数据包的层次结构信息
- 各行信息分别为:
- Frame: 物理层的数据帧概况
- Ethernet II: 数据链路层以太网帧头部信息
- Internet Protocol Version 4: 互联网层IP包头部信息
- Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
- Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议。
5.3 tcp包的含义
5.4 Wireshark抓包分析TCP三次握手
- TCP三次握手连接建立过程
Step1:客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;
Step2:服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;
Step3:服务端发送一个SYN=0,ACK=1的数据包给客户端端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯。
- 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下
其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。
六、参数过滤
6.1 捕获过滤器
6.1.1 语法
语法:<Protocol> <Direction> <Host(s)> < Value> < Logical Operations> <Other expression>
6.1.2 详细
- Protocol(协议): ether, ip,arp, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议
- Direction(方向):src, dst,src and dst, src or dst等,如果没指明方向,则默认使用 “src or dst” 作为关键字
- Host(主机):net, port, host等等,如果没有指明,默认是‘host’.
- Logical Operations(逻辑运算):例如and or not
6.1.3 实例
6.1.3.1 关于IP地址
捕获192.168.0.0目标和源头的这个网段所有数据:net 192.168.0.0/24
不捕获192.168.0.0为目标这个网段所有数据:not dst net 192.168.0.0/24
捕获192.168.0.0网段为源头的所有数据:src net 192.168.0.0/24
捕获192.168.0.1主机为源头的所有数据:src host 192.168.0.1
6.1.3.2 关于广播地址
捕获239.255.255.255~224.0.0.0的数据:ip multicast
6.1.3.3 关于Mac地址
捕获到达/来自 aa:aa:aa:aa:aa:aa的数据:ether host aa:aa:aa:aa:aa:aa
捕获到达aa:aa:aa:aa:aa:aa的数据:ether dst aa:aa:aa:aa:aa:aa
不捕获到达/来自 aa:aa:aa:aa:aa:aa的数据:not ether host aa:aa:aa:aa:aa:aa
6.1.3.4 捕获关于端口
捕获来自53端口的TCP/UDP数据:port 53
捕获来自67端口的UDP数据:udp port 67
捕获来自1-80端口的TCP/UDP数据:portrange 1-80
捕获来自1-80端口的TCP数据:tcp portrange 1-80
6.1.3.5 捕获ICMP数据
捕获所有icmp数据:icmp
捕获ICMP字段类型为8(echo request):icmp[0]=8
捕获ICMP字段类型为17(Address Mask request):icmp[0]=17
6.2 显示过滤器
6.2.1 语法
语法:<Protocol> <String 1> <String 2> < Comparison operator> < Value> <Logical Operations>
6.2.2 详细
- Protocol(协议):可以使用大量位于OSI模型第2至7层的协议,例如IP TCP DNS SSH,远比捕捉过滤器丰富
- String 1(参数 1):协议的子类,之间用点号.相连接
- String 2(参数 2):协议的子类,之间用点号.相连接
- Comparison operators (比较运算符):例如== != > <
- Value(值):填入例如ip地址的值
- Logical expression_rs(逻辑运算符):例如:and or not
6.2.3 实例
6.2.3.1 非语法
6.2.3.2 语法
6.2.3.2.1 协议过滤器
显示arp协议流量:arp
显示ipv4协议流量ip
显示tcp协议流量:tcp
6.2.3.2.2 应用过滤器
捕获dhcp协议流量:dhcp
捕获dns协议流量:dns
捕获http协议流量:http
捕获icmp协议流量:icmp
6.2.3.2.3 地址过滤法
显示来自iv4的数据:ip.src
显示到达ipv4且值为192.168.0.1的数据:ip.dst192.168.0.1
显示来自/到达ipv4且值为192.168.0.1的数据:ip.host192.168.0.1
显示来自/到达ipv4且值为192.168.0.0网段的数据:ip.addr==192.168.0.0/24(类似前面的net)
6.2.3.2.4 其它过滤法
正则模糊匹配:http.host matches “qq”(其使用的为正则表达式)
包含模糊匹配:http.host contains"qq"(其包含引号里面内容就会显示)
6.2.4获取许多分析数据
七、参加文献
网络抓包工具Wireshark下载安装&使用详细教程
wireshark过滤[如何过滤信息]
Wireshark的抓包和分析,看这篇就够了!
Wireshark使用及如何查看请求信息中是否有对应的字符串