Fiddler抓包之【 抓取https请求 】详解教程

打印 上一主题 下一主题

主题 546|帖子 546|积分 1638



 


目录:导读

引言
概况
根本原理
抓HTTPS的原理
HTTPS请求两类
Fiddler抓包要求
总结
写在最后


引言

  在一样平常测试中,不管是功能测试还是接口测试,制止不了抓包。抓包工具有很多,这里只讲fiddler的利用,并且是对https请求的抓取。
概况

  抓包之前,先了解一下Fiddler。
  Fiddler是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录全部客户端和服务器间的http请求,支持监督、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于变乱脚本的子体系,并且能够利用.net框架语言扩展。
根本原理

  Fiddler是位于客户端和服务器端之间的HTTP代理, 它能够记录客户端和服务器之间的全部 HTTP(S)请求,可以针对特定的HTTP(S)请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。
Fiddler在浏览器与服务器之间创建一个代理服务器,Fiddler工作于七层中的应用层,能够捕获通过的HTTP(S)请求。Fiddler启动后会自动将代理服务器设置本钱机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他装备的HTTP(S)请求数据。数据通报流程大抵如下:

  1) 客户端像WEB服务器发送HTTP(S)请求时,请求会先经过代理Fiddler代理服务器。
  2) Fiddler代理服务器截取客户端的请求报文,再转发到WEB服务器,转发之前可以做一些请求报文参数修改的操作。
  3) WEB服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取WEB服务器的响应报文。
  4) Fiddler处理完响应报文后再返回给客户端。
  简朴来说就是:
  客户端请求 -> 经过代理 -> 到达服务端
  服务端返回 -> 经过代理 -> 到达客户端
抓HTTPS的原理

  现在APP中的数据传输根本上都利用HTTS传输,传输的数据都是经过加密的,这增长了我们分析数据包的难度,还好Fiddler除了可以抓取HTTP数据包,还可以抓取HTTPS数据包。由于HTTPS传输需要利用到CA证书,所以抓取抓取HTTPS数据包时需要做一些特殊配置。Fiddler截取HTTPS报文的流程大抵如下:

  1) 客户端请求创建HTTPS链接,发送客户端支持的加密协议及版本列表等信息给服务器端。
  2) Fiddler接受客户端请求并伪装成客户端向WEB服务器发送雷同的请求。
  3) WEB服务器收到Fiddler的请求以后,从请求中筛选符合的加密协议。并返回服务器CA证书,证书中包括公钥信息。
  4) Fiddler收到WEB服务器的响应后保存服务器证书并自签名一个CA证书,伪装成服务器,把该证书下发给客户端。
  5) 客户端验证证书正当性。(Fiddler可否抓取到HTTPS报文关键看这一步)
  6) 客户端生产对称密钥,通过证书的公钥加密发送给服务器。
  7) Fiddler拦截客户端的请求以后,利用私钥解密该报文,获取对称加密秘钥,并利用服务器证书中带的公钥加密该对称密钥发送给WEB服务器。此时对称密钥已经泄露了,以后可以利用该秘钥界面客户端和服务器端传输的数据。
  8) WEB服务器接收到客户端发送的加密的对称密钥后利用私钥解密,并利用对称密钥加密测试数据传给客户端。
  9) Fiddler利用前面获取的对称密钥解密报文。
  10) 客户端验证数据无误以后HTTPS连接就创建完成,客户端开始向服务器发送利用对称密钥加密的业务数据
  11) Fiddler利用前面获取的对称密钥解密客户端发送的数据并重新加密转发给客户端。
HTTPS请求两类

  1.带证书的https请求:请求中携带证书,只要证书正确就能请求过去,没有别的要求。
  2.不带证书的https请求:只要是CA颁布的正规证书(收费的),都可以不用携带证书,达到https的加密效果,大大减轻了请求的代码量,但是这种请求必须要求请求方正当(时间要正确,比如把手机时间调成几天前,证书就会以为请求非法,拒绝访问)
Fiddler抓包要求

     从上面可以看到,fiddler相当于代理,客户端和服务器交互都要通过fiddler,Fiddler抓取HTTPS协议成功的关键是根证书(根证书是CA认证中央给本身颁发的证书,是信托链的起始点。安装根证书意味着对这个CA认证中央的信托。),这是一个信托链的起点,这也是Fiddler伪造的CA证书能够得到客户端和服务器端信托的关键。
    手机或模拟器抓包https请求的话,需要在手机上安装fiddler证书。
  安装步骤这里不复述了。
题目1:需要注意的是,不是任何Https请求包都可以抓到的。
  Android7.0以下是可以的,只要手机里安装对应的CA证书,比如用Charles抓包,手机只需安装Charles提供的证书就行;Android7.0之后,Google推出更加严格的安全机制,应用默认不信托用户证书(手机里本身安装的证书),本身的app可以通过配置办理,但是抓别的app的Https请求就行不通。
  首先看一下安卓7.0以上的体系,抓包如下:
  

  


如果是安装7.0以下的版本,这里拿安卓4.0来演示,如图:
   


  结论是android7.0以下版本,在模拟器下抓包https是没有题目标。固然手机同样的版本也会支持。而高于7.0的安卓体系则抓不了https请求。
  注意这里的https请求是没有携带CA证书到请求中去的。
题目2:如果不能,那些情况下可以抓取,那些情况下抓取不到?
  虽然Android7.0之后常规手段不能抓Https的包,但是可以通过黑科技跳过证书验证流程,比方,通过xposed,安装JustTrustMe模块,Https证书验证直接跳过。这个没有试过,可自行测试。
题目3:如何防止被抓包?

  • Https双向验证,不是客户端的请求,拒接链接(这里服务端拒绝和客户端创建连接)
  • 判定是否是利用WIFI代理(不可靠,可以通过hook跳过)
  • 数据加密传输(很多app都是采用加密传输,要注意密钥的安全题目,防止被反编译泄露密钥)
总结

  以上就是手机或模拟器抓取https请求包的介绍。一些简朴安装或抓取步骤就没在这里逐一解说。 别的对自动化测试,测试开发及性能测试相关的朋侪可以加入交流群,学习与沟通~
写在最后

   如果你觉得文章还不错,请各人 点赞、分享、留言 下,由于这将是我连续输出更多优质文章的最强动力!
  
  看到这篇文章的人有觉得我的明确有误的地方,也接待评论和探究~
  
  你也可以加入下方的的群聊去和同行大神交流切磋
   


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表