-
-
[翻译]基于资源消耗的Android恶意代码家族分类(增订版)【上】
-
发表于: 2017-11-2 22:14 4299
-
现在绝大多数的移动恶意软件都是针对Android设备的。这推动了过去几年Android恶意软件分析的研究工作。恶意软件分析的一个重要任务是将恶意软件样本分类到已知的家族中。众所周知,静态分析恶意软件缺乏针对改变恶意软件的静态特性的技术(e.g.代码混淆),而动态分析已被证明是有效的对抗这种技术的。据我们所知,Android上的恶意软件家族分类完全基于动态分析的,最著名的是droidscribe。关于DroidScribe,我们的方法更容易重现。我们的方法只使用公开可用的工具,不需要对模拟环境或Android操作系统进行任何修改,并且可以从物理设备收集数据。后者是一个关键因素,因为现代移动恶意软件可以检测模拟环境并隐藏其恶意行为。我们的方法依赖于从文件系统中获得的资源消耗度量。特点是通过消除趋势波动分析和相关提取。最后,利用支持向量机对恶意软件进行分类。我们提供从数据的恶意软件样本实验评估,我们得到了82%的分类精度,证明了我们的方法达到的精度媲美droidscribe。此外,我们还开发了公开可用的软件,以减轻结果的重复性。
现在绝大多数的移动恶意软件都是针对Android设备的。这推动了过去几年Android恶意软件分析的研究工作。恶意软件分析的一个重要任务是将恶意软件样本分类到已知的家族中。众所周知,静态分析恶意软件缺乏针对改变恶意软件的静态特性的技术(e.g.代码混淆),而动态分析已被证明是有效的对抗这种技术的。据我们所知,Android上的恶意软件家族分类完全基于动态分析的,最著名的是droidscribe。关于DroidScribe,我们的方法更容易重现。我们的方法只使用公开可用的工具,不需要对模拟环境或Android操作系统进行任何修改,并且可以从物理设备收集数据。后者是一个关键因素,因为现代移动恶意软件可以检测模拟环境并隐藏其恶意行为。我们的方法依赖于从文件系统中获得的资源消耗度量。特点是通过消除趋势波动分析和相关提取。最后,利用支持向量机对恶意软件进行分类。我们提供从数据的恶意软件样本实验评估,我们得到了82%的分类精度,证明了我们的方法达到的精度媲美droidscribe。此外,我们还开发了公开可用的软件,以减轻结果的重复性。
1.介绍
智能手机销量的持续上涨,在我们的日常生活中普遍的增长促进了移动设备的恶意软件的发展,Android OS是扩散平台的移动设备[ 7 ],它的源代码是公开的,而且,大多数安卓设备仍然运行于versions1。这些因素结合在一起使得Android智能手机对几个恶意软件的作者有吸引力[ 25 ]。由于这些原因,大多数移动恶意软件的目的是攻击Android。According to F-Secure, 79% of mobile malware in 2013 were designed to attack this OS [6]. 仅在2015,赛门铁克观察到恶意Android增加230%。与去年有关的应用程序,并注意到移动恶意软件利用逃税技术的增加,以避免基于签名的安全产品的检测[ 23 ]。这些技术包括移动应用程序混淆和虚拟环境检测。特别是,采用混淆技术促进了已经变体的传播。已知恶意软件,2015的增长率为40%。混淆技术修改应用程序的包和/或源代码,保存应用程序的原始功能,并允许恶意软件作者创建语义相似的应用,从对方的语法结构不同(如相同的木马程序可以是完全不同的两个有害软件的幌子下分布式)。结合先进的混淆技术把反恶意软件产品的危害从95%降到40% [ 19 ]。
针对恶意软件的发展,恶意软件分析领域也沿着不同的方向进化[ 13 ]。除了恶意软件检测,还需要分类软件样本是良性的还是恶意的,其他相关的研究方向也出现了。其中最有趣的是恶意软件家族分类,包括把恶意软件分到不同的家族里。属于同一家族的样品表现出类似的行为,比如,利用相同的漏洞并且有相同的目标,因此家族分类可以用来快速检查一个应用程序是已知的另一种的一个变种。而赛门铁克注册的Android移动恶意软件的变种增长显著,他们还没有辨认在新发现的恶意软件的数量相同的趋势:只增加6%,2015以上前一年,2016年度只有1%个[ 24 ]。这样的趋势建议在创新明显放缓移动恶意软件的发展,它可以利用通过与家庭的使用分类分析技术。事实上,自动的恶意软件家族分类—技术允许恶意软件分析师及时了解无论是恶意应用程序可能是一个变种已知的恶意软件(即,它属于一个已知的家庭)或者如果是一个新的恶意软件(也就是说)。不属于任何已知的家庭)。这使得分析师专注于真正全新的恶意应用程序只,不浪费时间和精力的样品类似于在过去已经分析了别人。鉴于新的移动恶意软件的大量产生一天,使用家庭分类过滤掉什么应用程序应该得到更详细的分析成为基础。在实践中,恶意软件分析可以执行两不同类型的分析:静态和动态。静态二值得注意的是,在家庭中对恶意软件进行分类是不同的。从它们的类型分类(例如滴管或木马):作为一个例子,可以有不同的家庭滴管执行相同的一般任务(即,安装实际的任务)目标系统中的恶意软件),但以不同的方式(例如,你可以从网上下载恶意软件,另一个可以包含恶意负载并在需要时解密),因此,他们的行为会正确地产生不同的结果。方法不需要在分析和揭示所有样本的执行路径。然而,它们不是很有效。反混淆技术,广泛在[ 19 ]的证明,而无法跟踪在运行时产生的网络流量和修改—FIC的痕迹[ 25 ]。动态技术克服这些在受控环境中执行示例的局限性。
本文主要研究恶意代码家族分类。我们提出了一种依赖于动态分析的方法。还提出了一种实现它的软件架构。这个体系结构自动执行在沙箱环境中的Android应用程序,生成模拟用户输入。在每一次运行时,它从proc文件系统和进程,通过趋势波动分析(DFA)[ 18 ]和皮尔森相关[ 16 ]。在写作的时候,最重要的Android恶意软件家族分类工作,在动态分析的基础上,是droidscribe [ 5 ]。我们比较我们的方法,droidscribe进行广泛的实验评价在同一数据集为droidscribe。结果表明,我们的方法达到了相当的精度,但是(i)易于复制和(ii)收集的数据可以聚集在物理装置上。事实上,我们的方法只使用公开可用的工具,不需要对模拟环境的任何修改或Android操作系统。相反,droidscribe依靠copperdroid,这是不公开的,它是唯一的。通过联机服务访问。然而,它不适合批量实验,因为它需要在输入中只使用一个示例和提交过程不能自动的,因为它需要通过一个反机器人回避反应测验。在写作时,服务不分析自七月入队程序2015。此外,不同于copperdroid,我们方法可以收集物理设备上的数据好.这是一个关键因素,因为现代移动恶意软件可以检测模拟环境并隐藏他们的恶意行为。据我们所知我们的方法是第一个只基于资源的方法。消费度量与DFA [ 25 ]。
本文的剩下部分结构结构是这样的,第2部分讨论了相关的工作。第3部分提出了方法论和架构。使用DroidScribe做的实验性的评估和对比放到第4部分,第5部分呢,总结了这个论文,描述了接下来要做的工作。
安卓恶意软件家族分类在字面上是一个广为人知的问题,而且考虑到最后的分析的客观性,它也迥异于恶意软件的检测。这大大影响了采用什么具体的技术实现,尽管它们都有大体相似的思路。例如,虽然二进制分类器通常用于恶意软件检测(比如,一个样本是良性的或恶意的),但多类分类器通常用于家族分类(即一个家庭的一个类),但所提取的特征集可以非常相似。据我们所知,我们是第一个利用资源消耗度量来解决家家族分类问题的。
Karbab等人使用动态分析和自然语言处理(NLP)来检测和分类安卓恶意程序,在一个沙盒中执行移动app生成一份他们行为的报告,后期用NLP技术处理。通过这些技术,作者能够生成签名,来标识和分类恶意app。Reina等人实现了CopperDroid,这是一个执行安卓app并收集系统调用信息的框架。CopperDroid在Android上的恶意软件家族的分类工作最为著名,纯粹基于机器学习的动态分析,这和我们的目标一致。
和我们的成果相似,Shehu等人根据资源使用情况来给每个分析的移动app创建一个指纹,然而,他们解决的是一个不同的问题,即检测混淆恶意软件变种。此外,他们的方法是在一个物理设备上的七个恶意程序的小集合中手动测试的。与此相反,在本文中,我们将整个恶意软件的家族分类过程自动化并且在一个更大的数据集上测试我们的结果。
和我们的成果相似,Shehu等人根据资源使用情况来给每个分析的移动app创建一个指纹,然而,他们解决的是一个不同的问题,即检测混淆恶意软件变种。此外,他们的方法是在一个物理设备上的七个恶意程序的小集合中手动测试的。与此相反,在本文中,我们将整个恶意软件的家族分类过程自动化并且在一个更大的数据集上测试我们的结果。
其他的研究利用了资源消耗指标或能耗来检测Android恶意软件,Liu等人,kim等人看移动设备的耗电来检测恶意软件,总之,这些研究都是基于已经淘汰的移动平台,而且这种类型的分析只能在设备上测量能耗指标,在模拟器上是没有意义的。Amos等人实现一个自动执行框架来收集资源消耗相关特性来满足不同的机器学习算法。他们评估准确性的测试集只有47个应用程序。Canfora等人利用资源消耗指标检测Android恶意软件。然而,这些作品不解决家族分类。
终于,Mutti等人开发了BareDroid,这是一个高效的Android设备上的恶意软件分析系统。设备分析在对模拟器逃脱技术有很大的优势但更耗时,因为物理设备需要更多的时间被重置到一个干净的状态相对于对一个模拟器。作者实验显示,BareDroid允许这段时间减少4.44因素。
三.方法论
正如已经讨论的,本文的重点是恶意软件家族分类。也就是说,任务是输入恶意软件样本,然后对其进行分类。我们假设Android恶意软件的家庭的集合F是固定的和先验已知的。
正如已经讨论的,本文的重点是恶意软件家族分类。也就是说,任务是输入恶意软件样本,然后对其进行分类。我们假设Android恶意软件的家庭的集合F是固定的和先验已知的。
我们的方法可以概括如下。在先前的训练阶段,我们收集了一组已知的恶意软件M,其中每个样本已经被标记为它所属的家族。F.的每个成员在我们的实验中,我们采用drebin集[ 2 ]。每个样品的∈我们跑到控制仿真环境和收集一些运行指标随着时间的推移,所以
为了获得每个度量的时间序列。特别是,我们的方法只依赖于监控资源消耗度量,这些度量可以从程序文件系统中获得。然后,我们处理这些度量。
以便以后详细提取指纹。最后,我们用生成的指纹集对分类器进行训练(用相应的家庭标记)。每当输入一个新的恶意软件s s时,我们将s运行到我们控制的模拟环境中。
我们建立指纹。然后,我们用新生成的指纹来填充分类器,然后再输出s族。
我们的方法可以概括如下。在先前的训练阶段,我们收集了一组已知的恶意软件M,其中每个样本已经被标记为它所属的家族。F.的每个成员在我们的实验中,我们采用drebin集[ 2 ]。每个样品的∈我们跑到控制仿真环境和收集一些运行指标随着时间的推移,所以
为了获得每个度量的时间序列。特别是,我们的方法只依赖于监控资源消耗度量,这些度量可以从程序文件系统中获得。然后,我们处理这些度量。
以便以后详细提取指纹。最后,我们用生成的指纹集对分类器进行训练(用相应的家庭标记)。每当输入一个新的恶意软件s s时,我们将s运行到我们控制的模拟环境中。
我们建立指纹。然后,我们用新生成的指纹来填充分类器,然后再输出s族。
3.1。指纹的生成
对于一个恶意软件样本S,指纹生成的第一阶段是在我们控制的模拟环境中执行s。在执行过程中,我们使用预设的输入事件来激发恶意软件。输入事件是由我们的仿真程序自动模拟的。(参见第3.3部分)。为了使输入事件在不同执行中保持一致,我们总是生成相同的随机事件序列。在我们监控并收集从proc文件系统执行的在采样间隔τ。在我们的实验中,我们监测到n = 26的指标在4赫兹的采样频率(τ= 0.25s)。我们监视一组系统范围和特定于应用程序的度量,包括CPU、内存和网络使用。因此,在执行结束时,我们获得一个时间。
系列XI(t)为每个XI单位。每次执行后,仿真器都会重置为原始映像,以便每个新的执行都在同一个运行时环境中启动。然后,对采集到的时间序列进行处理,提取特征向量F=G(X1(t)),。..,xn(t))=(F1,。..特征是恶意软件家族(G是特征提取算法)。特征向量F表示恶意软件样本的指纹。在指纹识别阶段,在指纹中包含一组适当的特征,详见第3.2节。
对于一个恶意软件样本S,指纹生成的第一阶段是在我们控制的模拟环境中执行s。在执行过程中,我们使用预设的输入事件来激发恶意软件。输入事件是由我们的仿真程序自动模拟的。(参见第3.3部分)。为了使输入事件在不同执行中保持一致,我们总是生成相同的随机事件序列。在我们监控并收集从proc文件系统执行的在采样间隔τ。在我们的实验中,我们监测到n = 26的指标在4赫兹的采样频率(τ= 0.25s)。我们监视一组系统范围和特定于应用程序的度量,包括CPU、内存和网络使用。因此,在执行结束时,我们获得一个时间。
系列XI(t)为每个XI单位。每次执行后,仿真器都会重置为原始映像,以便每个新的执行都在同一个运行时环境中启动。然后,对采集到的时间序列进行处理,提取特征向量F=G(X1(t)),。..,xn(t))=(F1,。..特征是恶意软件家族(G是特征提取算法)。特征向量F表示恶意软件样本的指纹。在指纹识别阶段,在指纹中包含一组适当的特征,详见第3.2节。
3.2 分类和训练
为了对恶意软件家族进行分类,我们给定一个能计算前面章节中所描述的指纹的向量机(SVM)分类器。SVM必须在一组样本指纹上训练过后,再用相应正确的恶意软件家族来标记。
训练阶段有两个主要目的:(T1)确定一组要包含在指纹中的特征,还有(T2)训练分类器。第一个任务定义分类器的特征空间。确定适当的特征集是正确分类的基础。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: