1

前言

tls可以防止第三方的窃听, 纂改, 和重放. 但通信双方, 即alice和bob是知道全部内容的. 所以说, https, 即tls是可以抓包的. 下面总结下几种常见的抓包方式.

几种查看加密流量的方式

chrome inspect

在浏览器中调试当然是抓包的一种. 浏览器本身就是alice, alice自身当然知道自己在说什么.
在chrome中按F12再切到network标签页就可以了. 很多有网页版的app, 都可以用此种方式来查看通信协议. 从变量名就可以获得很多信息了.
值得一提的是, 手机也支持此种方式调试.

SSLKEYLOGFILE

firefox, chrome都支持通过

export SSLKEYLOGFILE=$HOME/sslkeylog.log

日志格式:
https://developer.mozilla.org...

You can tell Wireshark where to find the key file via_Edit→Preferences→Protocols→SSL→(Pre)-Master-Secret log filename_.

中间人

搜索https抓包, 大部分结果都是诸如fiddler, charles的中间人抓包. 这个也是很自然地, 如果没有浏览器, 乃至对tls中两端都没有inspect能力的情况下, 中间人是唯一的可选项了.
在需要中间人抓包的情况下, 首先要信任中间人. 比如, fiddler会要求将fiddler的证书加为根证书. 能够修改代码的情况下, 也可将client_cafile作为配置项.
这里提一个非常实用的抓包方式.

反向代理

假设服务a只提供https方式, 用nginx作为服务a的反向代理. 同时提供http服务. 再抓取client到nginx的traffic.
nginx配置:

server {
    listen *:80;
    listen [::]:80;
    server_name local.reverse.proxy.com;

    location / {
        proxy_pass https://www.google.com/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-Port $remote_port;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
    }
}

enjolras1205
77 声望9 粉丝