Android Root分析及防范
课程名称:信息信息系统安全课堂作业
众所周知,Android系统由于其开源、开放、灵活的特征让智能手机产业有了飞速的进步,Android平台作为目前最流行的流量平台,由于它的开源使得大量的厂商加入其阵营,作为当前最大的流量来源,安卓平台是黑产分子眼中的香饽饽,各种恶意应用和手机病毒纷至而来,Android 开放、开源的优势从另一个角度来看也许正是其最大的弱点——系统的安全问题。
现如今,很多人都不喜欢系统自带的软件,想有跟多的权限,清理后台运行的国产软件,选择更多的个性化选项等等,经常会使用刷机工具,获取ROOT权限。虽然能够开放手机权限从而使手机的可玩性更高,软件开放性更高,但是在这种情况下,ROOT后就代表手机已经开放了权限,在下载应用时候某些软件会自动允许授权,在此过程中没禁止授权的话很有可能会让软件中带有的漏洞或者是病毒植入到手机,轻则造成手机卡顿,重则会让手机出现当机无法开机等情况,一旦用户安装了恶意软件,那设备将会处于极度危险的状态。ROOT类病毒就是个最好的例子。
安卓Root类病毒,又称顽固木马,是指病毒应用会利用系统漏洞对设备进行Root提权,在Root提权成功后,再通过植入、感染和替换系统文件等方式将恶意的Apk、Elf等文件写入到系统目录,进行后续的恶意行为。这类病毒通常会进行恶意扣费、恶意推广、盗取数据等行为,部分具有极强的破坏性,会篡改用户设备信息和破坏系统,顽固木马通常具有极强的防卸载能力,一般的手机安全软件都无法彻底清除。

                      图1:Root类病毒的攻击流程

Root类病毒的攻击流程如上图1所示,Root提权模块作为Root类病毒的核心模块,是Root类病毒执行成功与否的关键。当感染用户手机后,Root类病毒会首先尝试去调用提权模块进行root提权操作,若提权失败,则它就不会执行后续的恶意行为,或者是像普通的Apk病毒一样,执行一些弹出广告等恶意行为,但是如果用户之前刷机过,那此类病毒轻而易举就可以进行提取操作,特别是在一些低版本Android系统,据统计,从影响的Android系统版本来看,Root类病毒感染手机主要还是集中在Android4.4.2、4.3.1和5.1.1;当提权成功后,它就会将恶意的Elf文件、病毒Apk文件植入到系统目录,并通过修改系统启动项、运行后台守护进程来保证病毒在开机时自启和防止病毒被卸载。由于获取了root权限,病毒的恶意行为就不局限于弹窗广告了,它可以进行更加复杂和多样的恶意操作,包括静默安装应用、修改系统文件、窃取用户数据、注入系统应用和其他用户应用等,给用户安全造成严重的威胁,获取一些非法利益,也就诞生了Root类病毒黑色产业链,如图2所示。

                       图2:Root类病毒黑色产业链

Android的内核就是Linux,在Linux下获取root权限的时候就是执行sudo或者su,接下来系统会提示你输入root用户的密码,密码正确就获得root权限了。但在Android里su不是靠验证密码的,而是看你原来的权限是什么。我的理解是如果你是root,那你可以通过su切换到别的用户,可以降权升权,来回切换,但如果你是root之外的其他用户,就不能切换到root了,因为无法没有升权。现在问题就是要在普通用户状态下执行su,并且把su的权限标志位置成-rwsr-xr-x,其中r代表该文件可读,w代表可写,x代表可执行,-就代表没有该权限。第一位是判断是文件(-)还是文件夹(d),后面分三组,第一组代表文件所有者的权限,第二组代表和所有者同组人的权限,第三组代表其他用户对该文件的权限,但是su文件比较特殊,rws,它的执行权限标志位是一个s,s代表当任何一个用户执行该文件的时候都拥有文件所有者的权限,这文件的所有者是root。su程序文件一般放在在系统的/system/bin/或/system/xbin/目录下,如果其属主是root并有suid权限(即-rwsr-xr-x),就通过su执行的命令都具有root权限,常见的Root类病毒寄生文件目录见图4,现在可能有的出产厂家可能没有将su文件保留在系统文件里,如果想root,还需自己找一个root下的su文件将其放入,并想方设法修改权限。如果系统中有su,其源码中有关键代码,即使普通用户,只要注释后都可以拿着su执行系统中的程序,关键代码如图3。

图3:su关键代码


图4:Root类病毒恶意文件常用的系统目录

综上,个人认为root提取关键是要su文件及其权限问题,根据Root类病毒寄生文件,病毒也修改了system/下的配置文件,使其开机时自动启动病毒程序。
Linux下的文件除了权限属性外,其实还有一些隐藏属性,见图5,使用lsattr命令显示。一共有13个短横杆,每个代表一种属性。其中i属性,设置了文件将无法写入、改名、删除,即使是root用户也不行,这种属性常用于设置在系统或者关键服务中的配置文件,这对提升系统安全性有很大帮助。
因此,通过预置一个不可用不可改的su文件,使得Root类程序在尚不知道我们所采用的方式之前,无法修改su文件,达到无法调用su以获得永久root权限的目的,也可以将病毒可能寄生的配置文件设置此属性。假如出产厂家未写入su文件的话,在系统底层可以做个定时查询是否存在这个文件的功能,写死在硬件,当然这只是个想法,可行性尚待商榷。

图 5:lsattr显示文件隐藏属性


图6:lsattr隐藏属性
注:其中用su -成的root的用户有些环境变量和root登陆有些不一样,只是euid相同,uid不同

更多相关文章

  1. Android(安卓)studio中TextView改变字体的两种方式(如仿宋、隶书)
  2. 权限
  3. Android(Java)加载SO文件
  4. Android(安卓)桌面请求录屏权限不唤起App
  5. Android之Android(安卓)studio如何解决Multiple dex files defin
  6. Android(安卓)Popup特效
  7. react native 错误:Make sure you have an Android(安卓)emulator
  8. 转:Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片
  9. 在32位的Ubuntu 11.04中为Android(安卓)NDK r6编译FFmpeg0.8.1版

随机推荐

  1. Android 嵌套滑动机制(NestedScrolling)
  2. Android 图片选择器 PictureSelector
  3. 系出名门Android(7) - 控件(View)之ZoomC
  4. Android刷Recovery
  5. Android倒计时功能的实现(CountDownTimer
  6. Android 3.0 r1中文API文档(103) ―― In
  7. Android学习笔记之布局2
  8. android音频hal层简介
  9. 一个简单的中英文翻译词典学习(类似灵格斯
  10. Android 3.0 r1 API中文文档(105) ―― V