app逆向抓包技巧:SSL Pinning检测绕过

本篇博客旨在记录学习过程,不可用于商用等其它途径

场景

charles抓包下,某斑马app在注册时发现点击登录毫无反应,看抓包结果提示SSL handshake with client failed,确定是触发了SSL/TLS Pinning(证书锁定)

关闭charles抓包后,再次点击登录可以看到有请求成功

检测原理

SSL/TLS Pinning(证书锁定),也叫作单向认证,其将服务器提供的SSL/TLS证书内置到移动端开发的App客户端中,当客户端发起请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。

Android7.0以上的系统版本,应用不再信任用户自己安装的用户证书,一般应用只信任系统预装证书或者是自身的内置证书,导致SSL/TLS Pinning(证书锁定),用charles或者fiddler无法抓取数据包。这种情况下,App会返回网络出错,且无法获取数据的信息,也就出现了上面出现的情况了。

不过在需要查看发包情况时,就需要解决SSL/TLS Pinning了

绕过方式

降低系统版本

使用Android7.0以下的系统版本

将服务器证书添加到系统证书

这个需要能拿到服务器证书(比较麻烦),且要添加进系统级证书中(参考:Windows与Android实现Charles证书设置)。

采用Xposed框架和JustTrustMe模块或者sslunpining模块

这两个模块可以通过Xposed仓库下载或者GITHUB下载导入

GITHUB:JustTrustMesslunpining

sslunpining模块为例,开启之后需要重新打开app就能绕过检测了。

Frida Objection绕过

Objection 是基于 Frida 框架开发的一个工具,它提供了一组便捷的功能和脚本,以简化在移动应用程序中使用 Frida 进行动态分析和漏洞利用的过程。

安装:pip install objection

由于Objection依赖Frida,在运行Objection前需要先运行Frida

启动命令:objection -g 包名 explore

题外话:如果不知道报名,可以打印当前activity的信息查看包名adb shell dumpsys activity | grep packageName

使用Objection控制app后,输入android sslpinning disable后就可以绕过了。

题外场景

有些app进入后也会提示网络失败或者内容更新失败,比如某咨询app进去后提示以下信息

这个时候不能直接定位为被SSL/TLS Pinning检测,需要结合抓包情况分析。根据抓包结果可以确定实际能法宝成功,只是响应结果failed了,实际原因是没有登录服务器没有返回数据,登录后就可以成功拿到数据了。

而像某新闻app进去页面便是以下情况

实际上也不是被SSL/TLS Pinning检测了,根据抓包结果分析应该是进入页面前的请求返回的数据拦截了后续的发包请求,这种用上面的绕过方式是解决不了的,需要看它返回的内容根据情况做反检测处理。

相关推荐
染指11102 个月前
3.安卓逆向-java语言控制流和数据类型
java·开发语言·安卓逆向·app逆向·保姆级攻略
九月镇灵将3 个月前
app逆向抓包技巧:关于混淆后app无法绕过sslpinning的解决方案
frida·app逆向·okhttp3·app混淆
轩辕丿8 个月前
懂球帝app逆向之旅
爬虫·python·学习·ssl证书·app逆向
吴秋霖1 年前
某软件商店app抓包分析与sign加密算法实现
算法·移动安全·app逆向
轩辕丿1 年前
app逆向入门之车智赢
爬虫·python·app逆向