抓包工具_wireshark

蛋蛋 2022年09月15日 22 0

Wireshark是非常流行的网络封包分析软件,功能十分强大。它可以截取各种网络封包,显示网络封包的详细信息。它是一个跨平台的软件,可以在UNIX系列、Linux、mac OS、Windows等多个平台上进行网络协议的抓包工作。同时,它也是一个开源软件。如果想捕获TCP 3次握手协议,就应该使用Wireshark。

Wireshark的抓包原理是嗅探网卡,所以Wireshark只能查看数据包,不能修改数据包。

5.5.1 Wireshark捕捉HTTP

Wireshark捕捉HTTP协议的步骤如下。

第1步:启动Wireshark,此时会出现很多网络连接,选择一个正在使用的网络连接,如图5-14所示。



图5-14 选择网卡

第2步:输入过滤条件“HTTP”,这样就只捕获HTTP协议。在浏览器中访问http://files-cdnhttp://cnblogs.com/files/TankXiao/http.bmp,Wireshark能捕获到HTTP的报文。HTTP请求和HTTP响应是分开的,HTTP请求有个向右的箭头,HTTP响应有个向左的箭头,如图5-15所示。



图5-15 抓HTTP包

第3步:选择HTTP请求,右键单击并依次选择追踪流→TCP流,如图5-16所示。



图5-16 选择“追踪流”

第4步:打开一个对话框,可以看到完整的HTTP请求和HTTP响应,如图5-17所示。



图5-17 查看完整的HTTP请求和HTTP响应

5.5.2 用Wireshark捕获HTTPS

Fiddler和Charles都需要安装证书后才能捕获HTTPS,用Wireshark捕获HTTPS更麻烦。

方法一:

某些浏览器支持将TLS会话使用的对称密钥保存在外部文件中,以供Wireshark加密使用。本节测试使用的是Chrome 71版本和Wireshark 5.0版本。捕获步骤具体如下。

第1步:配置系统变量。变量名为SSLKEYLOGFILE,变量值为C:\ssl_key\sslog.log,如图5-18所示。注意后缀名一定要用log,这样浏览器和服务器SSL协商的密钥信息才会存储到文件中。



图5-18 新建环境变量

第2步:在CMD中运行以下命令,

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ssl-key-log-file=c:\ssl_key\sslog.log

运行成功后可以看到密钥文件已生成,如图5-19所示。



图5-19 密钥文件

第3步:在Wireshark中配置密钥文件,依次选择编辑→首选项→Protocols→TLS,如图5-20所示。



图5-20 配置密钥文件

第4步:重启Chrome,然后在Chrome中访问https://www.cnblogs.com/tankxiao,此时就可以抓到HTTPS的包了,如图5-21所示。



图5-21 用Wireshark捕获HTTPS

方法一解密限制:
使用key log file log的方式,即记录会话Pre-Master-Secret的方式不存在这些方法一的相关限制。但是不能使用旁路的方式获取会话加密密钥,需要在服务器端或者客户端处获取。


方法二:
1、在wireshark的首选项中的protocols的tls选项里添加服务器私钥文件。p12文件需要填写密码。



2、从整个会话开始前开始抓包。
3、https数据包自动解密为http格式的包。



方法二解密限制:

1、私钥文件
文件格式只能是pem、p12、pfx、key,其中pem文件的必须是PKCS#12格式,且需要把前缀删除。




私钥文件必须与服务器端证书文件相匹配,即使用私钥文件生成服务器证书。
2、必须从整个会话起始抓取,因为每个步骤的包都要抓到才能解密出来会话密钥。
3、加密协议只能使用SSLv3或(D)TLS 1.0-1.2。
目前最高版本是TLSv1.3,是18年8月发布的。目前大部分浏览器默认按最高TLSv1.3来连接。但服务器可以设置使用的协议版本范围,设置成TLSv1.2,试了下baidu、360、qq、taobao、工商银行的https连接抓包,都是用的TLSv1.2。
TLSv1.3新版本功能里有几项是:
通过在(EC)DH密钥协议期间使用临时密钥来保证完善的前向安全性。
放弃许多不安全或过时特性的支持,包括数据压缩、重新协商、非AEAD密码本、静态RSA和静态DH密钥交换、自定义DHE分组、点格式协商、更改密码本规范的协议、UNIX时间 的Hello消息,以及长度字段AD输入到AEAD密码本。
禁止用于向后兼容性的SSL和RC4协商。
个人理解这个就是相当于放弃使用RSA算法交换密钥,所以基于下一条,不支持TLSv1.3。

4、不能使用(EC)DHE算法交换密钥
SSL会话建立过程由服务器端决定密钥交换算法,client hello会提供可选的密钥交换算法,服务器在server hello时选择最终使用的算法。
试了下客户端提供的算法有例如下图,提供的密钥交换算法都是ECDHE或者RSA。目前默认会选择ECDHE,因为RSA密钥交换存在漏洞不安全。

服务器端(以tomcat为例)可以指定支持的cipher suit,从而限定密钥交换算法范围。
试了一些网站,使用的都是ECDHE密钥交换算法,wireshark不支持。


参考:

https://blog.csdn.net/weixin_43977912/article/details/114670877

https://zhuanlan.zhihu.com/p/333229693

Last Updated: 2022/09/18 05:13:27
[JetBrains]免费申请JetBrains全家桶 linux基础命令_压缩挂载