背景:
本文发表在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的白名单。
具体步骤

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可以作为参考
网友评论