APP测试之安全机制问题及Bypass

前言

​ 在一次APP漏洞挖掘的过程中又遇到了之前都会遇到的一个问题今天来讨论一下APP安全渗透测试及漏洞挖掘中遇到的这个问题并进行一些总结,其中有一些方法之前也有许多师傅分享过,这里再次遇到正好想归结到一起,若对移动APP安全机制绕过有兴趣的师傅也能够一起交流或加以补充。

​ 相信也会有很多师傅在挖掘漏洞中遇到以下的几种令人抓头的场景:

等等。

一般情况下在对APP测试时burp抓包需要配置代理和下载安装burp的客户端证书才可以正常的进行下一步测试,但是在HTTPS信任机制和APK自有的安全机制下测试时或许就不是那么容易了,经常会出现网络错误、抓不到包、丢包,无法正常发送请求等情况。主要可以归结为:IOS/安卓系统的固有的信任机制问题,另一方面是APK的SSL证书的绑定、SSL证书双向校验和代理检测问题。

系统固有的信任机制

IOS设备上测试

虽然安装了burp证书但是你会发现有https的数据包仍然无法抓到,仔细深究其实还是信任机制的问题,默认情况下ios系统不会对第三方安装的证书开启完全信任,由此就导致了虽然安装了证书但还是无法抓到https的包。

默认情况下IOS设备的对安装的根证书的完全信任是处于关闭状态,所以要解决以上问题,还需要将该设置为完全信任。

设置好后就可以正常抓包了。

如果前面都没问题排除了系统固有的信任机制问题还是无法正常抓到包这种情况下一般就属于第二种可能了----APK自有的安全机制

APK的安全机制

https协议验证服务器身份的方式通常有三种,一是根据浏览器或者说操作系统(Android)自带的证书链;二是使用自签名证书;三是自签名证书加上SSL Pinning特性,所谓SSL pinning即证书绑定。

另外一种是双向认证,客户端与服务端分别存放不同的证书,客户端在通讯时会校验服务端的证书的一致性,反之,服务端在建立通讯前也要验证客户端证书的一致性,验证皆无问题后才建立通讯。

SSL pinning

​ 一般情况下,关于SSL Pinning的反制,主要有两种办法,第一种是反编译APP文件,篡改内部证书信息。涉及到逆向,调试,重签名等技术,如果客户端存在壳保护、混淆、完整性自校验等防护则无法进行替换。

​ 第二种是利用了Hook技术。Hook就是一个函数钩子,把程序原本要调用的函数改成另一个函数,就是对原函数的一个挂钩(hook) 。比如,客户端使用方法hostnameVerifier.verify、checkServerTrusted和checkClientTrusted对证书进行了校验,证书不对则抛出异常,停止加载页面并结束通讯。只需要Hook 证书校验失败的处理方法,让其继续加载页面并保持通讯即可。具体的SSL Pinning的反制,主要以Xposed框架和Frida框架进行Hook关键函数,从而进行数据包的截取。

针对以上情况可以总结了以下几种的具体绕过方式

1)反编译apk,得到源码编辑应用程序的Manifest文件,修改 AndroidManifest.xml,重新打包

apk反编译及打包

点击收藏 | 2 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