◆张海舰 方 舟
Android 恶意软件检测技术分析和应用研究
◆张海舰 方 舟
(空军预警学院 湖北 430019)
Android 恶意软件检测技术作为系统研发的重要内容,为用户提供了重要的安全保障。本文在研究中主要以 Android 恶意软件检测技术为核心,探究 Android 恶意软件检测技术分析与应用,进而为相关研究人员提供一定的借鉴。
恶意软件;检测技术;分析;应用
Android系统的广泛应用使得Android恶意软件数量逐渐增多,相比于传统木马危害而言,Android平台手机木马可以偷取用户话费,并披露出手机通讯录、短信、照片等用户隐私,进而严重威胁到用户个人信息,同时也给国家安全带来极大的危害。而Android恶意软件检测技术起到了至关重要的作用,保证Android应用程序的安全性。
1.1 系统结构
Android属于移动设备平台,其软件结构主要涉及到操作系统层、Libraries与运行环境、应用程序框架、应用程序等内容。在操作系统层中,作为Android系统底层,操作系统以Linux2.6为内核,移动设备相关程序作为辅助,其中主要涉及到显示驱动、音频驱动、Wi-Fi驱动、键盘驱动、蓝牙驱动、相机驱动、Binder IPC驱动以及能源管理系统等重要内容,相比于其他子系统而言,操作系统层具有极大的开放性,与各个系统分支联系紧密,是保证Android系统操作水平和性能的重要因素。
1.2 程序组件模型
Android系统应用程序以组件应用设计为核心,各个应用程序均由配套组件构成,以实现程序间的组件共享,提高运行效率和运行质量。Android系统程序组件主要包括活动组件、服务组件、数据组件和触发器组建,其中活动组建主要负责和使用者的交流工作,因此成为各个组件中的核心部分。活动组件以界面形式呈现,界面中被设置各个系统控件,在用户进行系统操作的过程中,活动组建可以提供相应的可视化界面,直接关系到用户体验与系统反应能力。
1.3 安全机制
Android系统在实际运行中具有权限分离特性,各个应用程序具备身份识别功能,其识别方式相对独立,相比于Linux权限分离机制而言,Android应用程序间的网络访问与数据管理处于隔离状态,利用系统程序需求进行UID与GID的分配,并在群体身份的基础上,构建权限平台,进而保证Android系统运行中的安全功能。其安全层为以下几点内容:(1)POSIX层。在安装APK格式程序安装的过程中,系统会分配唯一ID,以防止程序运行过程中的相互干扰。从这一层面上看,Android系统会在各个应用程序中建立独立沙箱,其沙箱具有特定的访问权限,与其他程序进行隔离,以实现各个应用程序的有序运行。(2)文件访问控制层。文件访问控制层以Linux权限控制为技术支持,系统会分配各个文件与目录的独立访问权限,稳定和限制访问身份,保证系统信息的安全性。
2.1 Taint Droid
Taint Droid在Android系统中可以对多粒度污点进行跟踪,通过多级变量跟踪对污点进行标记,设置污点标签,在系统运行的过程中,也可以对更新后变量污点进行储存管理,将各个污点根据标签设置划分到Parcel容器中,以Binder通信方式进行传播。在实际运行中,Taint Droid会自动将用户隐私数据转化为污染源,并对其截取加密处理。移动设备中的敏感信息在转化为污点后,污点接口通过的Dalvik虚拟机解释器保存在制定位置,受信程序使用污点信息后会传播数据流,实现多个虚拟机同时运行。同时,在使用污点信息时,Binder库会对感染信息进行合并显示,组成污点数据包,被不受信程序接受,Binder库检索污点标签中可疑的数据,并报告这些可疑事件。
2.2 Monkey
Monkey主要在Android模拟器与设备程序中运行,作为一种命令行工具,主要涉及到基本配置、运行约束和事件核查等测试选项。在实际运行的过程中,Monkey可以形成用户点击、手势等事件伪随机流,进而模拟用户操作对Android系统进行系列安全检测。在Monkey进行系统检测的过程中,会将已生成事件重新传输到Android系统中,并对系统行为开展跟踪检测,若被检测对象接收到失控异常或者形成程序不响应错误提示,Monkey会及时停止传输,并提示报错,进而保证恶意软件检测效果。同时,Monkey操作较为简单,借助命令性或者是脚本启动检测程序,由于Monkey主要运行在Android模拟器与设备程序中,在实际操作过程中要考虑到Monkey运行环境,进入Shell后即可输入Monkey命令,或者在操作命令前设置adbshell,以实现Android恶意软件检测。
2.3 Monkey Runner
从属性方面看,Monkey Runner与Monkey均为自动化检测工具,相比于Monkey而言,Monkey Runner主要借助API定义命令实现在模拟器或者是控制设备中的运行。作为一种开源工具,Monkey Runner提供Python脚本,帮助测试人员控制模拟器与真机,其检测内容主要涉及到安装程序、自动运行、模拟用户点击、截取并保存用户界面图等内容,进而实现对Android应用程序的检测。在实际运行中,Monkey Runner具有很大的检测优势,一方面利用API测试套件,同时连接多个设备与模拟器,根据程序设置对各个测试对象进行检测,进而实现多台设备的控制,提高恶意软件检测效率。另一方面,Monkey Runner可以进行功能测试与回归测试,用户输入事件数值即可得到检测结果,并将结果截屏和正确结果进行对比,进而明确测试应用的准确性与稳定性。
3.1 设计动态检测沙箱
动态检测沙箱主要有黑名单匹配、模拟器动他检测以及检测结果分析反馈等三个检测功能模块,黑名单匹配主要对未知软件进行初步筛选,模拟器对样本进行软件安装、恶意行为触发、行为记录以及软件卸载等功能,检测结果以网页形式呈现,直观显示出恶意软件检测结果,并展示检测过程。
3.2 搭建运行环境
为了提高动态沙箱检测效率与质量,要创造相应的运行环境,进而保证动态沙箱在实际检测中的有效性。在硬件环境方面,设置Linux服务器、计算机和Android手机,开发者会提供API,通过Java语言构建应用程序构架,其中涉及到活动、服务、广播意图接受者、内容提供者以及过滤器等部分。在应用程序中,Google将Android SDK传输给程序员,并以此为基础进行Android系统开发,根据Java编写程序,将各类资源信息组建成APK文件安装到Android移动设备中即可。在软件环境中,运行Android SDK,安装NVC软件,以辅助恶意软件分析检测。
本文通过对Android恶意软件检测技术分析与应用的研究,在分析Android 系统平台的基础上,提出Taint Droid、Monkey、Monkey Runner等检测技术,并以动态检测沙箱为核心设计Android恶意软件检测系统,进而保证用户的信息安全。
[1]刘晓东.基于行为特征的Android恶意软件检测技术研究[D].宁波大学,2014.
[2]刘阳.应用随机森林与神经网络算法检测与分析Android应用恶意代码[D].北京交通大学,2015.
[3]李骏骁.基于监督型机器学习分类方法的Android恶意软件检测技术研究[D].南京大学,2014.