0%

Fiddler抓包原理

一、Fidder适用范围

  • 只能抓取HTTP、HTTPS数据包

二、原理

1576486892(1)
在了解Fiddler解密https的原理之前,我们首先要知道标准的https通信原理。
https://bravoing.github.io/2019/12/16/HTTPS%E5%8E%9F%E7%90%86/

了解以上常识后我们再看Fiddler解密https的过程其实不难:

客户端发起请求,中间人(Fiddler)会拦截来自客户端的请求,并将伪造的ca证书派发给客户端。同时Fiddler向服务器请求,获得服务器的ca证书。

客户端接收到来自中间人(Fiddler)的证书,还傻傻的以为这个证书是来自服务器的,并且使用证书里的公钥(其实是Fiddler的公钥)对生成的通信秘钥(对称密钥)加密,发送给服务器。可怜的是这个数据包也会被中间人(Fiddler)拦截。

中间人(Fiddler)使用自己的私钥将数据包解密,很轻松地得到了通信秘钥。之后使用服务器的RSA公钥对通信密钥加密后传输给服务器。

服务器接收到“客户端”(其实是Fiddler)发送给自己的密钥,使用RSA私钥解密得到明文密钥后,建立信任。握手完成。使用对称密钥加密消息, 开始通信。

后面的事情大家应该就明白了,由于Fiddler持有通信秘钥,客户端和服务器的通信对其始终是透明的。

三、Fiddler代理服务器(中间人)

  • 既然是主机,则必有地址,此地址为127.0.0.1 端口8888
  • Fiddler开启后打开IE,其PROXY自动变为代理地址,但是火狐等需要手动设置
    1576489946(1)
  • 浏览器退出,则自动注销代理,并不会影响使用。但是若Fiddler非正常退出,导致浏览器的代理服务器地址没有注销,会造成网页打不开。(理由:此时端口还在侦听,但代理服务器不能将请求发给真正服务器)
    所有我们要手动将浏览器的代理关掉。

    四、Fiddler证书配置

    Tools–Fiddler Options–HTTPS–Action–Trust Root Certificate