回归最本质的信息安全

基于系统调用日志的 Android 恶意软件检测方法

2017年10月6日发布

51,647
0
7

导语:利用动态分析方法可以监视android程序的运行,如网络访问、通话记录和发送的消息。由于动态分析是在沙箱环境中进行的,所以该方法可以以防止恶意软件对实际运行造成损害。

timg.jpg

所谓的恶意软件就是旨在歪曲和阻碍移动或计算机应用程序的软件,从而收集重要信息,执行恶意操作。这些恶意的操作包括获取隐私信息,窃取有价值的信息,显示钓鱼广告,并监视用户的活动,下图就是恶意软件的不同分类。

1.png

现如今,计算机安全已经上升到了国家安全的层面,但随着移动终端的出现,移动安全也同样值得关注。目前的手机市场,采用android应用程序运行的占了大多数。所以攻击者对android应用程序的攻击主要是从以下两方面进行的:

首先,对于个人用户来说,攻击者利用智能手机上的android应用程序,来实时获取用户设备上的图片、联系人、电子邮件和其他隐私信息。

其次,对于组织来说,攻击者可以利用android应用程序监测组织的IT基础设施。

目前研究人员已经建立了两种恶意软件检测方法。第一种是静态分析,静态分析中使用的一些技术包括反向编译、模式匹配和解密等。但是对于未知的应用程序来说,它们可以通过混淆和加密来获得不同的签名,因此静态分析通常无法识别未知的恶意软件。

因此,本文会采用第二种方法,即动态分析方法来检测android恶意软件。利用动态分析方法可以监视android程序的运行,如网络访问、通话记录和发送的消息。由于动态分析是在沙箱环境中进行的,所以该方法可以以防止恶意软件对实际运行造成损害。许多这样的沙箱都是虚拟的系统,在分析完成后可以恢复到原始状态。

新检测方法的出现

由于各种源码的开放,大多数恶意应用程序都想在android手机上攻城略地一番,最常见的就是攻击者可以很容易地将自己的代码嵌入到一个良性应用程序的代码中。所以可以很容易理解,为什么近年来,攻击android应用程序的恶意软件会以惊人的速度增长。在这种情况下,android设备的安全性和这些设备所允许访问的资源都处于危险之中。此外,由于android设备的移动性质,android本身具有一些明显的特点和局限性。因此,用常规方法检测恶意软件就变得很麻烦并且低效,所以,这就需要开发一种新的、有效的方法来检测恶意应用程序。虽然这些新方法目前还是研究之中,但很明显有些已经初见端倪。

相关的研究工作

在恶意软件检测领域有很多研究方向,比如,在“Deep4MalDroid:基于Linux内核系统调用图的Android恶意软件检测的深度学习框架”中,就有研究者提出了一种新的动态分析方法,名为组件遍历,它可以自动执行每个给定的Android应用程序的代码程序。在提取的Linux内核系统调用的基础上,这些被分析的代码程序又进一步构建加权有向图(weighted directed graphs),然后再在基于加权有向图的基础上应用深度学习框架。最后,在模拟器中运行Android应用程序,并从这些分析的数据中提取系统调用。然而,由于在该方法中,Android应用程序是在仿真器中执行的,并且从该数据中提取系统调用。所以在这种情况下,运行在仿真器上的未知恶意软件功能可能回去发生改变,并不能判断出它们是否在真实环境中也会发生。因此,这种方法无法检测到某些恶意软件的。

而在“基于AndroidManifest文件的恶意软件检测方法”中,研究人员会从AndroidManifest文件中提取了一个特征向量,该文件组合了Android应用程序的权限信息和组件信息。结合朴素贝叶斯分类算法,研究人员提出了一种基于AndroidManifest文件信息的恶意应用检测方法。这种方法是一种静态的恶意软件检测方法,这意味着应用程序在运行时,是不会被执行分析的。因此,它无法检测到任何能够重新封装和混淆的未知恶意软件,如此以来,未知恶意软件就可以绕过内部防御机制。

在“ANASTASIA:使用静态分析应用程序的android恶意软件检测”方法中,研究者提出了一个通过静态分析应用程序来检测恶意Android应用程序的思路。ANASTASIA的思路就是对安全行为进行一个完整的覆盖,它利用静态提取的特性,从应用程序的各种安全行为中提取了大量相关特征。由于这是一种静态方法,因此它无法保护设备不受零日攻击和未知恶意软件的攻击。

在“AntiWare:基于机器学习方法和官方市场元数据的自动化Android恶意软件检测工具”方法中,研究者使用了一种自动化的基于安全特征的静态分析方法来检测Android设备上的恶意移动应用。该方法采用了应用元数据和朴素贝叶斯算法进行恶意软件检测。这种方法是恶意软件检测的一种静态方法,因此它无法保护设备不受未知恶意软件的影响,这些恶意软件可以重写自己的代码来改变自己的恶意特征。

基于系统调用日志的Android恶意软件检测方法

鉴于以上方法都存在着不同程度的短板,因此我自己开发了一个新的检测方法。该方法分为三个步骤:

第一步是系统调用日志的生成。

