wireshark从入门到实战

wireshark从入门到实战

1.安装

Wireshark 是什么?

Wireshark 是一款免费开源的网络协议分析器,也被称为“抓包工具”或“网络嗅探器”。它可以捕获网络数据包并以易于理解的格式显示出来,让用户能够深入了解网络通信的细节。它就像一个网络世界的“显微镜”,帮助我们观察网络中发生的事情。

Wireshark 的主要功能:

  • 捕获数据包: Wireshark 可以从各种网络接口(如以太网卡、无线网卡等)捕获实时数据包。它支持多种捕获技术,包括 libpcap/WinPcap。
  • 详细分析: 捕获到的数据包会被 Wireshark 解析成易于理解的格式,显示每个数据包的协议、源地址、目标地址、端口号、数据内容等详细信息。
  • 协议支持: Wireshark 支持数百种网络协议,包括 TCP、UDP、IP、HTTP、HTTPS、DNS、FTP 等,并且不断更新以支持新的协议。
  • 过滤功能: Wireshark 提供了强大的过滤功能,允许用户根据各种条件(如协议、地址、端口等)筛选出感兴趣的数据包,从而专注于分析特定的网络流量。
  • 统计功能: Wireshark 可以生成各种统计信息,例如数据包数量、字节数、协议分布等,帮助用户了解网络流量的整体情况。
  • 数据包着色: Wireshark 可以根据不同的协议或规则对数据包进行着色,方便用户快速识别和区分不同的网络流量。
  • 导出功能: Wireshark 可以将捕获到的数据包导出为多种格式,例如 pcap、pcapng、文本文件等,方便用户进行进一步的分析和处理。

官网: https://wireshark.org

根据自己的电脑系统及架构选择对应版本,我选择下载windows X64版本

安装时一路点击“下一步”

如果需要andriod抓包需要把Androiddump也要勾选上

下一步选择在desktop上展示icon,同时一定要把Npcap勾上,wireshark在windows上是选择Npcap作为底部的抓包引擎。

Npcap.exe也会被安装一般不用勾选任何选项。

2. 界面介绍

初次打开会让选择网卡

我使用的是笔记本采用WIFI上网的所以我们以WLAN为例,看一下主要布局。当然如果是插网线的话可以看到自己的链接的网络是哪一个或者看有没有跑“波浪线”。

界面介绍

下面讲解数据包分层结构

  • 物理层:

Frame代表的物理层:信息块提供了关于该数据包的非常详细的元数据,包括捕获时间、接口、封装类型、长度、时间差、协议栈等。这些信息对于理解网络中发生的事情、进行网络故障排除、安全分析至关重要。

数据链路层:

以太网帧的关键信息,包括源 MAC 地址、目标 MAC 地址和帧类型。从数据链路层可以看到数据是从wifi网卡发送到小米路由器。

  • 网络层:

看可以到数据采用的是IPV4协议,以及数据是从源ip地址发送到目标ip地址

  • 传输层:

TCP协议显示的传输层,可以看到源端口和目标端口

  • 应用层:

以图中的显示就是http协议。

3. 使用

初学者使用wireshark时遇到的难点是面对海量的请求无从下手,这时候我们就需要使用到过滤器。

过滤器分为两种

  • 显示过滤器:在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。
  • 捕获过滤器:在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包。

3.1 显示过滤器

下面介绍显示过滤器,显示过滤器最重要的就是ip地址

如果部分内容不知道怎么写我们可以选中其中内容作为过滤器应用进行添加

3.1.1 过滤值比较符号及表达式之间的组合

3.1.2 针对ip的过滤

  • 对源地址进行过滤
1
ip.src == 192.168.0.1
  • 对目的地址进行过滤
1
ip.dst == 192.168.0.1
  • 对源地址或者目的地址进行过滤
1
ip.addr == 192.168.0.1
  • 如果想排除以上的数据包,只需要将其用括号囊括,然后使用 “!” 即可
1
!(ip.addr == 192.168.0.1)

3.1.3 针对协议的过滤

  • 获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可
1
http

注意:是否区分大小写?答:区分,只能为小写

  • 捕获多种协议的数据包
1
http or telnet
  • 排除某种协议的数据包
1
not arp   或者   !tcp

3.1.4 针对端口的过滤(视传输协议而定)

  • 捕获某一端口的数据包(以tcp协议为例)
