APP安全扫描、加固, 免费试用
一、理论基础
Android系统它是基于 Linux 多用户机制的访问控制也就是沙箱。Android中的APP在默认的情况下不可以执行其它的APP,包括读写用户的私有数据。一个APP程序的进程就是一个安全的沙盒,每一个APP应用在Android系统安装的时候就会分配到一个UID,通过它对APP进行隔离,这样不同的APP就会在不同的沙箱中运行,再默认情况下不同的APP之间不能互相访问以及读写文件,这样就实现了互不干扰。(在受限的安全环境中运行应用程序,在沙盒中的所有改动对操作系统不会造成任何危害)。这样的安全机制保护下,APP看起来似乎就很安全了,其实不然这样的安全机制前提下,还得排除ROOT用户。
在Linux操作系统中也就是android系统,ROOT的权限是最高的,它被称为超级权限的拥有者。在android系统中,每个文件、目录和进程,都归属于某一个用户,在没有用户许可下其它普通用户是无法操作的,但对ROOT用户除外。
ROOT这个超级管理员权限,在android系统拥有最高权限,它可以无视沙箱机制,超越任何用户和用户组来对文件、目录进行读、写、删除。
二、ROOT危害
ROOT用户下,它可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行APP程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要;ROOT是超越任何用户和用户组的,基于用户ID的权限机制的沙盒是隔离不了它的。
手机开启ROOT后,会给攻击者(用户)带来了非常大的自主操作权利,让攻击者(用户)可以删除系统应用、安全或删除应用程序、查看并修改程序的运行信息,但与此同时,也给恶意软件打开方便之门,给设备信息安全带来了极大的挑战。
三、ROOT检测
在目前市场上的APP中大部分,都会对危险环境进行安全检测,那么首当其冲的就是对ROOT权限的检测,特别是在金融类的APP,它们在启动的时候都会进行ROOT环境的检测,检测后会进行对应的运行环境风险的提示,然后进行做对应的策略(例如闪退)。
那么在大部分的APP中,检测到ROOT设备之后如何停止应用的运行?根据工信部的监管要求还不能直接让应用直接退出,因此现在一般的做法就是通过弹窗、Toast等用文字描述方式,提示用户当前手机被ROOT了存在安全风险,由用户决定是否退出或者延时几秒后再退出。可以看出这种处置是将用户体验放在了一个相对重要的位置,但是这同时也给攻击者带来了诸多便利。
下面就分析在APP中对ROOT检测的思路和方法。
1、目录特征遍历
通过遍历指定的目录或者文件是否存在,进行判断当前运行环境是否有被ROOT。这个目录文件特征的检测大部分都是通过基于java代码去做判断的,例如以下这些目录特征
通过从以上的目录去判断是否存在,如果存在那么表示的该运行环境已被ROOT了,属于不安全的运行环境。下面是判断判断的代码实现示例
2、尝试执行ROOT后的一些操作
在运行环境中,通过对特定目录尝试新建文件方式或者执行特定的命令,例如 在这些目录/data、/system、/etc 等(只有root后才有权限操作的目录)进行尝试新建文件夹;或执行特定的命令的,例如执行su,、find、mount等命令去判断,如果这些命令执行通过的话,那么表示该环境已被ROOT了。
3、读取手机编译版本、调试状态
例如读取/system/build.prop中, 它是test-keys(测试版),还是release-keys(发布版),获取ro.debuggable、ro.secure的值检测是否有调试状态并以此判断运行环境是否被ROOT了。
4、特定的可以刷root权限的包名信息检测
在android中要刷ROOT除了刷手机系统外,还有可以借助一些刷ROOT权限的APP,例如最具代表性的magisk面具包,判断当前运行环境上是否有安卓这些刷ROOT的APP包,有存在这些APP那么表示该运行环境有存在ROOT的风险。这APP包有
“com.noshufou.android.su”,”com.noshufou.android.su.elite”,
“eu.chainfire.supersu”,”com.koushikdutta.superuser”,
“com.thirdparty.superuser”,”com.yellowes.su”,”com.topjohnwu.magisk”。下面是java检测实现示例
在APP的ROOT权限检测中,为了检测的准确度,目前APP中都是需要通过多个检测维度进行相结合检测的,以上的四个检测方案只是检测ROOT中最常用的检测方案,检测ROOT还有很多维度可以进行检测,只有通过多个维度的检测才能防止检测错误和检测的维度不够准确问题。
四、小结 ROOT在android的安全对抗过程中,它属于安全攻防的第一道护城河,这一道护城河被攻破了,那么各种APP的安全性就被大大降低了。有了ROOT权限后,对于攻击者或入侵者就可以进行各种逆向调试工具的安装,然后精准的攻破APP的功能。有了ROOT权限后,对于普通的用户来说,会引发隐私数据泄露、木马病毒入侵的危害。
3000款APP被通报下架,原因竟然是… …