TLS包抓取后如何解密,手把手带你!


工作中经常遇到FAE抓取了需要分析的网格包,而包被TLS加密无法查看的情况,于是有了写一篇文章记录一下对于一般情况开发人员应该如何解密的想法。

这里记录一般情况,对于开发人员是一个向导。在具体的项目中可以自己调整。

第一步

下载openssl源码包

$git clone -b OpenSSL_1_1_1c https://github.com/openssl/openssl.git --single-branch --depth=1

第二步

编译openssl

$cd openssl
$./configure
$make
$sudo make install
$sudo cp /usr/local/bin/openssl /usr/bin/
$ openssl version //检查版本号
OpenSSL 1.1.1c  28 May 2019

第三步

打开wireshark 抓包

$sudo wireshark
$password:xxx
$ctrl+z
$bg

第四步

运行

$openssl s_client -keylogfile ~/Desktop/www.baidu.com.keylog -connect www.baidu.com:443
。。。//ssl握手过程输出打印略过
---
GET / HTTP/1.1                    //此行为输入
Host: www.baidu.com               //此行为输入
                                  //此行为输入,一个回车
。。。//服务器返回内容略过

上面的例子在ssl交互过程中会生成keylog文件。
keylog文件形如:

# SSL/TLS secrets log file, generated by OpenSSL
CLIENT_RANDOM 57e8f86bbc34007d9fd70ac8dd69739789bc7f943731458ae8c1ec209527f75b ff978d80a734a42325ce729582050d5395f1116c8d8aec7734ba79bae508bb24e023e7b791d53997e4a04264834ed00d
CLIENT_RANDOM f12f776fe28aef0e2668d7adb3108769acab0b5c49ab88f0070e3e3dcbd400b7 6d686b82138079c4cb190ab8be8c60dc953fcdd8a53afa60843de8c43664cd82aecaa71965fb5ebc8fd7354064113381

第五步

将keylog文件交给wireshark:
步骤:
edit:->preferences->protocols->ssl(或tls)->(Pre)-Master-Secret log filename:~/Desktop/www.baidu.com.keylog->OK
返回查看抓到的报文,出现了解密之后的明文。
在这里插入图片描述

分析与总结

openssl 1.1.1c 已经支持将ssl握手时的keylog导出,wireshark也支持直接读取openssl导出的keylog。
在开发人员写代码时可以参考:
openssl/apps/s_client.c里的set_keylog_file()函数,和ssl/ssl_lib.c里的SSL_CTX_set_keylog_callback()函数,如果找不到这两个函数就需要从高版本的openssl合入这个功能。

再抓到加密包后将keylog文件一并取回,就可以解密了。

`tcpdump`是一个强大的网络协议分析工具,可以捕获和解析网络流量,TLS(Transport Layer Security,也称为SSL)。如果你想使用`tcpdump`抓取TLS,通常需要安装`tcpdump`并了解其基本命令结构,然后配置过滤器来只抓取特定的TLS流量。这里有一个简单的步骤指南: 1. **安装**:首先确保你的系统已经安装了`tcpdump`。如果没有,你可以从官方站点或管理器(如Ubuntu的`apt-get`、Debian的`apt`或MacOS的Homebrew)中安装。 2. **启动捕获**:打开终端,运行`tcpdump`命令。例如,如果你想要监听所有网卡上的所有TLS流量,可以输入: ```sh sudo tcpdump -i any port 443 or port 8443 ``` `-i any`表示监听所有接口,`port 443`和`8443`是常见的HTTPS和SFTP服务端口。 3. **添加过滤器**:如果只想抓取特定主机间的TLS流量,可以在命令中添加主机名或IP: ```sh sudo tcpdump host example.com and port 443 ``` 4. **保存数据**:默认情况下,`tcpdump`会直接打印到屏幕。如果你想保存结果以便后续分析,可以加上`-w`选项,指定文件名: ```sh sudo tcpdump -i any port 443 -w tls_capture.pcap ``` 5. **解析TLS**:抓取到的通常含加密内容,如果你想查看明文内容,可以使用专门的工具如`tshark`(Wireshark的一部分),它能解密并解析TLS数据: ```sh tshark -r tls_capture.pcap -qZ ssl,record ``` 注意,抓取加密数据可能会涉及到隐私和法规问题,确保你有足够的权限并且遵守相关规定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值