android root测试,[原创]安卓逆向之绕过root检测的四种姿势

环境:

本机:192.168.137.1 所需软件python2.7.X,android killer 雷电模拟器

Kali虚拟机 ip 192.168.137.129 所需软件 drozer Frida objection

安卓模拟器:ip 192.168.137.195 所需软件 insecureBankV2.apk(下文简称bank) drozer-agent,frida-server

软件地址:

insecureBankV2.apk:https://github.com/dineshshetty/Android-InsecureBankv2

drozer:https://github.com/FSecureLABS/drozer

frida:https://github.com/frida/frida/releases

方式一:修改系统文件

第一步,安装app,配置app服务端

App安装好后如图,配置ip地址为后面启动app.py的主机地址

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第1张图片

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第2张图片

执行python app.py,该步骤模拟安卓的客户端的后台服务

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第3张图片

问题:bank上来需要登陆,不知道账号密码,所以我们需要先搞个账号密码

解决方式:使用drozer进行本地sql注入

操作如下:

启动drozer agent

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第4张图片

Kali操作

Adb connect 192.168.137.195 adb连接雷电模拟器,需要先在本机执行adb disconnect断开本地adb连接

Adb forward tcp:31415 tcp:31415 转发本地端口到模拟器,drozer通讯走adb通道

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第5张图片

万事具备,执行drozer console connect运行drozer链接到drozer-agent

出现如下表示进入drozer控制台,环境可以使用了

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第6张图片

开工

先查看bank包名

Kali 执行adb shell 进入安卓系统 /data/data/ 目录下查看

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第7张图片

回到kali drozer控制台

执行如下命令扫描sql注入

run scanner.provider.injection -a com.android.insecurebankv2

存在SQL注入

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第8张图片

开始注入,出现用户名,没有密码,应该是空密码

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第9张图片

有了用户名,回到模拟器bank登录界面,开始登陆

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第10张图片

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第11张图片

登陆成功,并看到设备已经root的提示,模拟器的系统是root过的,所以这里提示已经root,该app只是测试app,通常app检测到root环境会退出app,我们如何绕过他的root检测呢,

首先,要了解他检测root的原理,最多的为检查几个root相关文件、/system/bin/su

/system/xbin/su / superuser.apk 等文件,针对文件检测,可以直接通过修改文件名绕过

重命名/system/bin/su /system/xbin/su

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第12张图片

提示没有权限,remount重新挂载文件系统即可,回到bank看效果

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第13张图片

陈宫绕过,这个方法太简单,有没有更好玩的方法,当然有,请往下看

开始之前请把重名的su恢复原样

方式二:Frida hook关键函数

模拟器安装frida_server 模拟器x86版本

上传frida-server到安卓手机/system/xbin下

Adb push Frida-server /system/xbin/

Adb shell 进入安卓系统命令行

Frida-server 运行frida-server

Kali安装frida

Pip3 install Frida Frida-tools

Adb forward tcp:27042 tcp:27042

Frida-ps -U

出现安卓手机软件列表表示frida配置成功

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第14张图片

通过androidkiller静态分析hook功能点,apk直接拖入android killer

通过关键字搜索,我们找到了root检测实现方法所在的类,有了类,我们可以编写脚本对所有函数进行hook

使用androidkiller快速定位关键点

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第15张图片

查找该类所有函数

脚本如下

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第16张图片

Frida注入获取该类的所有函数,经过静态分析,该函数返回值为布尔值,有可能是判断su是否存在的

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第17张图片

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第18张图片

有了类和函数,就可以直接编写js脚本更改返回值

脚本如下

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第19张图片

运行frida注入脚本

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第20张图片

成功绕过

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第21张图片

方式三: Objection hook关键函数

有了frida的经验,objection就简单多了

运行objection

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第22张图片

知道了root检测函数的所在的类和函数,直接hook函数返回值,这里显示true

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第23张图片

更改函数返回值,

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第24张图片

返回值更改成功,成功绕过root检测

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第25张图片

方式四:修改smali代码重新打包实现永久绕过

通过前面的经验,我们找到了root检测函数

通过静态分析smali代码,发现此处可能是绕过的关键点,该函数通过判断返回值来判断是否root

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第26张图片

知道了逻辑,我们修改他的逻辑,原本v3 = v2,程序才跳转

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第27张图片

更改逻辑,v3 !=v2才跳转

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第28张图片

Smali代码eq为等于,ne为不等于

打包编译回apk,修改完smali记得要保存一下

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第29张图片

运行apk看效果,成功绕过

android root测试,[原创]安卓逆向之绕过root检测的四种姿势_第30张图片

以上为本人总结的root检测绕过方法,如果大家有其他方法,欢迎补充,一起学习。

附件太大,上传不了,有需要的可以私聊我,或者再实验中有任何问题都可与我联系,本人将无偿为您解答。

最后于 2021-3-4 10:31

被半杯凉茶编辑

,原因:

你可能感兴趣的:(android,root测试)