【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章
安卓APP抓包技能是安全、爬虫、测试等人员必备的一项技术!目前市面上的安卓应用防护手段越来越完善,抓包这一步往往阻止了很多人前进的步伐
如上所示!在接下来的内容中,将围绕上图去介绍多种APP防护的绕过技术与一系列实用工具和方法
在APP抓包中,代理检测是一种安全机制。检测应用程序是否正在通过代理服务器进行网络请求,防止恶意用户或者非法用户通过抓包工具获取应用程序的数据
1、首先安装好postern全局代理工具后打开点击配置代理:
2、修改好配置信息后保存:
3、修改好配置规则保存:
4、最后使用BurpSuite或Charles配合抓取APP应用数据包,可以参考我之前的这篇文章:使用Python爬取快手视频与评论(App与Web端分析)
1、打开drony,右滑,滑到setting界面:
2、点击下面的wifi:
3、选择你抓包工具所在的网络wifi,这里我由于是在模拟器里,那肯定就只有这一个:
4、按次序如下配置,这里的ip和端口即是抓包工具所在pc端的电脑的局域网的ip,和抓包工具的端口,我这里是用的fiddler,端口为8889:
5、接着往下滑,filter default value 选allow all,然后点击Rules:
6、配置个过滤规则,右边按那个加号新建一个:
7、Action选Local proxy chain,然后Application选择目标app,前提你得在虚拟机里安装好目标app,且是能正常打开并请求数据的!最后记得保存一下:
8、以上就配置完了,然后一路返回,返回到settings里,然后左滑到LOG,点击下面的OFF,由OFF变为ON。就可以开始抓包了
1、使用ProxyDroid,操作和Postern相似:
1、打开HttpCanary,点击设置选择要抓包的应用:
2、找到你要抓包的应用,先运行要抓包的软件,再运行HttpCanary,点击右下角开始抓包:
3、通过静态注入的方式改包:
在APP抓包中,客户端证书绑定的目的以确保应用程序与服务器之间的通信是加密和双向验证的。这种机制使用了证书技术来验证应用程序和服务器之间的身份,并确保数据传输的安全性
1、在Xposed/EdXposed模块中找到JustTrustMe并勾选,然后重启生效:
2、点击JustTrustMe设置作用域:
3、在作用域中选择要抓包应用:
1、在Xposed/EdXposed模块中找到JustTrustMePlus并勾选,然后重启生效:
2、 点击JustTrustMePlus选择打开:
3、选择要hook的应用:
1、在Xposed/EdXposed模块中找到JustTrustMe++并勾选,然后重启生效:
2、点击JustTrustMe++设置作用域:
3、在作用域中选择要抓包应用:
1、使用开源脚本ssl-sslping脚本:
2、测试设备运行frida_server:
3、使用ssl-sslping脚本,hook测试应用:
另外也可自行分析apk。编写绕过检测的脚本!
1、测试设备运行frida_server:
2、启动objection:
3、使用命令进行注入应用:
双向证书绑定(也称为客户端证书绑定)是一种安全机制,它确保了在应用程序和服务器之间建立的连接是安全和可信的。通过双向证书绑定,不仅服务器验证客户端的身份,而且客户端也验证服务器的身份。这种机制在防止恶意用户、中间人攻击或数据篡改
1、客户端绕过的话通过上述方法步骤来绕过证书绑定
1、解压apk从安装包中找.p12、.cer、.crt、.pfx、PKCS12、keyStore等后缀文件:
2、将应用拖进jadx中进行反编译,然后全局搜索.p12、.cer、.crt、.pfx、PKCS12、keyStore等等关键字:
3、转到代码位置查看详情(证书安装密码、其他密码等等信息),可以看到,pfx证书本地测试安装是需要有密码的:
4、有了key剩下的就好办了,将crt证书和key文件合并成“.p12”证书文件,合并的时候记得对证书进行加密(也就是加个证 书密码),不加密码burpsuite是无法导入的。
合并证书命令:openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12:
5、最后将证书导入到burpsuite:
6、然后就可以成功导入证书,并且启用:
APP中的Root检测是为了确定用户的设备是否已经被Root或越狱(针对iOS设备)。当应用检测到设备已经被Root或越狱,它可能会采取相应的措施,例如拒绝运行、限制功能或者提高安全性策略,以防止应用数据被篡改或窃取
1、使用magisk绕root检测,打开magisk,再开启magisk hide,然后点击设置:
2、开启hide root:
3、然后选择要屏蔽root检测的应用:
1、逆向分析APP,找到root检测函数方法再绕过,对客户端进行反编译,分析查找root检测函数方法:
2、对root检测函数方法进行hook,修改返回值为false:
Java.perform(function () {
var PostLogin = Java.use("com.android.insecurebank2.PostLogin");
PostLogin.doesSUexist.implementation = function(){
console.log("\n Inside the ShowRootStatus function");
return false
};
console.log("\n not detection bypassed");
});
3、使用frida注入脚本:
1、测试设备运行Frida:
2、启动Objection:
3、使用命令进行屏蔽root检测:
1、上述所有办法无法绕过时,可以使用非root环境进行测试,hook的问题可以使用其它工具解决
1、对于简单的客户端防注入,可以使用frida -U -f appname -–no-pause进行提前注入绕过:
1、使用strong Frida进行注入,该版本frida已修改大部分Frida特征值,可以绕过部分防Frida注入检测:StrongFrida
2、然后上传到安卓系统并运行:
3、然后对目标进行注入:
1、安装magsik+Riru +riru-gadget模块,进行Frida gadget注入。模块安装地址:Riru-FridaGadget
2、使用方法:
1、安装我改写的virtualapp,可以在非root环境中自动注入frida gadget,可以绕过部分加固后的应用进行注入。使用时先添加需要注入应用:
2、然后运行应用,再frida -U gadget 注入目标应用:
1、使用flutter框架的应用无法使用系统的代理功能进行流量代理,需要使用ProxyDroid进行全局流量代理:
2、使用Frida绕过flutter证书校验,针对国投瑞银的Frida脚本注入命令:
frida -U -f 包名/应用名 -l andriod-flutter-ssl-ad.js --no-pause
脚本如下:
1、对APP进行逆向分析,查找应用的发包函数方法,进行hook toburp再进行修改。需熟练使用xserver或HTTP Decrypt工具,
HTTP Decrypt 提供了Finds Hooks模块,可以在不逆向不脱壳的情况下快速的找到APP所使用的加解密算法,而toBurp模块提供了直接使用APP内的方法进行加解密,而不需自己动手敲代码,对于整体POST加密更是提供了自动化加解密功能,可以实现Burp一条龙,Burp Scanner ,Intruder自动加解密
案例:某银行app使用阿里weex框架进行开发的,使用各种办法无法通过代理截获数据包,这时可以分析应用发包函数方法进行hook再转发到burp进行修改
最终分享一个万能的终极大法:自己分析、自己研究、自己Hook**