项目场景:

这是一款金融类型的安卓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抓包问题相关推荐

  1. 文章向大家介绍安卓逆向,解决app抓包抓不到的问题,主要包括安卓逆向,解决app抓包抓不到的问题使用实例、应用技巧

    本文章向大家介绍安卓逆向,解决app抓包抓不到的问题,主要包括安卓逆向,解决app抓包抓不到的问题使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下. 有时候 ...

  2. 精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇

    本篇内容是「肉丝姐教你安卓逆向之 frida 注入 Okhttp 抓包系列的第三篇,建议配合前两篇一起阅读,效果更佳. 精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇 ...

  3. 解决APP抓包问题【网络安全】

    1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...

  4. 如何解决APP抓包问题【网络安全】

    1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...

  5. 解决APP抓包问题「网络安全」

    1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手,这个时候如果攻击者从APP进行突破,往往会有很多惊喜.但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测.ro ...

  6. 精品连载丨安卓 App 逆向课程之四 frida 注入 Okhttp 抓包中篇

    本篇文章接上篇. 2. Okhttp3 自吐抓包 我们将一次请求的request大致结构罗列如下. •请求方法 GET.POST.PUT.DELETE.HEAD 等•URL•使用的协议版本 HTTP/ ...

  7. Fiddle使用||解决突然抓包失败问题

    背景 fiddle突然抓不了包了,无论是尝试抓浏览器还是移动端,都失败.错误提示如下 20:17:41:8842 !SecureClientPipeDirect failed: System.IO.I ...

  8. miui12.5安装证书/解决无法抓包的问题

    需求 开发需要,需要查看后台下发的数据,手头的小米9pro测试机,一直装不上charles证书,网上查了一圈都是教程太老旧了,最后根据查到的资料和自己的摸索,终于解决了.本文做一下记录. 小米9pro ...

  9. 快速掌握Charles抓包工具 [MP4] (115M)

    『课程目录』 1课程介绍 2.1如何安装charles 2.2Charles界面介绍 3.1如何抓取天气预报接口讲解 3.2如何抓取https协议请求 3.3配置通用的https抓包规则 4.1断点的 ...

最新文章

  1. Keepalived+LVS+Nginx负载均衡之高可用
  2. windows 下xampp集成环境安装mongodb扩展
  3. 清除windows的EFS加密
  4. [硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
  5. 码栈开发手册(四)---编码方式开发(其他功能函数)
  6. 如何撰写《软件项目方案文档》
  7. 高德地图marker事件监听-高德地图marker绑定事件就执行了[解决立即执行]
  8. 【BZOJ2152】聪聪可可 树分治
  9. metawrap quant_bins 的bin_abundance_table.tab结果理解
  10. 清橙 A1210. 光棱坦克
  11. 【转载】bat批处理教程 作者:hipi 日期:2006-11-05
  12. Git ssh 下载设置
  13. WebKit(WKUIDelegate)
  14. ORACLE存储过程使用数组
  15. 【小程序云开发】通过时间戳差判断今天,昨天,前天并渲染到页面上
  16. 基于DNS特征的僵尸网络攻击检测 论文翻译
  17. MP3文件剪切丢失怎么恢复
  18. zabbix 监控Linux TCP/UDP端口流量
  19. linux网络时延问题分析,网络时延的4种方式
  20. 图片自动轮播+上拉加载下拉刷新+侧滑菜单+小圆点

热门文章

  1. Windows 系统文件资源管理器的命令行参数(如何降权打开程序,如何选择文件)
  2. Linux操作系统的管理(操作系统与服务器)二
  3. ESP8266学习——Flash
  4. opencv 获取最小外接矩形
  5. 超火 3D 照片墙,你学废了吗?
  6. idm可以下载网页上哪些东西
  7. 扔鸡蛋问题(四种解法)
  8. linux保存mp4格式的文件,Linux中利用ffmpeg转换手机支持的mp4格式视频文件
  9. Linux网络编程 入门
  10. 一些罕见的c++关键字