文章目录

  • 一、抓包原理
    • 1.1、抓包方式
      • 1.1.1、代理抓包
      • 1.1.2、VPN抓包
    • 1.2、为什么能抓取https的包?
  • 二、抓包工具介绍
    • 2.1、PC端抓包工具
      • 2.1.1、HTTP_Analyzer_V7
      • 2.1.2、fiddler
      • 2.1.3、Charles
    • 2.2、手机端抓包工具
      • 2.2.1、HttpCanary
      • 2.2.2、Charles+postern
  • 三、为什么有的app抓不到包?
    • 3.1、不走代理型
    • 3.2、证书锁定
      • 证书锁定
      • 公钥锁定

在开发的过程中,http协议是主流的交互协议,抓包是必不可少的调试方式,如果你想抓取pc端或者app的http协议包, 提示网络异常或者 死活不走代理,那么你来对了。接下来,我们来探讨下,同样都是http请求,app的包,为什么抓不到。

一、抓包原理

1.1、抓包方式

1.1.1、代理抓包

代理抓包的工具,这种方式思路相对简单,就是将http协议通过代理服务器进行转发,这样流量会经过代理服务器,因此在代理服务器中可以看到经过的流量包。常用的代理抓包工具有fiddlerCharles

代理抓包是相对简单的一种抓包方式,这种方式非常容易绕过,很多app在设置代理服务器之后,会提示断网或者数据不经过代理服务器。这样可以使用VPN的方式进行抓包。

1.1.2、VPN抓包

了解VPN抓包时可以温故一下网络7模型。

代理抓包是应用层的抓包,这样很容易绕过。但是VPN的方式是一个网络层的抓包。理论上来说VPN这种方式可以抓到更多的数据包。

1.2、为什么能抓取https的包?

不知道有没有想过,https不是加密的吗?为啥还能抓取到https的数据呢?事实上,没有绝对的安全。https同样可以绕过。之前写过一个https攻击的思路,有兴趣的小伙伴可以看一看。在抓包工具抓取https数据包时,用到的就是证书伪造攻击思路。

如上图,fiddler抓取https数据包大概的流程图。

一般情况来说,在通过fiddler抓取https协议的时候必须要安装fiddler的证书。安装成功之后可在证书列表中查看到如下信息。

在第6步时,fiddler会下发一个伪造的证书。因此在百度页面加载完成之后,点击百度的小锁子。可以看到证书的颁发者为fiddler。

上面的流程图有点复杂,它可以简化为下图:

  1. fiddler中间人伪造证书。将自己的公钥下发给浏览器。
  2. 浏览器加密提交的数据fiddler就可以查看到明文数据。
  3. fiddler再讲明文信息通过百度的公钥加密。
  4. 这样百度就会误认为是浏览器提交上来的数据。

这里只展示了fiddler抓取https的原理,其实HttpCanary等市面上大部分抓取https都是这一个思路。

二、抓包工具介绍

2.1、PC端抓包工具

2.1.1、HTTP_Analyzer_V7

HTTP_Analyzer_V7是一个可以抓取进程包的工具。比如java进程如果在发送http请求的时候,fiddler是无法抓到的,这个时候可以通过这个工具进行抓取。

2.1.2、fiddler

fiddler是一个通过代理的方式抓取http协议包。这种方式经常用于抓取PC浏览器的数据包。可以认为是谷歌浏览器调试工具的加强版。

在app设置代理之后,也可以抓取app的包,不过现在很多app都设置了默认不走代理,因此这种方式非常容易漏包。这个稍后详细说明。

2.1.3、Charles

Charles 是一个 HTTP 代理/HTTP 监视器/反向代理,它使开发人员能够查看他们的机器和 Internet 之间的所有 HTTP 和 SSL/HTTPS 流量。这包括请求、响应和 HTTP 标头(其中包含 cookie 和缓存信息)。

fiddler和Charles都是PC端的抓包工具,功能类似,但是Charles+postern有特殊的功能,这个下面有说明。

2.2、手机端抓包工具

2.2.1、HttpCanary

