使用ssldump解密https数据包
一、问题背景
现网应用需要分析经过公网F5进入的https流量,网上搜索出来的结果都是通过wireshark 设置SSLKEYLOGFILE ,并在SSL协议中设置Pre-Master-Securet log file,可以对抓到的SSL https包进行解密。不过这里跟公司里的情况又有点不一样,由于https解密需要用到私钥。一般情况的话我们解析回联网上的包是没有私钥的,不过我这里私钥可以从F5上导出。理论上来说,有私钥,通过tcpdump进行抓包后,通过这个私钥文件,应该很容易通过wireshark 配置好私钥就可以解析出需要的信息。不过发现真正测试的时候并不好用。
二、ssldump解密
网上查询发现在Linux平台下有个ssldump 工具可以进行ssl https协议的抓包和解析,由于f5本身是基于红帽系统的,也可以安装软件。通过ssh登录f5后台,发现系统自带有ssldump工具。通过man查看该工具的用法如下:
其还有一个 -r 参数,可以对已经抓过的包,进行解析。
中间这部分运行完后,会将https包的内容解析出来,在下面通过分隔线打印出来。这里只截取了部分内容:
三、其他
由于F5是比较核心和昂贵的设备,不想占其资源,涉及到ssl解包的操作想在一台linux上进行,尝试在LINUX上安装ssldump工具。不过安装和使用过程中发现一些问题。
1、ssldump在linux上的安装
使用epel 源可以直接安装,不过安装完后,运行的过程中会有如下报错:
1# ssldump -Ad -k CLIENT_SD_CA.key -r https2.pcap
2Problem loading private key
3ERROR: Couldn't create network handler
网上有人给出的结果是和openssl 包的版本兼容不对 。
换用源码包安装,遇到第一个提示:
configure: error: Couldn’t find PCAP library: needed for ssldump
该提示缺少libpcap包,下载该包,编译安装即可解决。再次编译,又遇到如下错误:
1In file included from ./base/network.h:96:0,
2 from ./base/network.c:51:
3./base/tcpconn.h:53:6: error: unknown type name ‘tcp_seq’
4 tcp_seq s_seq;
5 ^
6./base/tcpconn.h:59:6: error: unknown type name ‘tcp_seq’
7 tcp_seq seq;
8 ^
9./base/tcpconn.h:60:6: error: unknown type name ‘tcp_seq’
10 tcp_seq ack;
11 ^
12make: *** [network.o] Error 1
由于对C代码并不很懂,所以也懒得再去看源代码了。再次尝试epel 源安装的ssldump ,发现可以正常执行了。不过使用和f5上一样的命令执行时,发现只能打印ssl 三次握手的加密信息,后面的解密内容打印不出。
2、SSL数据包
上面是通过wireshark打开时的TLS https交互的信息,可以看出,上面会对信息进行分类,真正的数据在Application data 里,而上面的哪些包是三次握手的过程。提出这点就是在分析包或解码包时,对于不需要的信息,可以直接跳过,只选中需要的内容进行操作尝试 。
2019-09-21后记,后来有人咨询该问题。通过后面进一步研究。已解决ssldump https解包在所有平台上的测试。上面只出现握手包,不出现解密 http请求内容的问题已得到解决,新的内容已更新到:
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/ssldump/5518.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.