
郑大钱呀
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框架,综上所述我们需要准备的软件如下:
-
虚拟空间软件:VirtualXposed、sandVxposed等 -
justTrustme 软件 -
Fiddler 软件
操作流程
Fiddler 配置步骤
-
打开Fiddler -
打开Fiddler设置,勾选抓取https请求复选框,并安装CA证书 -
勾选允许远程设备连接复选框
安卓手机操作步骤
-
现在本机安装justTrustme 和sandVxposed软件 -
打开sandVxposed软件,点击 添加
按钮 -
点击克隆App,将justTrustme和要抓包的APP,克隆到虚拟空间 -
点开sandVxposed软件的设置,检查一下xposed、justTrustme是否开启
安卓手机配置与抓包
-
安卓手机与电脑在同一个WiFi下,并配置代理 -
在安卓手机上访问 电脑IP:8888
地址,安装CA证书 -
完成后,在虚拟空间(sandVxposed)中打开要抓包的APP,就可以抓获APP的https的请求了
遇到的问题
上面的操作步骤,在实施的过程中也会遇到不少的问题,我这里列举了一些所遇到的问题:
-
「justTrustme和sandVxposed版本问题」:justTrustme和Xposed框架的版本问题,两者的版本主要要匹配,不匹配的话两者不兼容 -
「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版本
-
「Fiddler 无法抓取APP的包」:我们所有的配置都正确,但是点击APP时,Fiddler并没有抓取到APP的流量,这个大概率是因为防火墙的原因,我们可以在电脑的安全设置中进行如下的设置,设置完成后就可以了。
参考文章
结尾
为了方便大家学习交流,我们建立了一个交流群,以技术(以软件测试为主)和业务(以金融业务为主)学习交流为主,如有需要加入,可以扫描文章末尾的二维码入群。

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

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