An Investigation into the Use of Common Libraries in Android Apps

背景:

本文发表在2016年的International Conference on Software Analysis, Evolution, and Reengineering(不会翻译)上,仍然是对android应用中的库进行分析。

出处:

2016 IEEE 23rd International Conference on Software Analysis, Evoluti

作者:

Li Li, Tegawende ́ F. Bissyande ́, Jacques Klein, Yves Le Traon


概述

本文针对android app中使用的库及第三方ad 库进行研究,通过大量app筛选出最为常用的库,调查这些库的应用范围,在app中所占的代码比例。此外还对这些库进行基于经验的研究(empirical investigation,在文中应该是指使用机器学习的方法)。

研究成果

自动化的找到在应用市场范围内的app常用的库(common lib),并通过判别性学习将常用的lib标记为ad lib。对常用库的使用进行研究,找出正常app与恶意app在库试用上的明显区别。建立全面的android lib及ad lib的白名单。

具体步骤


An Investigation into the Use of Common Libraries in Android Apps_第1张图片

1.在大量样本中找到common lib

在lib的提取中遵循以下原则:

1)只考虑名字有三个字段及以上的包(XXX.XXX.XXX)

2)提取android.support开头的包(1,2不冲突)

2.对common lib的认证

1)筛选出包名在10个app中出现过的包

2)将经过混淆的包去除

3)将包名存在重叠的包去掉(com.sansec & com.sansec.AESlib, 去除前者)

4)对包进行相似度比较来判别common lib在各app中是否相同(成对比较app,对包中的method进行相似度比较,使用Jimple code)

(使用Dexpler将Smali转换为Jimple,再使用Soot进行相似度比较)

3.识别ad lib

1)关键字匹配(匹配“ad”并去除干扰项)

2)根据ad lib的特征

ad lib需要的一些权限,组件声明,视图声明(ad可视化)

经验性研究

通过VirusTotal找出无害的和恶意的app各10000个,对其中所包含的common lib数量进行分析,并进行Mann-Whitney-Wilcoxon(MWW) test 。结果显示无害的app比恶意app所使用的common lib平均少一个。且恶意app所含的ad lib多于正常app。

此外,本文尝试使用common lib对软件进行分类(使用ML进行恶意软件的检测,文中使用随机森林)。通过common lib的包名作为app的特征向量。


总结

本文主要目的是对common lib及ad lib进行提取和分析,并建立两个白名单。但是其中存在一些问题,在文中提到该名单的建立是基于lib不被开发者更改这一假设。所以该名单本身没有考虑lib被篡改等问题。并且只是因为lib常用就将其加入whitelist不太合适,且没有考虑其更新问题。

文中针对method的相似度计算是值得借鉴的。本中使用common lib作为特征进行机器学习并识别malware可以作为参考

你可能感兴趣的:(An Investigation into the Use of Common Libraries in Android Apps)