从adb prrmission denied到理解android手机提权背后

场景描述:

1. 连接Android手机,adb shell find xxxx,显示adb permission denied;

2. Google显示需要运行在root权限下,adb root,无错误输出,再次adb shell find xxxx,仍显示permission denied;

3. 发现手机未获取root权限,尝试root精灵和kingroot一键root均失败。

原因:

1. adb是Android SDK自带调试工具(相关介绍:Android developer);

2. adb默认以shell权限执行(非root),即使已获取手机及root权限,也需要显示切换 adb root;

若未获取root权限,显示切换当然也是没有用的;

3. adb 获取root权限的大前提:手机已root,目前依赖root工具,而root工具一般会有试用机型系统列表,列表外的手机无法实现root。

解析:

1. 为什么要root?

Android采用Linux内核;所以同Linux一致,无root权限将无法操作部分文件(如系统文件等)。

2. “把手机root一下”,这句话应该听说很多,究竟root一下代表什么呢?

用户对手机的权限一般是普通用户,手机厂商禁止用户获取root权限,root一下,即为将用户的shell权限提升为root权限。

3. 重中之重,root的通用原理是什么?

(提前注明:搜索的资料多为2013年或之前,具体提及破解细节只适用于当时Android版本,但猜想通用原理是一致的,整理之。)

关键的 "su" 参考:Android 系统 root 破解原理分析 + Android 的提权 (Root) 原理是什么?

  • 在Linux中,执行su命令输入密码即可获取root权限;在Android中,有些手机封装系统会直接去除su命令,另外的也不是通过密码来验证,而是看用户原先权限。即如果你是root,那你可以通过su切换到别的用户,比如说shell,wifi,audio什么的。但如果你是root之外的其他用户,就不能切换回root了,会提示你permission denied。
  • 在Linux中,存在一种特殊权限 s , 设置SUID(意思是,执行这个文件的用户暂时拥有文件拥有者的权限)。而su的拥有者即为root,所以普通用户运行su,即可获取到root权限。

  • Android同理,由于手机厂商可能封装了其他性质的su,所以首先需要确认两点:1. Android手机中存在su命令;2. su命令拥有者为root,执行权限为s。

所以root的重点在于要想办法替换并执行su。

cp /data/tmp/su /system/bin/                   #copy su 到/system/分区chown root:root su                             #su的所有者置成root
chmod 4775 /system/bin/su                      #把su置成-rwsr-xr-

以上操作都需要root权限,至此陷入循环,常规途径无法破解。

非常规途径(adbd漏洞为例)参考Android 系统 root 破解原理分析(续)

Android init进程以root权限启动,从而启动init.rc及其配置的系统服务(包括adbd),adbd在执行以下两句命令后变为shell权限

/* then switch user and group to "shell" */
setgid(AID_SHELL);
setuid(AID_SHELL);

破解的方法,在于让这两句命令执行失败,切换为shell失败则保留为原始的root权限。

(但实际在Android4.2以后su命令的执行过程有修改,5.X之后也有变动,具体资料未梳理明了,暂保留以上)

时间: 2024-12-19 04:47:22

从adb prrmission denied到理解android手机提权背后的相关文章

android ioctl fuzz,android 本地提权漏洞 android root

目前正在研究android 三方设备驱动 fuzzer , 也就是下图所说的 ioctl fuzzing, 下图是由keen team nforest 大神发布: 欢迎正在研究此方面的人联系我共同交流进步!Email:  Blind Fuzz Smart Fuzz android 内核栈溢出android slab/slub 类堆溢出android 数组越界导致的复写内核中的重要数据android 内核信息泄漏android null pointer deference 空指针引用android

CVE 2013-6272 Android phone提权打电话漏洞分析

