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了。
具体代码可参考: