DroidRanger论文阅读笔记

NCSU的蒋旭宪教授团队去年在Android恶意代码发现上做出了有目共睹的成绩。昨天看到论文“Hey, You, Get off of My Market: Detecting Malicious Apps in Official and Alternative Android Markets”已经在其首页上公开,仔细阅读了一遍。做笔记如下。

文章主要介绍了名为DroidRanger的系统,用于从官方市场、第三方市场抓取和发现Android中已知家族和未知家族。

已知家族的策略是:

1. 基于已知家族所需必要权限,对所有灰名单样本过滤。例如,bgserv需要internet和收发短信权限,这样能过滤掉98.42%的灰名单样本。但也有例外,比如ddlight的过滤效果不好,则加上一个特定intent的receiver的规则来过滤;basebridge没有特殊权限,则用native代码来过滤。这样,每个家族的规则都能将灰名单样本过滤到5%以下。

2. 基于行为的特征匹配。包括三个方面的行为特征:manifest里注册的组件及其intent;特定组件(例如接收短信的receciver)的代码解析,提取API调用序列(例如invoke了abortBroadcast);代码结构布局(即Java的树形结构源文件,但没想明白在这里怎么提取特征)。

在已知方面,他们基于10个已知家族(每个家族2个样本)提取了权限过滤规则和行为检测规则,在官方市场和第三方市场的20万个灰名单样本中发现这10个家族共119个新样本。

在未知家族检测上,策略是:

1. 基于启发式特征的过滤。这里的启发式特征并不是统一的单点特征集,而是真正体现样本潜在行为的复杂特征。例如,样本使用DexClassLoader加载从远程下载的jar或dex代码(但大部分是第三方广告,用白名单过滤掉);样本在非默认路径lib/armeabi加载执行本地native code(常用于执行提权代码)。在这种启发式特征过滤下,把灰名单样本数量过滤到了1%以下。

2. 基于动态运行的行为监控。主要在两个层面做,对动态加载的jar和dex,记录其API调用及参数,例如sendTextMessage及其参数;对动态加载的native code,记录其发生的敏感系统调用,例如sys_mount(用于remount文件系统,常用于提权后写入系统分区的自我保护)。最后人工对这些日志进行分析。

在未知上,该团队由此发现Plankton(第一个DexClassLoader的恶意代码,官方市场,远控)和DroidKungfu(使用大量本地提权工具)。

从后续情况看,AnserverB应该也是被这种启发式规则触发而发现的。

论文提到还可以有其它启发式的特征,例如向高额扣费号码发送短信;将短信内容当成控制指令等。去年下半年该团队发现的很多新家族均有短信扣费和拦截的特点,猜测确实使用了这些特征。

关于已知检测的漏报问题,论文用contagio的公开样本进行了测试,称无漏报。

文中还提供了其他数据,例如对20万个样本的处理速度等。

总的来看,论文对细节公开的非常充分,取得的效果也很明显,值得我们学习。

DroidRanger论文阅读笔记》上有3条评论

  1. semigod

    您好,关于行为特征匹配时的,API调用序列的提取,不知道您有什么看法,有什么方法可以实现这种提取?

    回复
    1. Claud 文章作者

      hi, 在PC恶意代码检测上,已经有了很多这方面的研究。建议在google scholar上检索一下“malware api sequence”

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注