Wireshark基础使用,SSL解密及http抓包入门教程

Posted Young_svg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wireshark基础使用,SSL解密及http抓包入门教程相关的知识,希望对你有一定的参考价值。

Wireshark VS Fiddler/Charles

Wireshark功能很多、作用效果很底层,并且可以监听指定的网卡上流过的所有流量,支持的协议如下:

ARP 协议:地址解析协议,即ARP(Address Resolution Protocol),是根据 IP地址 获取 物理地址 的一个 TCP/IP协议

ICMP 协议:控制 报文 协议。 它是 TCP/IP协议簇 的一个子协议,用于在IP 主机 、 路由 器之间传递控制消息

TCP 协议, TCP/IP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它会保证数据不丢包、不乱序。TCP全名是Transmission Control Protocol,它是位于网络OSI模型中的第四层(Transport layer)

三次握手:

理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写 了,就是服务器和客户端交互,最终确定断开)

通俗的话:三次握手是 1.客户端发生请求,“服务器服务器,请求请求!!!” 2.服务器不确定是不是他,要进行确认,“我不知道你是不是我要等的那个客户端,我要确定一下” 3.客户端就发送确认信息,“是我是我!” 服务器收到之后,确认过眼神遇上对的客户端,就建立连接了。

UDP 协议:UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的

DNS 协议:DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)

HTTP 协议, FTP 协议:略

Fidder 的强大在于,专门为 Http/Https 协议定制的软件,主要为了抓取这两个协议的数据包

(一)下载与安装

https://www.wireshark.org/download.html

Win补丁下载:

http://www.win10pcap.org/download/

执行需要抓包的操作,如ping www.baidu.com

该图为 Wireshark 的主界面,界面中显示了当前可使用的接口,例如,本地连接 5、本地连接 10 等。要想捕获数据包,必须选择一个接口,表示捕获该接口上的数据包

操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr == 110.242.68.4 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为110.242.68.4 的数据包。

http条件过滤

IP 过滤 比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102, ip.dst==192.168.1.102, 目标地址为192.168.1.102

Http模式过滤 http.request.method=="GET", 只显示HTTP GET方法的

**http.host==**53zaixian.com

http.host contains 53zaixian.com

过滤抓取53域名的http请求

http.host contains 53zaixian.com

(二)抓取https等解密

Wireshark+Chrome,HTTPS数据包抓取配置

配置系统环境变量

变量名:SSLKEYLOGFILE 变量值:此处可以随意指定,作用是告诉chrome输出SSLKEY的位置,而wireshark则可以使用此文件来解密HTTPS数据包。

配置Wireshark

填入刚才在系统变量指定的keylog文件的存储路径,以便wireshark访问keylog中的key,来解密HTTPS数据包。 中文:编辑>首选项>protocols>TLS English:Edit>Preferences>protocols>TLS

(三)报文传输各层简要介绍

·Frame: 物理层的数据帧概况

·Ethernet II: 数据链路层以太网帧头部信息

·Internet Protocol Version 4: 互联网层IP包头部信息

·Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

·Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

物理层数据帧

数据链路层以太网帧的头部信息

网络层IP头部包信息

传输层数据包头部信息

HTTP协议分析,请求报头,报文分析:

响应报文

追踪流查看详细信息:

这样就可以比较清晰的看到一个数据流过程。还可以看到自己的cookie,host,浏览器信息,等http数据包的详细内容。

本文由 mdnice 多平台发布

5GC基础自学系列 | Wireshark解密HTTPs,还原HTTP2

视频来源:51学通信《5G核心网基础、协议与信令流程》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,谢谢支持!

附上汇总贴:5G基础自学系列 | 汇总


主要内容

介绍通过Chrome浏览器、Wireshark还原HTTPs方法

介绍抓取HTTP2报文,并还原成明文

HTTPs解密的背景

HTTPs采用了非对称加密(公钥加密、私钥解密),wireshark抓包默认是无法解析的。如图:

遗憾的是,很多网站都启用了HTTPs加密。

在学习5GC时, 会用到HTTP 2协议, 很多网站也都支持HTTP 2, 但只支持启用了HTTPs的HTTP2。即使抓到了包, 也无法解析, 不利于我们的学习。

HTTPs解密方法

方法一:能获取到私钥, 导入到Wireshark中。

方法二:某些浏览器(如Google的Chrome)支持将TLS(HTTP本身不是一个协议,其加密依赖的是下层的TLS)会话中使用的密钥保存在外部文件中,供Wireshark解密使用。

实验环境:

  • Wireshark 3.2.1
  • Chome版本79.0.3945.130
  • Win 10(win 7也可以)

下测试通过。

HTTPs解密步骤

步骤:

1)添加windows的环境变量:

变量名:SSLKEYLOGFILE

值:c:\\temp\\key.log(这个文件用来存放密钥)

2)设置Wireshark中的TLS参数:

编辑->首选项->Protocol->TLS,填写(pre)-master-secret log filename为c:/temp/key.log(与第1步文件名相同)

抓取HTTP2网站报文

上述步骤完成, Wireshark此时已经可以解密了。百度下找一些支持HTTP 2的网站来尝试抓包, 可以看到, 可以解析出明文的HTTP 2报文。

从图中可以看到, 先是TCP三次握手, 然后是Client和Server完成TLS的协商(互相发Hello),推送密钥。然后Chrome拿到密钥,写入到文件里,并解密。还原成明文。后面看到的HTTP 2都是明文了。

以上是关于Wireshark基础使用,SSL解密及http抓包入门教程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用wireshark查看ssl内容

从自签名证书到wireshark解密https

抓包工具(如Charles)抓取Https数据包

5GC基础自学系列 | Wireshark解密HTTPs,还原HTTP2

wireshark怎么抓包

配置Wireshark抓取https数据包 解密SSL