Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Exploring Reverse Engineering Symptoms in Android Apps

今天要介绍的一篇论文Exploring Reverse Engineering Symptoms in Android apps来自EuroSec’15,是一篇讨论Android app 重打包检测的论文,介绍了一个简单有效的实用小技巧。

摘要

作者提出AndroidSOO,一种轻量级的对Android app重打包的检测方法,依赖于一种叫String Offset Order的,这是个对每个dex文件都有的可提取特征。这种方法异常简单,效果优良。

背景

Android APP重打包现象严重,过去的方法,如RiskRanger,DroidRanger,Drebin,DroidScope,ViewDroid等等都依赖非常复杂的特征提取以及需要使用app互相对比这种非常耗时耗资源的操作。而作者提出一种利用dex文件本身特性的方法来甄别重打包的app,不需要有训练集,标准原始库,也不需要互相对比。

SOO

这个神奇的方法就叫String Offset Order。就是原始dex的常量字符串是按首字节的顺序排序的,而重打包工具则一般为了方便起见,不会按顺序排列,所以只要检测下这个就OK了,对,就是这么简单。

效果

Fig

Fig

Fig

原始程序使用不同的方式打包,然后用apktool dalvik-obfuscator和人工重打包的方式,发现准确率非常高。其中使用AdobeAir的原始程序打包的本身SOO就是随机的,不是排序的。 然后对恶意程序也做了下实验,以重打包著名的恶意程序家族检测出SOO随机性的很高,play上检测出随机的除了Adobe Air以外,57个里面有30被virustotal报毒。 这个方法的效率很高,overhead几乎可以忽略不计。

讨论

如果人工重打包,则无法检测,但是因为这个方法基本没人采用,可以忽略不计。

修改APKTOOL的源代码可以让这个方法失效。