基于行为特征值序列匹配的Android恶意应用检测系统计算机分析

论文价格:免费 论文用途:其他 编辑:硕博论文网 点击次数:
论文字数:41244 论文编号:sb2020061612152031596 日期:2020-06-18 来源:硕博论文网
本文是一篇计算机论文,本文以行为特征值序列匹配的方法作为理论依据,实现了一个 C/S 检测系统。该系统分为客户端与服务器两个主要部分。客户端的是一个 Android 沙箱系统,该系统一共有远程注入模块,Hook 模块,动态检测模块,自动化模拟模块 4 个模块,用于监听并收集检测对象的在用户使用检测对象时产生的行为,并将收集到的行为排列组合为行为特征值序列,并将其上传到服务器端。而服务器端则有数据库模块,数据预处理模块,数据分析模块 3 个模块。在服务器端实现的功能为,从恶意样本中得到每种恶意行为类型对应的恶意行为特征值序列表,并且将此表中的恶意行为特征值序列与客户端上传到检测对象的行为特征值序列进行匹配比较,并将匹配结果输出打印,得到最终的检测结果。

1绪论

1.1  研究背景和意义
在移动领域中,Android 既可以指公司、操作系统,也可以指开源项目和开发者社区,一些人甚至把移动设备称为 Android[1]。现今,Android 已经成为世界上最流行的移动操作系统。从国际数据公司[2](IDC)的官方网站中的可以得知全球手机系统的追踪数据。由图可以得知,2019 年 Android 系统的智能手机的市场占有率的预测可以高达 86.7%,由此图可以得知 Android 占智能手机中的绝大多数。
图 1-1  世界智能手机系统市场占有率预测
从图 1-1 中可以得出,Android 系统占智能手机系统中的绝大多数。而如今人们的生活工作大部分都离不开智能手机。因此 Android 应用程序的发展也是拥有很大的需求,这种大量需求的 Android 应用软件导致了 Android 系统成为了恶意应用的主要目标群体[3][4]。从个人手机中窃取重要信息似乎是 Android恶意应用最大的目标,从 McAfee Labs 的威胁报告[5]当中,有着最近几年的新移动恶意应用软件与全球移动恶意软件感染率的数据。
..........................

1.2  研究现状
由于 Android 安全问题的受重视程度越来越高,因此各种检测 Android 恶意应用研究也是越来越多。现在就以元数据检测、静态检测、动态检测、混合检测作为检测方法分类,来对现今已有的 Android 恶意应用的检测方法进行简单介绍与分析。
1.2.1  元数据检测
元数据的内容包括了应用程序描述、开发者信息、开发者与应用的依赖关系以及其他值得注意的属性[26]。因为分析 Android 应用的初步阶段时,需要对分析目标进行基本数据的收集,对分析目标有一个大致的了解。假设刚开始对于分析目标应用几乎是一无所知(一般这种情况会被成为“零知识”或者是“黑盒”方法),那么通过分析元数据了解应用是非常重要的一步[27-29]。因为检测者可以通过元数据来决定在后续阶段利用哪些技术,另外这一阶段也可能会揭露出一些安全问题,比如利用了带有已知安全漏洞的代码库或 web 服务[30]。   例如,通过分析元数据,可以大致了解应用的目标、开发者、开发历史或者使用者的评论。假设这个开发者所开发的其他多个应用都存在许多安全漏洞的记录,那么这个应用也很可能存在安全问题[31][32]。
1.2.2  静态检测
静态检测是在不直接运行应用的情况下,分析应用及其支持组件中的代码和数据[33][34]。例如硬编码 URI、认证凭据、密钥等关键字符串。Android 恶意应用的静态分析的目标主要为 APK 文件(Android application package file),而 Apktool工具常用于 APK 文件的解包,解包后的 APK 文件包含了资源文件,smali 格式的代码(Dalvik 可执行字节码会被 apktool 反编译一种被成为 smali 的中间格式)[35-37]。使用 Ded 或者 Dex2Jar 工具也可获得 Java 源文件[38]。通过分析资源文件,代码文件中的关键字符串、敏感 API 的调用的信息来判断程序中是否存在恶意行为[39]。例如部分攻击者会将服务器的网络地址硬编码在资源文件中或者是代码文件中,因此对 APK 中敏感字符串的提取和检测也是静态检测的重要方法之一[40-42]。
...............................

2  相关知识

2.1 Android 系统基本架构
Android 的总体架构主要是由 5 个主要的层次上的组件构成[68][69]。如图 2-1所示,这 5 层分别是:Android 应用层、Android 框架层、Dalvik 虚拟机层、用户空间原生代码层和 Linux 内核层。
图 2-1 Android 系统架构
Android 应用层允许开发者无须修改底层代码就对设备的功能进行拓展和提升。主要包括了出厂时设备自带的应用、用户自主安装的应用和应用商店中的应用[70]。
Android 框架层则是提供了大量的 API 给开发者访问,开发者可通过这些 API来访问 Android 设备中的各种必须设备的 API,通过访问这些 API,开发者可以执行通用任务,比如访问共享数据储存、在应用组件间传递信息等[71]。
..............................

2.2 Android 系统安全机制
 安全边界,在 Android 系统中分隔出了不同信任级别的特殊区域。例如Android 系统中有内核空间与用户空间之间的安全边界[77]。因为内核空间属于高信任级别,所以内核空间中的代码可以访问系统中所有的虚拟内存与物理内存,由此内核空间的代码可以执行底层的操作。而用户空间中的代码则由于属于低信任级别,因此被安全边界限制,不能访问所有的内存空间。
