透明代理 fiddler https解析
大家都知道fiddler是可以解析https数据包的。 但如果是透明代理的方式使用fiddler抓包则需要额外做一些设定。
通常设定代理的方法为:
手机或者浏览器(程序客户端), 设定代理地址和端口号(fiddler默认监听 本机地址和8888 端口号)。 这样当手机或者浏览器发起http/https 请求时, 会被fiddler截获。
关于fiddler如何捕捉https并解密, 需要打开Tools -》 Tlerik Fiddler Options -》 Https 标签, 勾选 Capture https connects 和 decrypt https traffic。 通常我们为了方便捕获到一些自签名服务器证书的请求访问, 可以勾选 Ignore server certificate errors。
这时我们就可以截取https 的数据包了。
但我们今天讨论的是透明代理的方式。 即不让用户主动的设定代理服务器地址和端口号。
如何设置透明代理,可以考虑使用iptables 进行nat设定。 首先我们来比对下这2种方式的不同。
1) 显式代理模式: 客户端会先通过http协议发送 connects 命令, 握手成功后, 会进行https 协议传输。 所以我们在 fiddler截获的请求中,可以看到Tunnel to 的请求。 双击打开这个请求,可以看到如下的请求和返回内容。
请求部分内容: A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below. 返回的部分内容: Encrypted HTTPS traffic flows through this CONNECT tunnel. HTTPS Decryption is enabled in Fiddler, so decrypted sessions running in this tunnel will be shown in the Web Sessions list. Secure Protocol: Tls12 Cipher: Aes128 128bits Hash Algorithm: Sha256 ?bits Key Exchange: ECDHE_RSA (0xae06) 255bits
2) 透明代理模式: 客户端通过网络传输层,被重定向到我们的代理服务器。 即客户端并不知道他的数据包经过代理服务器进行了转发行为, 也就是我们常说的mitm attack. 中间人攻击。 此时代理服务器的管理人员可以看到所有该局域网络的(网络已设定了透明代理, 关于透明代理,大家可以谷歌)http/https 请求。 这个时候https的请求是直接的https 握手, 没有通过connects 命令。 所以, fiddler 会草率的返回一些plaintext 数据,导致握手失败。
我们需要做的是,告诉fiddler 监听一个端口, 客户端的链接都会默认进行https 握手链接。 fiddler book中的介绍如下。
!listen port [ SubjectCN ] Starts a new proxy listener object on the specified port . This listener’s Sessions will be added to the Web Sessions list. The listener instance is automatically configured to permit remote connections. If the CN parameter is present, all inbound connections on this listener will automati- cally invoke a HTTPS handshake; Fiddler will present a certificate containing the specified SubjectCN . This feature is primarily useful when Fiddler is being used as a reverse proxy for a HTTPS site. !listen 8889 !listen 4443 secure.example.com
我们需要在 QuickExec 中执行如下命令: !listen 8889 secure.example.com 那么fiddler会提示,此时我们就可以通过透明代理模式监听https 协议。
此篇文章已被阅读4740 次