chatGPT与逆向的相遇,快速解决sslpinning抓包问题
项目场景:
这是一款金融类型的安卓app,有着root检测,与sslpinning校验,并且带有壳。下载的unpinning脚本根本行不通,接下来咱们看看该怎么去分析。众所知周,要分析一款app抓包只是第一步。偏偏是第一步就难倒不少人,本文只做知识要点记录,均会脱敏处理。大佬们轻喷
问题描述
一般来说我们拿到apk都迫不及待的装到手机上,立马开始抓包,结果就会和下图一样
Charles这边是这样显示的
初步判断是存在sslpinning校验
sslpinning校验定位:
把apk拖动到apk,发现加壳了,随后使用frida-dump进行脱壳,拿到dex,使用jadx-gui进行反编译。
经过r0capture 工具可以定位出网络包收发位置,以下是在总众多调用栈寻找到正确的调用栈:
接下来直接偷懒,不得不说gpt的面世,给各行各业都带来了便利,对于安卓逆向而言,ai简直就是一个学习导师不厌其烦的解答,随后我们将以上调用栈发送给gpt。问问它,哪里才是最有可能是sslpinning校验的地方,大家最好是以开发人员的角度去提问。
最终我们在第二行找到了和证书校验有关的地方,也就是
okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:336)
在jadx-gui工具搜索上面的类名,在类中找到如下代码:
hostnameVerifier()此函数将我们需要使用frida hook的函数方法,在这个对象里还有verify方法,看verify函数形参是传递了2个参数,分别是一个url网址和session,我们先hook 一下verify函数得到如下信息:参数1也确实是一个url网址,并且和我们抓包工具的域名一致,接下来我们看看hostnameVerifier函数是什么样的
它会返回一个HostnameVerifier类型的数据,继续hook hostnameVerifier() 函数,打印返回值
明显打印不出来,使用JSON.stringify()将这个object对象转字符串得到以下信息
从图中得知实例的类型和类的实现路径,我们把实现的类路径去jadx-gui搜索一下,得到如下:
以上图中的verify()是一个native修饰过的函数,具体实现流程在so,由于经过测试只要返回true,就能正常抓包了。就不再深入分析。
附上frida的完整hook抓包代码:
Java.perform(function(){console.log("===start===");Java.enumerateClassLoaders({onMatch: function (classLoader) {try {if (classLoader.findClass("com.xxxx.http.RetrofitClient$createRsaOkHttpClient$1")) {console.log("===success===");Java.classFactory.loader = classLoader; var RetrofitClient$createRsaOkHttpClient$1 = Java.use("com.xxxx.http.RetrofitClient$createRsaOkHttpClient$1");RetrofitClient$createRsaOkHttpClient$1["verify"].implementation = function (str, sSLSession) {console.log('verify is called' + ', ' + 'str: ' + str + ', ' + 'sSLSession: ' + sSLSession);// var ret = this.verify(str, sSLSession);// console.log(ret);return true;};var RetrofitClient$createOkHttpClient$1 = Java.use("com.xxxx.http.RetrofitClient$createOkHttpClient$1");RetrofitClient$createOkHttpClient$1["verify"].implementation = function (str, sSLSession) {console.log('verify is called' + ', ' + 'str: ' + str + ', ' + 'sSLSession: ' + sSLSession);return true;};}} catch (e) {}},onComplete: function () {}});try {} catch (e) {}});
上述的frida代码主要功能是枚举所有的classloader查找指定类名进而实现hook,在dex没完全加载完成是找不到类的。我们需要遍历所有classloader。
chatGPT与逆向的相遇,快速解决sslpinning抓包问题相关推荐
- 文章向大家介绍安卓逆向,解决app抓包抓不到的问题,主要包括安卓逆向,解决app抓包抓不到的问题使用实例、应用技巧
本文章向大家介绍安卓逆向,解决app抓包抓不到的问题,主要包括安卓逆向,解决app抓包抓不到的问题使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下. 有时候 ...
- 精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇
本篇内容是「肉丝姐教你安卓逆向之 frida 注入 Okhttp 抓包系列的第三篇,建议配合前两篇一起阅读,效果更佳. 精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇 ...
- 解决APP抓包问题【网络安全】
1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...
- 如何解决APP抓包问题【网络安全】
1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...
- 解决APP抓包问题「网络安全」
1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...
- 精品连载丨安卓 App 逆向课程之四 frida 注入 Okhttp 抓包中篇
本篇文章接上篇. 2. Okhttp3 自吐抓包 我们将一次请求的request大致结构罗列如下. •请求方法 GET.POST.PUT.DELETE.HEAD 等•URL•使用的协议版本 HTTP/ ...
- Fiddle使用||解决突然抓包失败问题
背景 fiddle突然抓不了包了,无论是尝试抓浏览器还是移动端,都失败.错误提示如下 20:17:41:8842 !SecureClientPipeDirect failed: System.IO.I ...
- miui12.5安装证书/解决无法抓包的问题
需求 开发需要,需要查看后台下发的数据,手头的小米9pro测试机,一直装不上charles证书,网上查了一圈都是教程太老旧了,最后根据查到的资料和自己的摸索,终于解决了.本文做一下记录. 小米9pro ...
- 快速掌握Charles抓包工具 [MP4] (115M)
『课程目录』 1课程介绍 2.1如何安装charles 2.2Charles界面介绍 3.1如何抓取天气预报接口讲解 3.2如何抓取https协议请求 3.3配置通用的https抓包规则 4.1断点的 ...
最新文章
- Keepalived+LVS+Nginx负载均衡之高可用
- windows 下xampp集成环境安装mongodb扩展
- 清除windows的EFS加密
- [硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
- 码栈开发手册(四)---编码方式开发(其他功能函数)
- 如何撰写《软件项目方案文档》
- 高德地图marker事件监听-高德地图marker绑定事件就执行了[解决立即执行]
- 【BZOJ2152】聪聪可可 树分治
- metawrap quant_bins 的bin_abundance_table.tab结果理解
- 清橙 A1210. 光棱坦克
- 【转载】bat批处理教程 作者:hipi 日期:2006-11-05
- Git ssh 下载设置
- WebKit(WKUIDelegate)
- ORACLE存储过程使用数组
- 【小程序云开发】通过时间戳差判断今天,昨天,前天并渲染到页面上
- 基于DNS特征的僵尸网络攻击检测 论文翻译
- MP3文件剪切丢失怎么恢复
- zabbix 监控Linux TCP/UDP端口流量
- linux网络时延问题分析,网络时延的4种方式
- 图片自动轮播+上拉加载下拉刷新+侧滑菜单+小圆点