Android 平台恶意软件与动态检测技术
2021-11-27何晓霞
何晓霞
(唐山幼儿师范高等专科学校,河北 唐山 063700)
在智能手机领域,Android 系统占比高达86.1%。但是Android 平台在运行期间,也容易受到恶意软件的影响,使得用户隐私数据面临泄露风险。现阶段关于Android 平台恶意软件的检测技术,主要有静态、动态两种,前者又分为语义分析、特征分析等类型,后者则包含了污点跟踪技术、API 调用拦截技术等。从检测速率和识别精度上来看,动态检测技术的优势更加明显。因此,探究动态检测技术在Android 平台恶意软件检测识别上的应用成为当下的热门研究课题。
1 Android 平台恶意软件
现阶段Android 系统运行中较为常见的恶意软件主要分为以下五种:(1)恶意扣费。根据扣费形式的不同,又分为两类,其一是利用用户的手机号码,订购某些服务商提供的收费增值业务;其二是盗用手机支付。两种形式的恶意扣费都会给用户带来经济损失,并且扣费行为较为隐蔽,不会生成电子账单,用户通常难以及时发现。(2)隐私泄露。在用户未授权的情况下,窃取用户的个人隐私,如通讯录、地理位置等。(3)恶意传播。当Android 用户打开某些网站、APP 时,在后台自动下载垃圾软件,或者通过植入广告代码等方式自动播放广告。(4)系统破坏。恶意软件对Android 系统的功能造成破坏,导致系统出现运行卡滞,或无法连接互联网等问题。(5)诱骗欺诈。利用伪基站发送伪造短信,诱导用户点击链接达到牟利目的。
2 Android 平台恶意软件的检测技术
2.1 静态检测技术
该检测方法的优势在于自动对Android 系统进行扫描、检测,即便是软件没有启动,也能够纳入检测范围,从而有效识别隐藏在正常文件中恶意代码。根据检测原理的不同,又分为语义分析、特征分析两种核心技术。前者是在掌握代码执行逻辑的基础上,通过分析代码数据流,实时检测代码中是否存在恶意行为。后者则是基于代码的特征关系,如API 调用序列等,来识别恶意行为。虽然静态检测在识别恶意软件上也表现出较为理想的效果,但是也有一定局限性,例如在代码加密情况下,会导致无法读取代码特征,进而无法准确、全面识别恶意软件。
2.2 动态检测技术
将待测软件在特定环境下启动、运行,在整个运行期间内实现行为监控。若存在恶意行为,会立即捕捉并强制中断行为进程,并针对该恶意行为进行分析、判断,达到保护系统的效果。同样的,动态检测技术中也有两种核心技术,即系统状态对比技术、软件行为监控技术。前者是以初始化的Android 系统状态作为参照,将运行后的状态与参照物进行对比,若两者状态不一致,说明存在异常行为,针对异常行为做进一步分析,可发现恶意软件。后者则是读取软件行为信息,若某软件运行期间未经授权读取通讯录等隐私信息,则及时拦截访问、中断进程,达到监控、保护的目的。
3 Android 平台恶意软件动态检测技术的应用
3.1 基于动态软件胎记相似性的检测方法
3.1.1 API 调用拦截技术
该检测方法的原理是基于API 调用拦截技术,从代码中提取出软件胎记,以此为参照。然后从数据库中调用已知恶意软件的特征信息,将特征信息与软件胎记进行对比,若两者匹配,则成功检测出恶意软件。API 调用拦截流程如图1 所示。
图1 API 调用拦截流程图
3.1.2 软件胎记提取技术
软件胎记是某一款软件独有的特征,由于该特征具有不可复制、不可更改的特性,因此可以将其作为软件识别的标准。但是软件胎记隐藏在计算机程序中,提取难度较大。目前常用的提取技术是选择源代码、汇编指令等作为提取源,利用程序拷贝的方式,选取2 个存在拷贝关系的程序,输入相同的提取源,执行提取操作后,会分别得到两个特征集合。然后再寻找两个特征集合中的相同特征,即为软件胎记。
3.1.3 相似性判定方法
在获取软件胎记后,还要与数据库中已经存储的,已知的恶意软件的软件胎记进行匹配。根据匹配度的高低,可以判断该软件是否包含恶意行为、病毒片段。相似性判定共分为五步:(1)分别读取待检测软件和数据库已知恶意软件的软件胎记。(2)完成加载后,执行匹配程序,寻找两者之间是否存在匹配度较高的相似片段。(3)若无相似片段,在完成遍历后结束检测。若有相似片段,则统计数量,并按照相似度的高低依次排序。(4)重复上述步骤,直到所有片段遍历完成。(5)最后统计结果,结束检测。整个流程如图2 所示。
图2 软件胎记相似性判定流程
3.2 基于污点跟踪技术的检测方法
3.2.1 动态污点分析
前文所述的动态软件胎记相似性检测方法,需要在样本库中存储足够多的恶意软件样本,才能准确判断出被检测软件中的恶意行为。但事实上,恶意软件的更新迭代速度极快,样本库不可能尽数收集这些样本,因此存在一定的局限性。基于此,提出了一种污点跟踪技术。“污点”是在数据或变量的内存空间中,额外添加的标签,将其作为特定识别符号,在检测时只要识别标签就能够完成对特定数据的动态追踪。其操作方法如下:(1)选择需要跟踪的敏感数据,植入污点,完成标记;(2)利用Dalvik虚拟机,将经过标记的污点,生成专门的污点标签;(3)在Dalvik虚拟机内,将污点标签随数据同步传播;(4)选择进程间通信的方式完成嵌入污点数据的传播,数据进入到Binder 库;(5)调用Binder 库内数据,经过Binder 内核模块处理后,完成对样本的检测、分析;(6)根据动态污点分析结果,将待检测样本软件分类后重新存储到Bindser 库内,并在此处完成数据备份;(7)将原数据继续上传至Dalvik 虚拟机处理;(8)从被检测软件中,检测API 敏感数据是否含有污点;(9)若检测到含有污点,则取出污点,完成检测。整个流程如图3 所示。
图3 污点跟踪流程图
3.2.2 行为检测方法
在Android 系统中,部分API 提供的敏感数据,需要被重点标记。特别是设备信息、地理位置等,包含的涉密信息较多,在数据操作时要予以特别关注。含有敏感数据的API 如表1 所示。
表1 敏感数据读取API
对于敏感数据,常用的方法是进行数据加密处理。若检测出该数据带有污点标签,则使用密钥、算法,对其做加密处理。后续要想重新使用该数据,则需要先执行解密操作,从而达到保障数据隐私与安全的效果。
结束语
Android 系统使用期间避免恶意软件访问,是系统开发者和使用者的共同诉求。目前静态检测和动态检测技术,对于识别恶意软件均起到了积极效果,但是综合对比来看,动态检测技术优势更为明显。熟练应用基于动态软件胎记相似性的检测方法、基于污点跟踪技术的检测方法,将有助于恶意软件的及时、准确识别,对采取限制措施和保障系统安全有积极帮助。