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文件一并取回,就可以解密了。
推荐内容
阅读全文
AI总结
更多推荐
相关推荐
查看更多
A2A

谷歌开源首个标准智能体交互协议Agent2Agent Protocol(A2A)
ai-agents-for-beginners

这个项目是一个针对初学者的 AI 代理课程,包含 10 个课程,涵盖构建 AI 代理的基础知识。源项目地址:https://github.com/microsoft/ai-agents-for-beginners
n8n

n8n 是一个工作流自动化平台,它结合了代码的灵活性和无代码的高效性。支持 400+ 集成、原生 AI 功能以及公平开源许可,n8n 能让你在完全掌控数据和部署的前提下,构建强大的自动化流程。源项目地址:https://github.com/n8n-io/n8n
所有评论(0)