HttpCanary 是一个基于VPN的抓包工具,这是一款功能非常强大的手机抓包软件,可以帮你快速抓取你想要的包,一键快速抓包,轻松简单。

2.2.2、Charles+postern

Charles是一个PC的抓包工具,Postern是Android系统里一款非常流行的代理/ 虚拟专用网络管理程序,是一个Android下的全局代理工具,可以说是安卓版surge,它可以添加规则,屏蔽广告。通过这两个工具的结合,可以让Charles以VPN的方式抓包。

三、为什么有的app抓不到包?

3.1、不走代理型

在安卓开发时,发送一个http请求强制不走代理。此时没有安卓环境,我以java环境为例子。

 public static void main (String[] args) throws IOException{//      System.setProperty("http.proxyHost", "localhost");
//      System.setProperty("http.proxyPort", "8888");
//      // set https proxy
//      System.setProperty("https.proxyHost", "localhost");
//      System.setProperty("https.proxyPort", "8888");try {URL url = new URL("http://www.baidu.com/");// 创建代理服务器Proxy p = new Proxy (Proxy.Type.HTTP,new InetSocketAddress ("localhost",8888));HttpURLConnection conn = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);conn.connect ();InputStream in = conn.getInputStream();String result = new BufferedReader(new InputStreamReader(in)).lines().collect(Collectors.joining("\n"));System.out.println(result);} catch (Exception e) {e.printStackTrace();}}

在一个HttpURLConnection对象创建时,可以设置这个请求强制走哪个代理或者强制不走代理。

如果在openConnection方法中设置Proxy.NO_PROXY,那么不管系统如何设置,这段代码都不走代理。

Proxy p = new Proxy (Proxy.Type.HTTP,new InetSocketAddress ("localhost",8888));

设置上面代码,则认为这个请求需要localhost的8888为代理。

如果app只设置了不走代理,那么想抓到这种包很简单,只需要通过一个VPN的抓包工具即可。HttpCanary即可轻松抓取。

3.2、证书锁定

证书锁定(SSL/TLS Pinning)提供了两种锁定方式:

  • Certificate Pinning 证书锁定
  • Public Key Pinning 公钥锁定

证书锁定

  • 具体操作:将APP代码内置仅接受指定域名的证书,而不接受操作系统或者浏览器内置的CA根证书对应的任何证书。通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此移动端APP与服务端(例如API网关)之间的通信可以保证绝对的安全。
  • 缺点:CA签发证书存在有效期问题,在证书续期后需要将证书重新内置到APP内。

公钥锁定

  • 具体做法:公钥锁定是提前证书中的公钥并内置到移动端APP内,通过与服务器对比公钥值来验证连接的合法性。
  • 优点:在制作证书密钥时,公钥在证书续期前后可以保持不变(即密钥对不变),所以可以避免证书有效期问题。

世界上没有绝对的安全,不管是证书锁定和是公钥锁定,只要对对应的锁定方法进行hook即可绕过。

但是要找到对应的方法非常的困难,而且还有一些加固型app、混淆型app、双向验证型app使得更加难以hook。

探讨下app的包为什么抓不到相关推荐

  1. fiddler 抓取手机app请求包

    今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ...

  2. 当你写爬虫抓不到APP请求包的时候该怎么办?【高级篇-混淆导致通用Hook工具失效】...

    提示:因为高级篇以后的APP将无法使用很通用的方式处理,每种类型甚至是每个APP的反抓包处理方式都会有差别,所以这个系列以后会以[高级篇-具体类型]的形式来写. 这篇文章的主要内容是解决在遇到APP没 ...

  3. APP、PC客户端抓包、小程序\公众号

    APP.小程序.公众号抓包 一.APP抓包 (一)BurpSuite抓取手机HTTP数据包 1.配置代理IP与端口 2.测试 (二)BurpSuite抓取手机HTTPS数据包 1.安装证书 2.测试 ...

  4. burp抓不到手机app请求包

    今天来讨论一个APP安全渗透测试及漏洞挖掘中遇到的一个问题,相信也会有很多师傅在挖掘漏洞中遇到以下的几种令人抓头的场景,前不久挖掘一个app又遇到了以前都遇到过此类问题,决定在此总结一下: 等等. 一 ...

  5. Fiddler无法抓手机APP数据包的解决办法

    参考链接 使用fiddler抓取手机上的HTTPS包 Fiddler抓不到手机APP数据包 解决办法(检查步骤) Fiddler 正确配置(图是借来的,因为主要讲步骤) 手机与PC在同一网络中 两台设 ...

  6. burpsuite抓取手机app数据包(通过笔记本开热点方式)

    burpsuite抓取手机app数据包(通过笔记本开热点方式) 1,点击笔记本右下方网络图标,出现移动热点,右键转到设置 进去之后设置热点名称密码,手机连接热点,笔记本查看连接设备的网段,这儿可以看到 ...

  7. 模拟器或手机抓不到某些APP的包,利用Drony配合fiddler实现App定向抓包

    一.准备的软件和环境 1.fiddler或其他抓包软件 2.Drony   官方下载链接 繁体版下载链接 提取码:0527 3.需要抓包的App(这里以it之家为例) 4.root权限的手机或者模拟器 ...

  8. MAC系统利用charles抓取微信小程序和手机APP数据包(http和https数据包)

    本文中使用的是mac上的抓包工具charles进行抓包,手机是华为荣耀8 下载并安装Charles for Mac Charles for Mac(HTTP信息抓包工具) V4.2.5 苹果电脑版 要 ...

  9. 支付宝二维码可以抓包更改金额_用fiddler对手机上的app程序进行https抓包 - 365学习...

    用fiddler对手机上的app程序进行https抓包,网上有很多的资料,这里写一下来进行备用. 前提: 1.必须确保安装fiddler的电脑和手机在同一个wifi环境下 备注:如果电脑用的是台式机, ...

  10. 移动安全-APP证书校验与抓包

    文章目录 APP单向认证 SSLPinning 突破单向认证 VPN流量抓取 网络请求框架 Packet Capture APP单向认证 如果你是干web安全的,当你在测试目前大多数的手机APP应用程 ...

最新文章

  1. 微信生态增长:裂变与分销讲解
  2. 网络抖动多少ms算正常_男性身高175,体重多少算正常?对照公式算一下,你达标了吗?...
  3. SAP WM 明明为OBD创建成功了GroupNumber,却被提示该Group Number不存在?
  4. python判断字符串
  5. 连接两个linux系统软件,【技术共享】synergy-两台电脑共享一套鼠标键盘-Linuxwindows...
  6. LRU和LFU的区别
  7. [Leedcode][JAVA][第394题][字符串解码][栈][类型转换]
  8. Cachegrind:缓存和分支预测分析器
  9. dhtmlxTree 10分钟做一个树
  10. java基础:13.1 集合框架 - ArrayList
  11. 计算机键盘prtscr,键盘上的SCR是什么意思(电脑截图的快捷方式都有哪些)
  12. php增删查改数据库,PHP数据库的增删改查
  13. 微信小程序ios地图标记点无法点击第二次 markertap
  14. python2和pytho3切换_电脑上同时安装Python2和Pytho
  15. python正态分布中的normal函数
  16. 如何修改.json文件的内容?
  17. linux amd显卡使用情况查看
  18. 客流统计需要解决哪些问题?
  19. 谷歌地球中国服务正式关闭,国产天地图完全替代谷歌地球?
  20. 2小时上车AI作画_NovelAI (学会能做游戏mod)

热门文章

  1. ES5, ES2015 和 TypeScript 的区别
  2. 使用SVM模型对京东评价进行情感分析---【大白话版】
  3. SpringBoot 使用Prometheus采集自定义指标数据
  4. altium Designer使用方法大总结
  5. MongoDB集群节点RECOVERING故障恢复
  6. Unreal Engine 4 控制台命令参数合集
  7. 苹果手机绕过密码和指纹自动支付,细思极恐!
  8. RxJava2 背压
  9. win7无法连接虚拟磁盘服务器,win7系统电脑打开磁盘管理出现“无法连接虚拟磁盘服务”的解决方法...
  10. 如何在云服务器上部署程序