标题:ROOT设备目前主流的检测方法
注意:教程来源于用户上传,互联网收集,其中真实性注意斟酌,操作可能存在风险,请践行时注意保存资料防止丢失,如果本教程侵犯您的个人或者集体利益,请邮件fiimecn@163.com下架处理,非常感谢!
ROOT目前主流的检测方法
通过对部分应用的ROOT检测机制进行逆向分析,以及查阅相关资料发现一些事情。各应用ROOT检测机制没有相对统一的标准,具体表现在检查内容、处置方式等方面,下面是我整理的一些常用的检测方法:
6、读取build.prop中关键属性,如ro.build.tags和ro.build.type8、检测frida、xposed等Hook框架的特征
上面便是我整理的各种应用主流的检测方法,目前看来绝大多数的应用都是对上面几个检测方法组合使用,甚至有很多只会实现其中的一项或者两项。另外,上面的方法也没有囊括所有的可能,比如有些应用还会检测“面具”或者Superuser.apk等是否存在来进行ROOT检测。总结来说,目前主流的ROOT检测就是对ROOT之后的手机独有的一些特征进行验证,如特征文件是否存在、是否存在越权、关键属性是否被修改等等。
对ROOT设备的处置
检测到手机被ROOT之后如何处置也是一个重要的问题,目前看来主要有两种处置手段:其一是发现即摧毁,顾名思义就是检测到ROOT设备之后不允许应用正常运行;另外一种则是允许应用运行,但是切换与后台服务器的交互。接下来,咱们对这两种处置手段进行简单的比较:
1、第一种处置,检测到ROOT设备之后如何停止应用的运行?根据工信部的监管要求还不能直接让应用直接退出,因此现在一般的做法就是通过弹窗、Toast等以文字描述提示用户当前手机被root了存在风险,由用户决定是否退出或者延时几秒后退出。我们可以看出这种处置是将用户体验放在了一个相对重要的位置,但是这同时也给攻击者带来了诸多便利。友好的文案提示方面攻击者确认是触发了环境检测机制,从而专心绕过。不立即停止应用的运行,留给攻击者足够的时间去进行分析和注入,从而绕过应用的ROOT检测机制。
2、对第二种处置,对于攻击者来说无法直接定位到业务失败的原因,可能需要通过抓包分析,甚至自己猜测来定位,在一定程度上提高了攻击者的攻击成本和难度。但是这种处置也可能会误杀一部分为了个性化而将手机ROOT的正常用户,为了减少误杀率,现在的应用也会进行一些特殊的处置。如何绕过ROOT检测
前面扯了一堆,后面的内容算是开始步入正题。无论我们是从事安全研究还是作为攻击者,也无论应用对检测到的ROOT设备是如何处置的,ROOT检测机制的存在都会对我们造成一些阻碍。因此,绕过应用的ROOT检测是一个必要的事情,也是我们工作中经常要遇到的。那么,如何绕过ROOT检测机制呢?这里提供两个思路,其一是对应用下手,干预应用的ROOT检测行为;另外一个思路则是对系统下手,隐藏系统自身ROOT相关的特征。我们可以借助jadx等逆向工具对应用源码进行分析,Hook相关的实现函数绕过;也可以获取AOSP源码,通过定制ROM来隐藏ROOT的特征。
Hook
目前主流的Hook框架有frida和xposed,本人比较倾向于前者,我们也可以用frida的可见框架RMS进行注入。相对来说,通过Hook的方式来绕过ROOT检测机制操作比较简单、方便,但Hook本身会受到很多的约束。一方面,受限于应用自身的加固手段,可能难以定位ROOT检测的实现函数;另一方面,Hook框架自身也会具备一些易于被检测到的特征,可能会受到这些特征的约束而难以完成工作。