第二步是利用卡方检验。

第三步是创建数据集。

目前我已经成功地把66个应用程序的系统调用日志信息添加到了该数据集中,且收集了每个应用程序的19个安全特性。我相信,这种大量的安全特性组合可以让检测精度到达最高的准确度。由于第三步是在机器学习算法上实现的数据集。所以,我有必要说一下三种常用的机器学习方法,它们分别是朴素贝叶斯算法、随机森林算法和随机梯度下降算法。最后通过怀卡托智能分析环境得出结果。另外,朴素贝叶斯算法和随机森林算法还可以在C#和Python中实现。

译者注:怀卡托智能分析环境(Waikato Environment for Knowledge Analysis,WEKA)是一个开放源码的数据挖掘软件。

系统调用日志的生成

首先,我会安装一个Android模拟器Genymotion,构建一个沙箱,让每个应用程序都在其中运行,这样做是为了防止我自己的设备受到恶意应用程序的攻击。每个应用程序会运行大约5分钟以观察其行为,如此一来,这将产生一个使用“strace”命令生成的系统调用日志。系统调用日志的所有代码都是使用python脚本执行的,下图显示了日志生成的整个流程。

2.png

利用卡方检验

一旦我有了每个应用程序的系统调用日志信息,我就可以开始创建数据集了。由系统调用信息组成的文件是这样创建的:对于每个应用程序来说,系统调用的存在或缺失是由1/0表示的。使用下图中提到的算法,我可以将上述过程自动化。这个算法的复杂度是O(n),其中n是字符的数目。

译者注:O(n)也是差不多的意思,也就是说n很大的时候复杂度约等于Cn,C是某个常数,下图是生成系统调用的二进制输出算法。

3.png

在创建了数据集之后,为了提高正确识别实例的准确性,我通过使用卡方检验算法来筛选第一步提取的系统调用日志,下图清楚地说明了我用来实现卡方检验过滤机制的算法。

4.png

结果,我选择了前18个特征来作为调用日志,并将恶意软件检测计数功能也添加了进来。这就构成了一个完整的数据集,该数据集包括了66个应用程序和19个特性。

机器学习算法

在创建数据集之后,我会提供三个算法来进行分析。第一个算法是朴素贝叶斯算法,它是用C语言来实现的。我会首先将训练集(刚创建的数据集的一部分)存储在Microsoft Access(用于数据库连接和存储)。其余部分存储在另一个表中,以提高获得未知样本的准确性。在此之后,我会根据每个特性以及计算出来的平均值和方差构建一个目标标识符表,用于对未知应用程序进行识别、分类。而在另一个表中,其每一行都代表一个未知样本,下图演示了朴素贝叶斯目标标识符列表生成的整个流程。

5.png

然后将相同的数据集利用第二个分类算法即随机森林算法再进行一次数据集的创建,在创建数据集之后,可以将其划分为随机子集。然后为每个子集创建决策树。根据创建的结果,这些决策树被重新分组。为了将未知样本标识为良性或恶意,我使用了最多树的组。下图显示了随机森林算法的整个流程。

6.png

由于在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练。所以,我会将数据集利用梯度下降法进行第三次创建。

三次算法的结果如下:

朴素贝叶斯检验取得了93.75%的准确率;

随机森林标检验取得93.84%的准确率;

随机梯度下降算法达到95.5%的准确率。

这些结果会首先在怀卡托智能分析环境中获得,然后再在C#和Python语言环境中进行检验。

检测结果对比

在这些算法的数据集实现后,我就可以计算出相应的准确率(Precision)、召回率(Recall)、F值(F-Measure)等。下表显示了计算所有值的方法。

7.png

下表是利用朴素贝叶斯算法进行的计算。

8.png

下表是利用随机森林算法进行的计算。

9.png

下表是随机梯度下降算法进行的计算。

10.png

我将会使用三种不同的算法对数据集进行创建,并分别计算其精度,下图显示了这些算法之间的比较。从下图中,我可以清楚地证明数据集的检测精度,因为所有的算法都能够识别相当数量的实例。

11.png

从三种算法的高准确度可以看出,我的系统调用日志数据集的收集方法是合理的。

结论

本文定义了一个使用系统调用日志信息创建数据集的方法,然后利用朴素贝叶斯算法、随机森林算法和随机梯度下降算法对数据集进行比较,从而对检测结果进行分析。我所使用算法的主要特点包括:

首先,系统调用日志是在内核层工作的,利用系统调用日志可以发现应用程序的恶意行为。其次,整个过程是自动且高效的。

最后,通过使用卡方检验算法,提高了数据集的质量。

这样,我就得到的数据集的就很精确。该方法未来可以用于识别这66个应用程序的所有变异版本,即使这些应用程序能够识别沙箱环境并做出相应的反侦察行为,利用该方法也能检测到。

本文翻译自https://arxiv.org/ftp/arxiv/papers/1709/1709.08805.pdf,如若转载,请注明原文地址: http://www.4hou.com/technology/7856.html

点赞 7
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

luochicun

luochicun

这个人很懒,什么也没留下

发私信

发表评论