针对安全边界策略的实施,Android 系统使用了权限模型。而 Android 系统中应用了两套相互独立却又能配合的权限模型。分别是 Android 沙箱和 Android权限。
2.2.1Android 沙箱
这一模型是 Android 系统从 Linux 系统中继承的,Linux 内核使用用户和用户组来实施权限控制,用于对文件系统实体和部分 Android 特定资源进行访问控制。而且进程以隔离的用户环境运行,并不能互相干扰,比如访问其他进程的内存空间。因此,Android 沙箱的拥有三大核心机制,分别是:标准的进程隔离、绝大部分的进程拥有唯一的用户 ID(Uesr  Identification,简称 UID),以及文件系统权限的管理。
Android 系统继承了 Linux 的 UID/GID(Group Identification,简称 GID)权限模型[78],但是与原模型不同,Android 系统没有使用 passwd 和 group 文件来存储用户与用户组的认证凭据。Android 定义了从名称到独特标识符 Android ID(简称 AID)的映射表。
Android 权限模型包含了 API 权限、文件系统权限和 IPC 权限。这些权限相对于 Android 沙箱中的权限可称为高级权限[79]。这些高级权限一般会在 APK 中的 AndroidManifest.xml 文 件 中 声 明 , 应 用 的 权 限 由 Android 系 统 中 的PackageManager 在安装时从应用的 AndroidManifest.xml 文件中提取,并且会将权限按照应用存储在/data/system/packages.xml 文件中。然后在应用的进程创建并且实例化时,Android 系统会根据 packages.xml 文件中的清单来向进程授予相应的权限,这种权限申请也被成为静态申请。
................................

3  恶意软件检测方案设计…………………………..15
3.1  检测方案的设计思路…………………………...15
3.2  核心检测算法设计…………………………...17 
4  检测系统的实现……………………………..34
4.1  客户端的实现……………………...34
4.2  服务器端的实现………………………...40
5  实验评估………………………………..45
5.1  实验样本………………………………...45
5.2  实验环境……………………...46

5  实验评估

5.1  实验样本
实验样品主要有 2 个分为两个部分。第一部分是来自数据库中的应用样本表中的应用样品,该表中的实体是带有恶意行为的应用样品,此表中的应用来源主要有 2 种。第一种是从已经的其他应用样品数据库中存储,本文实验所用到的应用是来自 Arp[43]等人所收集的恶意应用样品,样本的数量为 5560 个 Android 恶意应用样本,而且对应每一个恶意样本,带标明了恶意软件家族的名字。对此5560 个应用进行家族统计后,可以得到每一种恶意行为种类(恶意家族)的数量。如表所示。
表 5-1 中是 5560 个样本统计出的所有恶意软件种类,此表涵盖的恶意应用种类属于比较全面。作为基础的恶意行为表。其中的 id 作为恶意行为表中的实体的 id 属性,实验中的恶意行为特征表中的所有基础的恶意行为的行为特征值序列皆由以上的应用样本利用最长子序列算法计算得出。
表 5-1  恶意应用样本所统计的恶意应用种类
............................

6  总结与展望

6.1  论文总结
由于 Android 系统智能手机的普及,导致越来越多的 Android 的恶意应用的出现,对 Android 智能手机的使用者造成威胁,潜在损害其利益的风险。虽然现今有很多成熟的检测系统,但是 Android 恶意应用的反检测能力也越来越强,只利用静态检测已经无法准确地检测出恶意软件。
(1)本文针对这一现状,提出了一个能够对 Android 应用进行动态检测的方法。本文提出的方法是利用行为特征值序列匹配的方法来进行检测,此方法首先是利用已知的恶意应用样本获取恶意行为特征值序列表,再利用 InlineHook 方法与 GotHook 的方法对检测对象进行动态动态监听其行为,用自动化测试工具触发检测对象产生行为,收集到的行为按照时间顺序组合排列为行为特征值序列,并将其上传到服务器,与恶意行为特征值序列表中的各类恶意行为特征值序列进行匹配。匹配成功则可以按照恶意行为特征值序列所映射的恶意行为进行分类,匹配失败则按照行为特征值序列中的特征来判断其是否为可疑应用,若为可疑应用,则需要人工复检;若不是可疑应用,则将其认定为良性应用。
(2)本文以行为特征值序列匹配的方法作为理论依据,实现了一个 C/S 检测系统。该系统分为客户端与服务器两个主要部分。客户端的是一个 Android 沙箱系统,该系统一共有远程注入模块,Hook 模块,动态检测模块,自动化模拟模块 4 个模块,用于监听并收集检测对象的在用户使用检测对象时产生的行为,并将收集到的行为排列组合为行为特征值序列,并将其上传到服务器端。而服务器端则有数据库模块,数据预处理模块,数据分析模块 3 个模块。在服务器端实现的功能为,从恶意样本中得到每种恶意行为类型对应的恶意行为特征值序列表,并且将此表中的恶意行为特征值序列与客户端上传到检测对象的行为特征值序列进行匹配比较,并将匹配结果输出打印,得到最终的检测结果。
参考文献(略)

如果您有论文相关需求,可以通过下面的方式联系我们
点击联系客服
QQ 1429724474 电话 18964107217