Category Archives: 信息安全

Android提权代码zergRush分析

一、背景和原理

Revolutionary工具开发小组在2011年10月发布了一个在Android 2.2和2.3上获得root权限的方法[1],并公布了漏洞利用代码zergRush.c[2]。tomken_zhang已经在其博客上发表了两篇文章[3][4]对其分析。本文做进一步梳理和补充。

产生漏洞的主要原因是:具有root权限的vold进程使用了libsysutils.so库,该库的一个函数存在栈溢出,因此可以在root权限执行输入的shellcode。

存在漏洞的函数为FrameworkListener::dispatchCommand,位于源码的\system\core\libsysutils\src\FrameworkListener.cpp中,其中的局部变量argv为固定大小的指针数组,当输入参数的数量超过其大小时,会越界写入栈中。

zergRush.c成功地利用了这一漏洞,并进一步:

1、在/data/local/tmp/下增加一个置了S位的shell;

2、使Android中后续启动的adb进程以root权限运行。

其中第二步的方法是:adb进程最初以root运行,之后调用setuid()降低权限[5]。降权之前,会判断系统属性ro.kernel.qemu,如果该属性位1,则不降权。

Continue reading

android编译工具agcc

在zergRush.c中,作者提到使用agcc工具编译。这个工具是一个perl脚本,下载地址是:

http://plausible.org/andy/agcc

使用的方法:

1、下载android源码并编译一次,不要清理编译结果(即不要make clean);

2、修改agcc原来第37行$GCC的值为arm-eabi-gcc的绝对路径,例如:

/home/claud/android-src/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc

3、修改agcc原来第39行$DROID的值为源码的绝对路径,例如:

/home/claud/android-src

4、修改agcc第177行@cmd的值为arm-eabi-gcc的绝对路径,与上面$GCC相同;

5、第117行和第132行有两个对版本号的硬编码,改成自己使用的,例如上面的话,是4.3.1。

然后把这个脚本当成gcc使用就可以了,默认的包含路径、链接路径、链接库等,都已经配置好了。从此再也不需要用交叉编译器静态链接了,以及……可以调用完整的系统API了。

[译]手机病毒发展简史:第一部分

作者:Alexander Gostev, Kaspersky Lab

原文:Mobile Malware Evolution: An Overview, Part 1

发表于:2006年9月29日

2006年6月是具有历史意义的一个月——卡巴斯基实验室获得第一个手机病毒样本已经整整两年了。最初我们还不知道那个病毒是由病毒编写组织29A的成员“Vallez”所写,但现在已经知道了。

第一个样本打开了潘多拉的魔盒。现在,反病毒厂商已经搜集到数百个手机上的木马和蠕虫。Symbian系统的恶意程序最早出现在2004年。这一涓涓细流已经汇集成河,并将成为波涛汹涌的洪流。在今天,我们的反病毒数据库每周都会新增十多个前缀是“SymbOS”的木马。

看起来并没有哪一个手机蠕虫是主流的。最糟糕的是,这些蠕虫正在造成越来越多的危害,而其规模尚无法估计。一年前,我们捕获Cabir(卡波尔)时,唯一知道的是它在另一个国家或城市被检测到。被感染手机的主人随后联系了卡巴斯基实验室,我们与位于莫斯科的卡巴斯基总部的一些员工开始一同分析这些真实的攻击。

Continue reading

Androguard软件安装方法

Androguard是目前最好的开源Android分析工具之一,项目地址是:

http://code.google.com/p/androguard/

Androguard依赖于很多第三方库,各个库又有不同的环境要求。多次尝试后,得到一个能顺利安装所有功能的流程。平台是Linux x86 + Python 2.6。其他系统、体系、Python版本都没有成功。

具体步骤如下:

(下载freemind思维导图文件: androguard_installation.zip)

Continue reading