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

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
返回查看抓到的报文,出现了解密之后的明文。
TLS包抓取后如何解密,手把手带你!_第1张图片

分析与总结

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

你可能感兴趣的:(TLS包抓取后如何解密,手把手带你!)