1
tcp.port == 80
  • 捕获多端口的数据包,可以使用and来连接,下面是捕获高于某端口的表达式(以udp协议为例)
1
udp.port >= 2048

3.1.5 针对长度和内容的过滤

  • 针对长度的过虑(这里的长度指定的是数据段的长度)
1
2
udp.length < 20   
http.content_length <=30
  • 针对uri 内容的过滤
1
http.request.uri matches "user" (请求的uri中包含“user”关键字的)

注意:matches 后的关键字是不区分大小写的!

1
http.request.uri contains "User" (请求的uri中包含“user”关键字的)

注意:contains 后的关键字是区分大小写的!

3.1.6 针对http请求的一些过滤实例。

  • 过滤出请求地址中包含“user”的请求,不包括域名;
1
http.request.uri contains "User"
  • 精确过滤域名
1
http.host==baidu.com
  • 模糊过滤域名
1
http.host contains "baidu"
  • 过滤请求的content_type类型
1
http.content_type =="text/html"
  • 过滤http请求方法
1
http.request.method=="POST"
  • 过滤tcp端口
1
2
tcp.port==80
http && tcp.port==80 or tcp.port==5566
  • 过滤http响应状态码
1
http.response.code==302
  • 过滤含有指定cookie的http数据包
1
http.cookie contains "userid"

3.2 捕获过滤器

例如我们只想捕获IP地址为192.168.0.5的数据包填写为host 192.168.0.5 ,点击开始就开始捕获了

3.2.1 比较符号

1
2
3
与:&&或者and
或:||或者or
非:!或者not

实例:

1
src or dst portrange 6000-8000 && tcp or ip6

3.2.2 常用表达式实例

  • 源地址过滤
1
src www.baidu.com
  • 目的地址过滤
1
dst www.baidu.com
  • 目的地址端口过滤
1
dst post 80
  • 协议过滤
1
udp

4. 其他知识

4.1 arp

ARP 的作用

ARP 是一种网络协议,它主要用于将 IP 地址 解析为对应的 物理地址(MAC 地址)。简单来说,ARP 就是一个“翻译官”,它负责在局域网 (LAN) 中找到与特定 IP 地址关联的设备的 MAC 地址。

为什么需要 ARP?

在网络通信中,IP 地址用于在网络层标识设备,而 MAC 地址用于在数据链路层标识设备。当一个设备需要向另一个设备发送数据时,它需要知道目标设备的 IP 地址和 MAC 地址。

  • IP 地址: 用于在网络层进行路由,确定数据包的传输路径。
  • MAC 地址: 用于在数据链路层进行寻址,将数据帧发送到正确的设备。

当一个设备知道目标设备的 IP 地址,但不知道其 MAC 地址时,就需要使用 ARP 来获取目标设备的 MAC 地址。

4.2 DNS

DNS 的作用

DNS 是互联网的核心基础设施之一,它主要负责将 域名 转换为对应的 IP 地址。简单来说,DNS 就像互联网的“电话簿”,它将我们熟悉的网站名称(如 www.google.com)翻译成计算机可以理解的 IP 地址(如 172.217.160.142)。

为什么需要 DNS?

  • 方便用户: 人类更容易记住和使用域名,而不是复杂的 IP 地址。DNS 允许用户使用易于记忆的域名来访问网站,而无需记住 IP 地址。
  • IP 地址变化: 网站的 IP 地址可能会发生变化,例如服务器迁移或负载均衡。DNS 允许网站更改 IP 地址,而无需用户更改访问方式,用户仍然可以使用相同的域名访问网站。
  • 资源管理: DNS 可以帮助管理网络资源,例如将域名指向不同的服务器,实现负载均衡和故障转移。

DNS 的工作原理

