Wireshark解密TLS报文

栏目: 编程工具 · 发布时间: 5年前

内容简介:如果是nginx做的反向代理,一般证书会配置在nginx这一层。Preferences -> Protocols -> TLS

解密TLS报文

1. 预备知识

  1. 拥有服务器端证书对应的私钥
  2. 加密算法不能使DHE、ECDHE
  3. 报文必须完整,从TCP握手开始

2. 操作步骤

2.1 抓取报文

2.1.1 Linux 服务器上抓取tcp报文

tcpdump -i eth0  port 10176 -w server.cap -C 50
# -i 指定网卡名
# -w 输出到文件 
# -C 文件分割大小,单位M
# port 指定监听端口

2.1.2 Android上抓取tcp报文(如果无特殊需要抓一方的报文就够了)

tcpdump -i any -p port 8883 -vv -s 0 -w sdcard/client.pcap
# -i   指定网卡名
# -w   输出到文件 
# -C   文件分割大小,单位M
# port 指定监听端口
# -vv  输出详细报文
# -s 0 不截取数据包

2.2 设置Wireshark(v3.0.1)

2.2.1 添加证书私钥

如果是nginx做的反向代理,一般证书会配置在nginx这一层。

Preferences -> Protocols -> TLS

Wireshark解密TLS报文

添加私钥参数

IP Address   服务器IP

Port               服务器端口

Protocol        http(如果是http:小写,非https)

Key File        选择key文件,格式pem

注意:私钥格式为pem,样式如下:

—–BEGIN RSA PRIVATE KEY—–

—–END RSA PRIVATE KEY—–

2.2.2 使用Wireshark打开.pcap文件

如果tcp报文完整(从tcp握手开始),并且私钥正确,而且加密算法不是DHE/ECDHE,你应该已经看到解密后的内容了。

排查网络丢包、异常数据

有时遇到网络丢包的情况,也可能遇到client收到server异常数据的情况,两者的处理方式是一样的

1. 禁止Wireshark重排TCP seq和ack

Preferences -> Protocols -> TLS

Wireshark解密TLS报文

2. client和server相同时间段内抓包

3. 对比client和server的报文

  1. 在一端定位到异常报文,获取tcp对应seq
  2. 在另一端查询是否有相同seq的数据且时间相同

4. Go on

剩下的就是根据报文内容具体分析了:比如会不会是连接超时,http2 server主动发送了goaway,然后断开了连接。

Q&A

Q1:如何判断当前TLS使用的加密算法

A:在TLS的Server Hello报文中查Cipher Suite,如下图

Wireshark解密TLS报文

Q2:如何指定TLS使用的加密算法

A1:客户端指定,客户端可以通过参数的方式设定,以okhttpclient为例

OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder();
ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
                .tlsVersions(TlsVersion.TLS_1_2)
                .cipherSuites(
                        CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256,
                        CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
                        CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA,
                        CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA)
                .build();
        okHttpClientBuilder.connectionSpecs(Collections.singletonList(spec));

OkHttpClient okHttpClient = okHttpClientBuilder.build();

A2:服务端通过配置的方式设定,以nginx为例

ssl_prefer_server_ciphers on;
ssl_ciphers AES128-GCM-SHA256;

Q3:nginx http2_module连接空闲超时时间是多少?

A:3min

Q4:如何判断wireshark解密成功了?

A:观察是否http请求的url已经变成明文;http payload也是明文了(界面下方可以切换tab)

Q5:DHE算法为什么不能解密?

A:DHE算法符合完全正向保密协议,中间人即使得到私钥也破解不了密文。

Links:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

腾讯网UED体验设计之旅

腾讯网UED体验设计之旅

任婕 等 / 电子工业出版社 / 2015-4 / 99.00元

《腾讯网UED体验设计之旅》是腾讯网UED的十年精华输出,涵盖了丰富的案例、极富冲击力的图片,以及来自腾讯网的一手经验,通过还原一系列真实案例的幕后设计故事,从用户研究、创意剖析、绘制方法、项目管理等实体案例出发,带领读者经历一场体验设计之旅。、 全书核心内容涉及网媒用户分析与研究方法、门户网站未来体验设计、H5技术在移动端打开的触控世界、手绘原创设计、改版迭代方法、文字及信息图形化设计、媒......一起来看看 《腾讯网UED体验设计之旅》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具