基本原理

◇Fiddler抓包基于注册成HTTP(S)协议数据的收发代理;
◇只要支持配置http代理的环境,就可以使用Fiddler抓包,据此可以抓取经过手机的HTTP(S)包;
◇HTTPS比HTTP多了非对称加密机制,包含一对互相解密的公钥和私钥,发起HTTPS过程如下图,抓取HTTPS内容除了作为代理拿到客户端与服务器之间传输的数据还需要能对数据解密;

◇Fiddler抓取HTTPS包借鉴中间人攻击(Man-in-the-MiddleAttack,简称MITM攻击)原理,代理服务器与客户端之间使用中间人的公钥私钥,与服务器之间使用服务器的公钥;

◇服务器公钥包含在服务器提供的SSL证书中,除了公钥还包含:证书颁发机构(即CA)、有效期、公钥、证书持有者、CA指纹和指纹算法等。真实CA的数字证书(即根证书)由于拿不到私钥是无法伪造的,中间人需要伪造一个CA,并能随时颁发要访问任何网站的SSL证书,同时需要在系统根证书管理中添加对伪造CA根证书的信任否则浏览器会跳出安全提示;

抓取HTTPS包的方法

◇伪造一个CA并能随时颁发要访问任何服务器的SSL证书的机制Fiddler已经提供,打开Fiddler设置:Tools->Options->HTTPS->Capture HTTPS CONNECTs->Decrypt HTTPS traffic,根据提示生成名为”DO_NOT_TRUST_FiddlerRoot”的根证书并添加到系统信任根证书列表;

◇windows下运行”certmgr.msc”可以查看系统当前信任的根证书列表;

◇打开Fiddler抓包开关,访问HTTPS目标网址,点开地址栏锁图标查看证书信息,可以看到其中的证书颁发组织都变成了”DO_NOT_TRUST”,Fiddler中此时也可查看HTTPS包内容;

抓取手机包(包括HTTPS)的方法

■如已经按上一段步骤生成根证书则直接进入下一步;
■设置Fiddler作为局域网代理服务器:Tools->Options->Connections

■手机连入与运行Fiddler的PC端相同的局域网,配置手机的局域网代理为PC局域网IP及Fiddler设置的端口;
■手机端安装信任证书
(1)手机访问网址http://PC局域网IP:_fiddler设置的端口_,页面内下载”FiddlerRoot Certificate”安装并设置系统信任;
(2)iOS版本高于10.3需额外操作手机:设置->通用->关于本机->证书信任设置;