DNS 的工作原理可以概括为以下步骤:

  1. 用户发起请求: 当用户在浏览器中输入一个域名(例如 www.example.com)时,计算机需要知道该域名对应的 IP 地址。

  2. 本地 DNS 解析器:

    用户的计算机首先会查询本地 DNS 解析器(通常是你的路由器或 ISP 提供的 DNS 服务器),看是否已经缓存了该域名对应的 IP 地址。

    • 如果本地 DNS 解析器缓存了该域名对应的 IP 地址,则直接返回 IP 地址给用户。
    • 如果本地 DNS 解析器没有缓存该域名对应的 IP 地址,则会向根 DNS 服务器发起查询请求。
  3. 根 DNS 服务器: 根 DNS 服务器是 DNS 系统的最高层级,它会返回负责顶级域名(TLD,如 .com.org.net)的 DNS 服务器的地址。

  4. 顶级域名 DNS 服务器: 顶级域名 DNS 服务器会返回负责二级域名(如 example.com)的 DNS 服务器的地址。

  5. 权威 DNS 服务器: 负责二级域名的权威 DNS 服务器会返回该域名(如 www.example.com)对应的 IP 地址。

  6. 本地 DNS 解析器缓存: 本地 DNS 解析器会将查询到的 IP 地址缓存起来,以便下次访问相同的域名时可以更快地响应。

  7. 用户连接网站: 用户的计算机获得 IP 地址后,就可以使用该 IP 地址连接到目标网站服务器。

DNS 服务器的类型

  • 根 DNS 服务器: DNS 系统的最高层级,负责管理顶级域名。
  • 顶级域名 DNS 服务器: 负责管理顶级域名(如 .com.org.net 等)。
  • 权威 DNS 服务器: 负责管理特定的域名,提供该域名对应的 IP 地址。
  • 递归 DNS 服务器(本地 DNS 解析器): 负责接收用户的 DNS 查询请求,并递归地查询其他 DNS 服务器,直到找到目标 IP 地址。

DNS 记录的类型

  • A 记录: 将域名映射到 IPv4 地址。
  • AAAA 记录: 将域名映射到 IPv6 地址。
  • CNAME 记录: 将一个域名指向另一个域名(别名)。
  • MX 记录: 指定邮件服务器的地址。
  • TXT 记录: 存储文本信息(例如 SPF 记录)。
  • NS 记录: 指定域名服务器的地址。

DNS 的重要性

  • 互联网访问: 没有 DNS,用户将无法使用域名访问网站,只能记住复杂的 IP 地址。
  • 网络服务: DNS 是互联网上各种服务的基础,包括网站、邮件、云服务等。
  • 资源管理: DNS 允许网站灵活地管理网络资源,实现负载均衡和故障转移。
  • 安全: DNS 安全对于保护用户免受网络攻击至关重要 (例如 DNS 劫持)。

在wireshark中dns是明文显示的

本地电脑可以配置Doh防止被劫持,图中使用的阿里云,记得还要开启时使用未加密请求。这样wireshark就分析不出来使用的是那个网站了。

4.4 tcp

在wireshark中可以看到整体过程

4.5 TLS

TLS 的作用

TLS 是一种加密协议,它主要用于在网络通信中提供 数据加密、身份验证和数据完整性 的保障。简单来说,TLS 就像一个安全通道,它确保在客户端和服务器之间传输的数据是加密的,并且可以验证通信双方的身份,防止数据被窃听、篡改或伪造。

完整说明请查看相关文章或视频

TLS四次握手是TLS协议中用于建立安全连接的过程。它包括以下步骤: 1. 客户端向服务器发送ClientHello消息,包含客户端支持的协议版本、加密算法和随机数等信息。 2. 服务器向客户端发送ServerHello消息,包含服务器选择的协议版本、加密算法和随机数等信息。 3. 服务器向客户端发送Certificate消息,包含服务器的证书信息。 4. 服务器向客户端发送ServerHelloDone消息,表示服务器已经准备好进行安全通信。 TLS四次握手的目的是确保双方都能够协商出一个安全的连接参数,并验证对方的身份。这个过程是加密通信的基础,可以保护数据在传输过程中的安全性。

TLS/SSL四次握手及wireshark抓包分析

5.wireshark解密https

上述理论基础具备后就是重要的解密步骤

WireShark解密HTTPS流量

解密的关键就是wireshark读取premaster secret就可以解密https的消息了

配置步骤

5.1 新建环境变量

新建一个环境变量,其中SSLKEYLOGFILE必须大写,下面为指定路径

这里就放在桌面了

5.2 在wireshark中

  • 中文:编辑 > 首选项 > protocols > ssl (最新版wireshark已经将SSL改为TLS,其实ssl/tls都已统称通信加密协议)
  • English:Edit > Preferences > protocols > ssl (最新版wireshark已经将SSL改为TLS,其实ssl/tls都已统称通信加密协议)

5.3 验证