简介 这一类漏洞由德国的安全研究机构Curesec所发现,去年年底的时候秘密告诉Google,直到今年7月份的时候才决定公布一个类似的漏洞.这个漏洞涉及到com.android.phone.PhoneGlobals$NotificationBroadcastReceiv的组件暴露问题,导致恶意的应用程序无需声明任何权限就可打电话. 2. 漏洞细节 在Android源码(以JELLY_BEAN 4.3为例) /packages/apps/Phone/src/com/android/phone/Ph

android提权漏洞CVE-2010-EASY修复【转】

本文转载自: http://blog.csdn.net/lhj0711010212/article/details/9351131 android提权漏洞CVE-2010-EASY修复 linux系统由udev提供系统设备的管理,比如提供热拔插usb设备等等.而Android把udev的工作移交给init进程.而linux中版本号小于1.4.1的udev不会检查是由内核还是用户发送热拔插信息.因此用户可以发送恶意的信息让内核加载定义的恶意程序从而取得root权限.该代码如下. 程序执行的顺序用(

android 手机连电脑usb调试 adb devices 显示 unauthorized ,eclipse DDMS offline

android 手机连电脑打开usb调试, adb devices 显示 unauthorized,eclipse中的DDMS中的设备一直是offline状态 你是否已经拔插了手机数据线无数次, 重启过无数遍手机与电脑, 电脑上无数次运行adb kill-server adb start-server, adb shell , 或者用豌豆荚,或者用各种手机连接助手, 还删除了手机上/data/misc/adb/adb_keys, 手机上就是从来都没有弹出过确认key fingerprint 的确

Android使用adb工具及root权限完成手机抓包

1.环境准备/注意: 手机要求已经root. 首先需要配置JDK环境变量,这里主要讲解抓包,JDK环境变量配置跳过. 将包内附带的adb.zip解压到C盘根目录.  整个操作过程都需要用手机用数据线连接电脑. 点击运行,打开cmd窗口,运行cd至adb目录 然后把tcpdump程序 发布至手机上 adb push c:/tcpdump /data/local 输入命令进入手机 abc shell su 手机上出现是否信任允许控制,点信任 给发布到手机/data/local/目录下的tcpdump

Android 手机 无线 ADB

要用网络调试Android需要设备已经获取root权限 如果手机没有命令行工具,请先在手机端安装终端模拟器,然后在终端输入: $su #stop adbd #setprop service.adb.tcp.port 5555 #start adbd 然后在电脑端cmd中输入adb命令: adb connect <手机ip地址(端口默认是5555)> 这时手机已经和电脑连上了,用adb devices看看有没有连上手机, 如果没有就adb kill-server后重新connect 可以直接用e

利用ADB和Settings命令行工具轻松的攻击Android手机

从4.2开始,Android提供了一个命令行工具settings.这个工具用于帮助构造SettingProvider的客户端代理,从而可以方便的进行系统设置项的读取和设置. 但是这个工具和adb配合起来,将对Android的安全构成极大的威胁.因为通过adb来执行settings时的时候,uid是shell,而shell拥有非常多的特权. 当然,问题的根源在于adb的shell权限太高,毕竟即使没有settings这个工具(或者说没有/system/framework/settings.jar文

Linux下adb驱动问题Linux下使用手机USB调试模式连接ADB进行Android程序的调试

Linux 下adb 驱动问题 Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的直观. 具体步骤首先确认手机连接上电脑,lsusb查看下设备记录. [email protected]:~$ lsusb Bus 007 Device 009: ID 18d1:4e12 Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d

mac平台使用adb、tcpdump工具抓取android手机网络包

在开发手机app的时候我们想看下自己app发出的网络请求,这个时候我们需要tcpdump工具进行抓包.要实现tcpdump抓包,需要以下几步: 这里以android 手机华为 P6为例子 1. 手机ROOT 要使用tcpdump工具,必需先获得手机的root权限,试过好几种root工具,最后发现360的一键ROOT工具可对P6这台机器root 下载PC版的360一键root工具,下载地址 , 然后用usb线将手机链接到电脑,同时打开USB调试(设置->开发人员选项->USB调试) 然后按照他的