「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战」
简介
Android 操作系统是市场占有率最高的移动操作系统,基于 Android 平台的恶意软件也呈现爆发式的增长, 而目前仍然没有有效的手段进行 Android恶意行为的检测,通过分析 Android恶意行为的特点,采用基于贝叶斯网络 的机器学习算法进行 Android 恶意行为的检测,通过静态分析的方法进行 Android 文件静态特征的提取,将 Android 恶意应用的静态分析与贝叶斯网络相结合,最后通过使用提出的方法构建贝叶斯网络模型,通过实验验证了提出的 Android恶意行为检测模型的有效性。
静态分析
反编译技术分析
apktool是 google提供的一种反编译的工具,下载之 后目录下主要包括三个文件:apktool.jar、apktool.bat 和 aapt.exe。通过调用批处理文件 apktool.bat 对 Apk 进行 反编译,反编译后的目录结构如下所示:
META-INF 目录下的文件是程序的签名信息以及 程序包的 SHA1 校验值,二次打包的应用的签名信息会 发生改变,常用于恶意程序的特征码检测中。但这种检 测方式对二次签名的应用没法检测。 AndroidManifest.xml 文件是 Android APK 的配置 文件,其中声明了应用程序定义的包名、申请的权限列 表、定义的组件信息等应用程序必备的信息。
classes.dex文件是 Dalvik虚拟机能够识别的文件格 式,它拥有独立的指令集,经过反编译后会生成 smalli 中间代码,smalli更加适合人的阅读,经过学习能够编写 smalli代码,smalli代码更易于分析。
res 目录存放的是应用程序包的资源文件,主要包 括图片资源、音频资源和布局文件等该目录下的资源文 件可以通过 id直接访问。
assets 目录下存放的也是资源文件,访问该目录下 的资源需要通过 AssetManager类。
Android恶意行为的特征分析
在所有手机恶意行为的类型中,恶意扣费类的应用 占有很大的一部分比例,其次是隐私窃取和资源消耗 类,每一种恶意行为的实现都需要不同的特征之间相互 配合,最后完成 Android平台的恶意行为。 对于恶意扣费类的应用,如短信订阅 SP 服务的扣 费恶意应用。要实现这些功能,恶意应用首先会在Android的配置文件中申请SEND_SMS和RECEIVE_SMS 的权限,然后实现短信的发送,需要在应用层的 API 中 调用 sendDataMessage(),sendTextMessage(),sendMultipartTextMessage()等发送短信的调用,为了防止用户 发现订阅短信的服务,恶意应用需要拦截 SP 服务返回 的确认短信,因此恶意应用需要注册短信到达的广播接 收器 SMS_RECEIVED,并具有最高的优先级,以保证最 先接收到短信到达的广播,最后调用 abortBroadcast() 函数防止该短信到达的事件继续传播并被系统接受,避 免被用户发现存在后台发送短信的行为,这样实现了一 个完整的恶意扣费类应用。
由此可见,Android 平台恶意行为的实现通过权限 到 API等各个环节的配合,如果通过单一的权限特征用 于恶意行为的检测容易造成较高的误报率,因此本文通 过提取 APK 多个维度的特征信息用于 APK 恶意行为的 检测,提取的特征信息包括 Android 应用申请的权限信 息、API调用情况、应用的组件信息以及声明的 intent过 滤器、应用声明的敏感字符串信息等。多维特征信息能 够综合表达 APK 的恶意行为,在一定程度上有利于提 高对 Android 病毒程序的检测率。因此,本文的特征提 取部分介绍 Android 应用的静态行为特征的提取方法, 并通过特征选择过滤冗余的特征用于恶意行为的检测。
恶意行为的实现原理图如下所示:
小叶有话说
今天主要是给大家介绍了最近在研究的一篇期刊《基于贝叶斯网络的Android恶意行为检测方法》,这篇集刊主要是介绍了如何用静态贝叶斯网络实现检测Android恶意行为的检测,可以更好的让大家对于贝叶斯网络以及Android是如何进行恶意行为的检测有一个很好的了解,并且也可以让大家对于Android系统有一个全新的了解。