智能安卓恶意软件检测系统

HinDroid

HinDroid: An Intelligent Android Malware Detection System Based on Structured Heterogeneous Information Network

主要贡献

这篇论文希望解决的问题是如何有效地监测安卓手机系统下的恶意软件。

之前很多恶意软件的分析和检测都是基于某种 指纹签字 技术,然而这种技术常常被恶意软件开发者的新手段绕过。

因此,寻找更加复杂有效的检测方式就成了各种信息安全公司所追逐的目标。

这篇论文的主要贡献是根据安卓的 API,提出了一种新的基于结构性异构信息网络的方法,来对安卓程序的 API 模式进行更加复杂的建模,从而能够理解整个安卓程序的语义。作者们还采用了多核学习(Multi-Kernel Learning)的方法,在结构性异构信息网络的基础上对程序语义模式进行分类。

核心方法

首先,需要将安卓的程序代码转换为可以分析的形式。一般来说,安卓的软件被打包为后缀名为 Dex 的 Dalivik 执行文件,这个执行文件无法被直接分析。于是,需要把这个执行文件通过一个叫 Smali 的反汇编器解析成 Smali 代码。这个时候,软件的语义就能够通过 Smali 代码来解析了。作者们从 Smali 代码中提取所有的 API 调用,通过对 API 的分析来对程序行为建模。下一步,就是要从繁复的 API 调用中摸索出这里面的规律。

作者们这个时候构建了四类矩阵来表达 API 和某个 App 之间的基本特征:

  1. 某一个 App 是否包含了某一个 API;
  2. 某两个 API 是否同时出现在某一段代码中;
  3. 某两个 API 是否出现在同一个 App 中;
  4. 某两个 API 是否使用了相同的调用方法。

为了发现更加复杂的规律,作者们在这里引入了一个工具叫异构信息网络。异构信息网络的概念最早由伊利诺伊大学香槟分校的数据挖掘权威韩家炜(Jiawei Han)和他当时的学生孙怡舟(Yizhou Sun,目前在加州大学洛杉矶分校任教)提出。异构信息网络的核心思想就是希望能够表达一系列实体(Entity)之间的复杂规律。

把 App 和 API 的关系描述成为异构信息网络以后,下面的工作就是定义更高阶的规律关系。

利用异构信息网络和元路径构建了程序的语义表达后,下一步就是进行恶意软件的判别。

Multi-kernel Learning

参考: https://time.geekbang.org/column/article/394