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文件一并取回,就可以解密了。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值