其他
新姿势绕过应用的ROOT检测
本文为看雪论坛优秀文章
看雪论坛作者ID:镜中人24
一
前言
二
关于ROOT
ROOT检测的意义
目前主流的检测方法
对ROOT设备的处置
1、第一种处置,检测到ROOT设备之后如何停止应用的运行?根据工信部的监管要求还不能直接让应用直接退出,因此现在一般的做法就是通过弹窗、Toast等以文字描述提示用户当前手机被root了存在风险,由用户决定是否退出或者延时几秒后退出。我们可以看出这种处置是将用户体验放在了一个相对重要的位置,但是这同时也给攻击者带来了诸多便利。友好的文案提示方面攻击者确认是触发了环境检测机制,从而专心绕过。不立即停止应用的运行,留给攻击者足够的时间去进行分析和注入,从而绕过应用的ROOT检测机制。
2、对第二种处置,对于攻击者来说无法直接定位到业务失败的原因,可能需要通过抓包分析,甚至自己猜测来定位,在一定程度上提高了攻击者的攻击成本和难度。但是这种处置也可能会误杀一部分为了个性化而将手机ROOT的正常用户,为了减少误杀率,现在的应用也会进行一些特殊的处置。
如何绕过ROOT检测
Hook
定制ROM
三
实战演练
经过平时测试发现,该行的应用存在ROOT检测机制,在本人ROOT之后的手机上启动会弹出一个提示弹窗,且只能点击确定后退出应用。起初的时候,我想简单的绕过弹窗,但是后续的结果告诉我想的过于简单了,怀疑该行对于ROOT设备的处置是同时兼容了两种处置手段。所以,本次实践的目的便是绕过该行应用的ROOT检测机制。
技术选型
实践过程
得,静态分析走不通那咱们就动态分析吧,我这里使用RMS来进行分析和注入,在开始之前需要先思考一下,我们想要哪些信息来进行分析。咱们的目的是绕过ROOT检测机制,最重要的便是定位到ROOT检测的实现函数,有了RMS我们怎么样来定位相关函数呢?
由于本人是开发出身,想到的最直接的定位类的方法就是打印出当前应用所有已经加载的类,并根据关键词进行搜索。
从上图中我们可以很直观的看到咱们的目标类“RootUtil”,得来全不费工夫,从名字来看基本可以确定该类就是ROOT检测的封装工具类,咱们可以开始下一步了。
在第一步我们基本确定了目标类,但是咱们无法明确该类的内容和各函数的具体实现,因此这一步需要将该类的一些关键信息进行打印,如变量、方法等。至于如何获取这些关键信息,反射可以帮助咱们实现这一需求。打印的方法内容如下:
根据上图展示,我们看到该类定义了6个函数,从这6个函数几乎可以得到了我们需要的一些信息:
最后,分析所有函数的名字,我们基本可以确定应用ROOT检测机制的检测方法,在我前面整理的一些ROOT检测方法中基本包括了该行的几种检测方法,除了checkDeviceDebuggable,顾名思义该方法的作用就是检测是否可调试。无伤大雅,咱们先按照原来的思路进行绕过,后续会对这一方法进行补充说明。
结果分析
新姿势
关于热修复
绕过检测机制
根据前面获取的类信息和方法信息,我们需要创建一个类并实现相应的函数,来生成替换的dex。
后面就是编译生成class,再使用class2dex.jar创建dex文件,具体操作步骤在前面提到的文章中有描述。
为了更好的展示效果,自己根据该行应用的ROOT检测逻辑编写一个demo,文案展示当前设备是否已经ROOT,如下图所示:
然后,我们将第一步生成的dex文件放到/sdcard/Pictures目录下,重新启动应用,结果如下:
Okay,大功告成!
看雪ID:镜中人24
https://bbs.pediy.com/user-home-919715.htm
# 往期推荐
2.Chrom V8分析入门——Google CTF2018 justintime分析
5.人人都可以拯救正版硬件受害者(Jlink提示Clone)
6.frida内存检索svc指令查找sendto和recvfrom进行hook抓包
球分享
球点赞
球在看
点击“阅读原文”,了解更多!