跳转至

Root环境检测

0x01 漏洞描述

Android安全架构是基于Linux多用户机制的访问控制。在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。

root用户的特权性还表现在:

  • 对文件或目录进行读取、修改或删除;
  • 对可执行程序的执行、终止;
  • 对硬件设备的添加、创建和移除等;
  • 对文件和目录进行属主和权限进行修改,以适合系统管理的需要;
  • root是超越任何用户和用户组的,基于用户ID的权限机制的沙盒是无法隔离的。

0x02 漏洞危害

攻击者可在root的终端上对应用程序进行动态调试、内存访问篡改、Hook应用程序与服务端交互流量等。

0x03 修复意见

3.1 查看系统是否为测试版

可以查看发布的系统版本,是test-keys(测试版),还是release-keys(发布版)。

可是在实际情况下,也有某些厂家的正式发布版本也是test-keys

3.2 检查是否存在Superuser.apk

Superuser.apk是一个被广泛使用的用来root安卓设备的软件,所以可以检查这个app是否存在。

3.3 检查su命令

su是Linux下切换用户的命令,在使用时不带参数,就是切换到超级用户。通常我们获取root权限,就是使用su命令来实现的,所以可以检查这个命令是否存在。

3.4 执行busybox

BusyBox集成压缩了 Linux 的许多工具和命令,所以若设备root了,很可能Busybox也被安装上了。

3.5 访问/data目录,查看读写权限

在Android系统中,有些目录是普通用户不能访问的,例如 /data/system/etc等。

可以以/data为例,来进行读写访问。先写入一个文件,然后读出,查看内容是否匹配,若匹配,才认为系统已经root了。

具体代码可参考:

Android root检测方法小结