某借款应用他的抓包策略防护

一、前言
介绍一借款App,这个应用新加抓包策略,所以抓不到数据包了,分析的确他的最新版已经做了一些防护比如签名校验,Xposed防护等导致JustTrustMe插件以及之前介绍的升级版插件都用不了了,不过再怎么变他都是用的okhttp网络框架,设置ssl信息也就是那几个接口,但是因为现在Xposed插件没法用了,所以我们只能手动的去分析代码了。今天这篇文章就直接分析代码修改代码来直接搞定抓包策略。

二、逆向分析
首先因为我们这一次要改代码所有,我们先用apktool工具反编译,然后在回编译签名安装运行看效果:
在这里插入图片描述

安装运行之后提示这样的错误信息,这个明显是签名校验问题,我们可以直接用Jadx打开代码查看:
在这里插入图片描述

这里展示对话框,然后继续追踪代码查看:
在这里插入图片描述

这里看到是获取签名信息然后进行比对的:
在这里插入图片描述

然后看到的确用的是系统Api获取签名信息,其实到这里我们可以直接修改这个方法返回值是true即可,但是这里就不做修改了,因为为了验证我的kstools工具的威力,直接用这个工具一键搞定,当然肯定是可以的,不然我也不会在这里说了,所以大家可以直接用kstools工具即可搞定这个签名校验。

弄完签名校验之后直接签名打包安装就好了,这里可以看到他没有对二次打包做太多的校验逻辑,这个也算是安全的遗漏点,因为有了二次打包成功,我们就可以随意的修改代码了,首先我们然后抓包看看信息:

在这里插入图片描述

还是提示错误网络不安全,全局搜索错误信息到这里了,其实我们可以利用Xposed进行hook操作打印这个异常信息的,但是可惜他做了防护Xposed操作,所以搞不了但是没关系,这里在告诉大家一个小技巧:一般okhttp框架时候的时候如果有网络请求错误一般都会打印日志,就是会调用e.printStackTrace()打印信息:

在这里插入图片描述

我们通过日志发现的确有错误信息报道,然后把错误异常信息去网上搜索也是说的证书错误问题,但是这里有个问题就是我们没法查看在那个地方错误,以至于我们怎么去修改代码呢?这里又有一个小技巧了:在使用这个框架设置ssl的时候都知道就是三个Api的使用方法:

sslSocketFactory(SSLSocketFactory factory)
hostnameVerifier(HostnameVerifier verifiter)
getSocketFactory()
所以其实很简单,我们只要全局搜索这两个方法即可,但是这里可能不能这么做,因为我们之前分析另外一个应用的时候发现现在很多应用为了防止JustTrustMe插件,他直接把okhttp的一些方法全部混淆了,所以我们直接搜索这两个方法名可能不全,所以我们可以搜索两个参数类型,这两个是java系统库中的,所以不可能被混淆的,但是我们其实还有一种更加高效的方式,直接搜索这两个类的构造地方,因为既然要用那就要初始化:

在这里插入图片描述

这样就全局搜索到了初始化的地方,可以排除一下比如okhttp内部的一些方法,还有通过包名可以判断肯定没有关系的方法,最后就剩下这两个比较可疑了方法了:

在这里插入图片描述

看到这个类中设置ssl的方法,其实我们只要把这些方法全部设置一遍:

在这里插入图片描述

我们找到第一个方法的类中,直接用#注释了设置ssl的两个方法,然后再看第二个地方:
在这里插入图片描述

然后看到这个类有个好玩的地方,他本身做了一个兜底策略就是信任全部证书,但是有个if条件判断,这个就简单了,我们直接把判断条件改一下即可,把之前的a != null 改成a == null即可,怎么改其实很简单:
在这里插入图片描述

改了这个之后我们直接回编译然后安装即可:
在这里插入图片描述

抓包看到接口已经可以了:
在这里插入图片描述
在这里插入图片描述

但是当我们点击进入二级页面发现提示打不开错误信息,我们查看当前页面信息:

在这里插入图片描述

然后查看这个类定义:
在这里插入图片描述

继续查看代码:
在这里插入图片描述

我们看到了这个是WebView中的ssl校验逻辑,这个会判断如果正确的证书校验成功调用proceed方法,否则就调用cancel方法,这个校验方法还是在HttpsUtils里面:

在这里插入图片描述

这个可以直接改成返回值true即可,当然可以直接改,但是这里介绍一个AndroidStudio的一个好用的插件java2smali:
在这里插入图片描述

直接在Plugins->java2Smali,然后直接安装即可,安装之后我们可以编写好java代码:
在这里插入图片描述

然后点击菜单中的Build->Compile to smali:

在这里插入图片描述

这样编译成smali代码了:
在这里插入图片描述

我们只关心.prologue后面的代码,其实看代码也很简单,直接返回true:

在这里插入图片描述

这样就把原来的方法直接返回true了,修改好之后我们在用jadx打开看看:
在这里插入图片描述

这样就改成功了,这时候在安装就可以打开所有页面了,而且可以正常使用了,到这里其实我们已经通过直接改代码逻辑搞定了这个应用的防护抓包策略,但是问题依然还有就是这个应用是如何进行Xposed防护,其实他是用了第三方的安全框架,这个可能需要后续深入分析了。

三、知识点概要总结
第一、对于一些应用做了Xposed防护我们可以尝试修改代码,修改代码之后一般都会有签名防护的,可以用kstools工具一键先搞定签名防护操作。

第二、对于后续所有的抓包失败的应用,因为有了Xposed防护,所以原有的JustTrustMe插件没法使用了,所以需要分析代码,这时候查看入口很简单,直接全局搜索

sslSocketFactory(SSLSocketFactory factory)
hostnameVerifier(HostnameVerifier verifiter)
getSocketFactory()
等方法和类型信息。因为不管怎么变最终都是需要调用这三个方法,先需要初始化类然后在设置到okhttp中,所以一些应用没法在这些操作中做防护,就直接防xposed操作了。

第三、有时候我们手动改smali代码可能比较难,可以借助AndroidStudio中的插件编写好对应的Java代码然后变成smali代码即可

严重说明

本文的目的只有一个就是学习逆向分析技巧,如果有人利用本文技术进行非法操作带来的后果都是操作者自己承担,和本文以及本文作者没有任何关系,

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值