ADB配置提权漏洞(CVE-2017-13212)原理与利用分析

本文首发于 FreeBuf,转载请注明来源http://www.freebuf.com/articles/terminal/161843.html

0×01 背景

adb由于拥有shell权限,因此仅在授权PC端后才可使用shell权限,而通过该漏洞,可以实现在移动端获取shell权限,以致于可随意删除应用、屏幕截图等等高权限操作。不过移动端恶意应用程序必须能够连接到adbd正在监听的TCP端口,这就需要应用程序在它的AndroidMainifest.xml中定义INTERNET权限。

而漏洞作者所用的攻击方法是构造一个覆盖窗口,劫持用户点击,也就是经典的hijack攻击。Google也据此修复了此种攻击方式。

但是,我经过尝试后发现,除了以上构造hijack攻击窗口外,还可以劫持USB广播,然后在用户进行正常的连接电脑操作时,劫持授权界面,使用户误导从而进行授权。也即造成新的劫持授权漏洞方案。

继续阅读“ADB配置提权漏洞(CVE-2017-13212)原理与利用分析”

Android Assets打开调用过程源码分析

一、Android读取Assets中图片并显示

private Bitmap getImageFromAssetsFile(String fileName)
{
    Bitmap image = null;
    AssetManager am = getResources().getAssets();
    if (am == null)
    {
        return null;
    }
    try
    {
        InputStream is = am.open(fileName);
        image = BitmapFactory.decodeStream(is);
        is.close();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return image;
}
首先是获取AssetManager,然后调用其函数open,打开对应的资源文件

二、open函数追朔(Java层)

继续阅读“Android Assets打开调用过程源码分析”

Android中的文件打开读写调用过程

1、简述

一般的Android 在Java层对文件的读写调用主要有以下两个类:

(1)FileInputStream/FileOutputStream(FileReader/FileWriter)
(2)RandomFileAccess

FileInputSteam和FileOutputStream继承于InputStream和OutputStream,FileReader、FileWriter继承于Reader和Writer,它们的底层实现原理实现是一样的,区别在于前者用于字节型数据流读写,后者用于unicode文本流读写。

RandomFileAccess是一个独立的文件读写类,它与InputStream、OutputStream不同之处在于它更倾向与随机文件读写,类似C语言fopen、fread、fseek、fwrite、fflush、fclose的封装。

下面简要的分析三个操作的整个调用过程。

2、文件打开

一般在Java层调用如下:

File myFile = new File(“/data/local/tmp/test.java”);

FileOutputStream fos = new FileOutputStream(myFile);

首先我们找到File.java

继续阅读“Android中的文件打开读写调用过程”

Android逆向小工具-ida_auto_dydebug

dex2java3

一、工具产生的背景

每次动态调试,会敲各种各样的命令,而经常的debuger就会知道,调试过程很容易崩溃,然后又得重头来一遍,各种无意义的操作

因此这个工具,就是为了减少一些重复性,无意义的工作

由于没什么空,临时写的,所以v1,代码比较混乱,结构性,稳定性也相对较差,等有时间会继续开发

github星给的多,我就加紧熬夜!继续开发!!!

二、使用:

使用也相对简单,目前仅支持window平台,直接运行dydebug.bat文件即可。

说出来你可能不信,这种渣东西 都敢放出来

欢迎给想法、提bug

工具地址 : 继续阅读“Android逆向小工具-ida_auto_dydebug”

Android逆向小工具–am_auto_start

dex2java3

每次动态调试,都需要敲很多命令,特别是在脱壳的时候,一不小心就得再来一遍

所以想写个自动化脚本,直接一套搞定,但是,其中由于环境的问题,暂时没成功,网上案例并没有适用的,所以,先搞定其中的一个小工具,am-auto-start

这个工具的产生的背景是,每次 adb shell am start -D -n 包名/类名 找包名和类名,也是很苦恼,我是习惯命令敲完就关掉 [捂脸][摆手]

所以这个工具实现的功能就是,am-auto-start.py  apk , 即可启动MainActivity

Version 1仅适用于启动launch-activity

之后的版本,如果有需求,会更新到可以自定义启动各种组件。

github :   继续阅读“Android逆向小工具–am_auto_start”