郑大钱呀

V1

2023/03/18阅读:43主题:凝夜紫

Android手机如何抓https请求?

需求描述

由于需要对APP端进行性能接口测试,但是由于接口众多,且接口文档信息不完善,所以需要通过抓包的方式来抓取APP的接口请求,以使用压测工具进行性能测试。

问题产生

和往常一样我们使用Fiddler进行对APP的抓包来来获取接口信息,但是当我们配置Fiddler、手机设置好代理,抓包时,发现如下问题: 接口的前面带锁,Host为Tunnel to,通过询问前端开发,发现是由于使用了防攻击技术,即证书锁定SSL Pinning,目的就是为了反抓包,防止中间人攻击,中间人攻击的过程就是伪造了一个假的服务端证书给了客户端,让客户端误以为真,但是客户端也拥有一份服务端的证书,进行比较之后,判断出中间人的证书是伪造的,就会断开连接,不会继续请求即证书认证,所以我们就无法对其进行抓包。

解决方法

内置证书或者公钥的时候,常常会有对比验证的函数,直接控制这个函数的返回结果让验证通过,于是就有了一个突破SLL-Pinning的经典操作:采用Xposed+justTrustme模块。 这个方案使用的是JustTrustMe这个Xposed模块,它所做的事情就是将各种已知的的HTTP请求库中用于校验证书的API都进行Hook,HOOK就是在消息到达目标之前将其捕获,从而得到对消息的控制权,进而可以对该消息进行处理或修改,加入我们所需的功能,使无论是否是可信证书的情况,校验结果返回都为正常状态,从而实现绕过证书检查的效果。

justTrustme是Xposed框架中的模块,这里简单的说一下xposed框架,Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作

JustTrustMe 的作用就是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查的。

准备工作

由于justTrustme是要依赖Xposed框架的,而Xposed框架又需要安卓手机的高权限,即root权限,随着Android对系统的不断的更新,Android系统越来越难Root,而且对于手机会产生安全风险,这个时候可以使用安卓虚拟空间的相关软件,你可以理解成安卓手机里面的虚拟机,类似的软件有:VirtualXposed、sandVxposed等,这些虚拟空间的软件可以实现免Root、免解锁BL、免刷机从而使用Xposed框架,综上所述我们需要准备的软件如下:

  1. 虚拟空间软件:VirtualXposed、sandVxposed等
  2. justTrustme 软件
  3. Fiddler 软件

操作流程

Fiddler 配置步骤

  1. 打开Fiddler 打开Fiddler
  2. 打开Fiddler设置,勾选抓取https请求复选框,并安装CA证书
  3. 勾选允许远程设备连接复选框

安卓手机操作步骤

  1. 现在本机安装justTrustme 和sandVxposed软件
  2. 打开sandVxposed软件,点击添加按钮
  3. 点击克隆App,将justTrustme和要抓包的APP,克隆到虚拟空间
  4. 点开sandVxposed软件的设置,检查一下xposed、justTrustme是否开启

安卓手机配置与抓包

  1. 安卓手机与电脑在同一个WiFi下,并配置代理
  2. 在安卓手机上访问电脑IP:8888地址,安装CA证书
  3. 完成后,在虚拟空间(sandVxposed)中打开要抓包的APP,就可以抓获APP的https的请求了

遇到的问题

上面的操作步骤,在实施的过程中也会遇到不少的问题,我这里列举了一些所遇到的问题:

  1. justTrustme和sandVxposed版本问题:justTrustme和Xposed框架的版本问题,两者的版本主要要匹配,不匹配的话两者不兼容
  2. sandVxposed与APP的版本问题:在遇到这个问题的时候,提示的是不支持32位的APP应用程序,然后我去查询了一下APK的分包,这里我们可以了解一下:安卓应用分为32位和64位,这是由于安卓设备的核心是cpu(中央处理器),cpu常用架构有ARM架构和x86架构,cpu又分为32位和64位,因此不同架构也分为32位和64位,大部分手机使用的是ARM架构,ARM架构分为32位架构、兼容32位的64位架构,因此apk包分为32位安装包、32位64位兼容包和64位安装包,所以我们后来更换了支持32位的sandVxposed版本
  3. Fiddler 无法抓取APP的包:我们所有的配置都正确,但是点击APP时,Fiddler并没有抓取到APP的流量,这个大概率是因为防火墙的原因,我们可以在电脑的安全设置中进行如下的设置,设置完成后就可以了。

参考文章

1. CSDN-璐璐丫头

结尾

为了方便大家学习交流,我们建立了一个交流群,以技术(以软件测试为主)和业务(以金融业务为主)学习交流为主,如有需要加入,可以扫描文章末尾的二维码入群。

本期的内容就到这里了,如有不足之处还请大家多多指正,欢迎大家留言关注转发收藏,谢谢。

分类:

后端

标签:

软件测试

作者介绍

郑大钱呀
V1

微信搜索【郑大钱呀】公众号