| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 移动安全-APP检测ROOT设备的方法 -> 正文阅读 |
|
[移动开发]移动安全-APP检测ROOT设备的方法 |
0x00 前言这篇文章是讲移动安全中如何检测ROOT设备的,对于开发人员来说,这篇文章可以让你知道如何去检测;对于安全人员来说,知己知彼方能百战百胜。 0x01 Android系统的沙箱众所周知Android系统是基于Linux内核的,而Linux系统是多用户的,那么问题来了——Android系统为什么不是多用户的?Android系统是为了智能手机而生的,而智能手机作为私人设备,自然不需要支持多物理用户使用了。 ?至于Linux的多用户机制则被用到了APP隔离上,即沙箱中。每一个APP应用在Android系统安装的时候就会分配到一个UID,通过它对APP进行隔离,这样不同的APP就会在不同的沙箱中运行,再默认情况下不同的APP之间不能互相访问以及读写文件,这样就实现了互不干扰。 这个UID一般在10000-99999之间,可以在/data/system/packages.xml文件中查看,比如我们要查看包名为com.sy.h5demo的APP,可以看到UID是10176。 进入/data/data/com.sy.h5demo目录下,可以看到文件属性标识的用户名都是u0_a176,与UID相关联。 ?当APP要运行的时候,系统会给它创建一个进程,这个进程也是以这个UID来标识的,我们查看h5demo这个APP,果然如此。 说到这里,你可能会疑问那APP之间如何进行交互? 这是个好问题,系统其实早就考虑到了。我们可以通过配置AndroidManifest.xml文件来实现用户ID的共享,进行共享的APP其签名必须一致。所有的Android应用程序都是需要用证书进行签名的,这个签名私钥由开发者自己保存。这个私钥很重要,需要妥善保管,有的开发者直接将私钥当做资源也打包在APP当中,这也真是心大! 看到这里,通过沙箱机制,Android系统似乎挺安全的?的确如此,不过要加一个前提条件,排除root用户。root这个超级玩家在Linux系统拥有最高权限,它可以无视沙箱机制,超越任何用户和用户组来对文件、目录进行读、写、删除。 为了手机的安全,绝对不要轻易刷机!一个恶意的APP如果获得Root权限,那将是灾难性的!所以在资金交易等敏感场景,APP检测设备是否已经Root就显得非常有必要了。 0x02 APP检测Root原理?通常我们获取root权限,就是通过su命令,它是Linux下切换用户的命令,不带参数就是切换到root用户。 ?所以我们可以通过检测这个命令是否存在来判断系统是否已经Root。 1.检测是否存在可执行文件su
2.执行which命令查看是否存在su
3. 检测环境变量PATH上是否存在su
以上三种检测方法就是最常用的三种,那我到底用哪种呢?当然是全要啊! 检测效果如下: 一旦我们检测到设备已经Root,可直接结束进程。 ?在以上三种方式存在的情况下,我们还可以添加其他的方式来加强检测,如:检测流行的ROOT工具是否存在等;对了查看系统是否为测试版(test-keys)这种方式是无效的,而且有的厂商发布的就是test-keys。 0x03 End但是很遗憾的说,恶意用户通过Hook、反编译等技术可以轻松绕过以上检测,这就是说Root检测只是很小的一步,要做好移动安全,我们还有很长的路需要走! ============联系我============ 云野专注于网络安全行业技术分享,主要包括渗透测试、代码审计、红蓝对抗、安全合规、应急响应、数据安全、安全架构、安全开发等内容。 ? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:30:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |