一、原理
漏洞利用代码zergRus产生漏洞的主要原因是:具有root权限的vold进程使用了libsysutils.so库,该库的一个函数存在栈溢出,因此可以在root权限执行输入的shellcode。
存在漏洞的函数为FrameworkListener::dispatchCommand,位于源码的\system\core\libsysutils\src\FrameworkListener.cpp中,其中的局部变量argv为固定大小的指针数组,当输入参数的数量超过其大小时,会越界写入栈中。
利用了这一漏洞,并进一步:
1、在/data/local/tmp/下增加一个置了S位的shell;
2、使Android中后续启动的adb进程以root权限运行。
其中第二步的方法是:adb进程最初以root运行,之后调用setuid()降低权限。降权之前,会判断系统属性ro.kernel.qemu,如果该属性位1,则不降权。
二、函数功能概要
die 打印出错信息,退出程序
copy 将一个文件拷贝为另一个文件
remount_data 重新mount一个分区
find_symbol 查找libc.so中导出函数的内存地址
check_addr 确定一个地址中是否包含被禁止的字节
do_fault 构造溢出数据和exploit,并通过socket发送给vold进程
find_rop_gadgets 从libc.so中寻找两个特殊指令序列的地址
checkcrash 调用do_fault,判断其溢出产生的调试信息中是否包含sp
find_stack_addr 调用do_fault,从其溢出产生的调试信息中定位栈地址
do_root 将shell文件的S位置上,并设置ro.kernel.qemu属性为1
main 主函数,完成漏洞利用的所有步骤
三、main函数
395-396: 如果当前程序是以root权限运行,并且程序名为boomsh,则调用do_root,执行附加的两步操作
402-405: 将自身拷贝至/data/local/tmp/boomsh,并设置其权限为0711,将/system/bin/sh拷贝至/data/local/tmp/sh。
407-408: 根据/system/bin/vold文件的大小获得其对应进程中堆的大概地址heap_addr。
410-421: 根据系统版本对heap_addr做微调。如果不是2.2或2.3系统,退出。
423-428: 查询libc.so中system调用的地址,保存至system_ptr。
430-443: 通过checkcrash函数,判断buffsz为16或24时能否成功利用。这里buffsz实际指libsysutils中造成栈溢出的指针数组argv的容量。
445-484: 调用find_stack_addr函数,确定栈地址。反复尝试五次,每次对堆地址heap_addr做微调,直至成功。判断得到的栈地址是否有效。
486-487: kill掉当前的logcat进程,删除/data/local/tmp/crashlog文件。
489-491: 调用find_rop_gadgets函数,在libc.so中寻找指令序列add sp, #108; pop {r4-r7, pc},将地址保存在stack_pivot;寻找指令pop {r0, pc},将地址保存在pop_r0。
493-514: 尝试三次,每次调用do_fault,之后判断/data/local/tmp/sh的S位是否置上,一旦置上,则利用成功;否则,微调栈地址heap_addr(加减16)。
516-533: 一旦利用成功,并且系统的ro.kernel.qemu属性已经被置为1,则利用完成,重启的adb进程即可获得root权限。
四、总结
主要是利用了android中几个特殊之处:
1. vold的溢出会在adb logcat中输出调试信息,这些信息说明了其内存结构,而其他程序可以读取到这些信息;
2. 在ARM架构下,跳板指令有了更多的选择,ret2libc的攻击也可能更容易实现
3. adb的降低权限过程又一次被利用。
另外建议android APP开发完成后做一个全面的漏洞检测:
http://www.ineice.com/,确保安全。
分享到:
相关推荐
zergRush是一款常用于Android设备的Root工具,它通过利用系统漏洞来获得Root权限。这个名字来源于星际争霸游戏中的虫族单位,象征着快速且无孔不入的攻击方式。zergRush通常作为一个小的可执行文件,通过ADB...
主要分析了手机Root权限获取的过程,并介绍了常见的几个Root提权漏洞,最后通过分析su与SuperUser.apk的协作方式解了Root真正的原理。涉及的内容:Root的由来、Root漏洞的历史、CVE-2009-2692、CVE-2010-EASY、...
Android取证技术分析是信息技术领域中非常重要的一环,特别是在智能手机和平板电脑中应用广泛的Android系统。随着Android系统在移动设备市场的占有率不断上升,对Android系统漏洞的研究和利用逐渐成为计算机取证技术...
2. 通用提权漏洞:在Android 2.1到4.0.4版本中,存在一系列通用的提权漏洞,如ZergRush、Gingerbreak、Mempodroid等。这些漏洞被恶意软件家族利用,用于获取系统最高权限(rootkit),并且在新的漏洞发现后,攻击者...
首先,肖梓航先生指出,从Android 2.1到4.0.4版本中存在许多通用的提权漏洞,例如ZergRush、Gingerbreak、Mempodroid和adbsetuid等。这些漏洞被恶意代码家族利用,例如DroidDream、DroidKungfu等。他还提到了Firefox...
安卓权限破解工具 DooMLoRD_v3_ROOT-zergRush-busybox-su
手机开USB调试模式接到电脑 直接运行包中的runme.bat 即可完成安卓手机ROOT提权 有兴趣的朋友也可以打开CMD 按照runme.bat中的命令一条一条手动刷ROOT 该工具包本人模拟器、实机亲测均通过
例如,Android 2.3中的zergRush漏洞就是一个例子,它利用了一个拥有root权限的进程的栈溢出漏洞来实现提权。 一旦找到了这样的漏洞,开发者会编写exploit(利用程序)来触发漏洞,并执行提权脚本。这个过程可能涉及...
1. **zergrush**: 这是一款针对Android设备的exploit工具,利用特定的安全漏洞来获取设备的root权限。zergrush通常用于那些传统Root方法无效的设备,其工作原理是寻找并利用系统中的未修补安全缺陷。 2. **psneuter...
Busybox是一个小型的Unix工具集,包含了许多基本的命令行工具,而zergRush则是一个root辅助工具,帮助我们突破Android的安全限制。 获取root权限的步骤大致如下: 1. **备份数据**:在尝试root之前,务必备份所有...
从"ZergRush-master"这个文件名来看,这可能是游戏的源代码仓库,包含主项目的源代码和其他相关资源。玩家或开发者可以借此深入了解游戏的内部工作原理,甚至进行二次开发或学习游戏编程。通过深入研究这些源代码,...
在安卓系统中,root权限是指用户对系统的最高控制权,能够访问和修改系统级别的文件,进行深度定制和优化。 【描述】提到的"ZergRushTempRoot_V3.0汉化版"是一个实用的软件,旨在帮助用户快速、简便地获得设备的...
原理是利用了android的两个提权漏洞: CVE-2010-EASY 和 ZergRush。 我把大概原理简单说说: 1, CVE-2010-EASY : linux的内核的模块化程度很高,很多功能模块是需要到时候再加载,在 android中由init进程来管理...
综合以上分析,htc小助手28似乎是一个针对Root过的HTC设备的工具集,提供了权限管理、系统维护、设备调试等功能。使用时,用户需要确保设备已经获得Root权限,并且在Windows环境下通过USB连接手机,以便利用ADB和...
9. **zergRush**:这个名字在Android社区中可能指的是一种特定的刷机工具或程序,但没有具体上下文,难以确定其确切用途。 刷机涉及到的风险包括可能导致设备变砖、失去保修、安全问题等,因此,不熟悉刷机操作的...
6. **zergRush**:这可能是一个特定的ROOT工具,通常用于破坏设备的保护机制,从而获得ROOT权限。这个名字来源于《星际争霸》游戏中的虫族单位,象征着快速且强大的攻击。 在进行手机ROOT时,需要注意以下几点: - ...
- **zergRush**:可能是一个Root工具,用于突破设备的安全防护,帮助获取Root权限。 3. **Root步骤** 1) 安装设备驱动:将手机连接到电脑,确保驱动正确安装,使电脑可以识别手机。 2) 启动ADB:运行ADB工具,...
就是说C:\DooMLoRD_v1_ROOT-zergRush-busybox-su下有runme.bat文件和files文件夹。 点windows的 开始-》运行,输入 cmd 点确定, cd C:\DooMLoRD_v1_ROOT-zergRush-busybox-su 按回车 runme.bat 按回车 (7) 按...