Drebin: Effective and Explainable Detection of Android Malware in Your Pocket论文阅读笔记

写博客以供备份。

Drebin: Effective and Explainable Detection of Android Malware in Your Pocket (Drebin: 安卓恶意软件的有效可解释性检测器)

1.现有方法

安卓本身的 permission system,在安装前进行分析和检测,都不能检测新的 malware 且不对检测结果提供 explanation

2.核心

采用静态分析尽可能从 code 和 manifest 收集 features (由于有限的资源阻碍了在 runtime 监听),并以字符串集的形式管理

将 feature embedded in a joint vector space 能够识别 feature 的 pattern 和之间的 combination

检测之后为每个检测提供的 explanation 揭示了被检测到的恶意软件的相关属性 (可以从向量空间中追溯到 pattern of feature)

能够直接在手机上检测并且是一个轻量分析 (使用 lineartime analysis and learning techniques)

3.具体方法

(1)静态分析

提取 feature (关键)

通过线行扫描程序 (linear sweep) 从拆解的 dex code 和 manifest 中提取 features

将提取出来的 features 分为了8个 string sets, 4类从 manifest 中提取,4类从 dex code 中提取

  • 从 manifest 中:文件名为 Android-Manifest.xml,提供安装和运行所需的数据,使用 Android Asset Packaging Tool 检索其中存储的信息
    • S1 Hardware components: 所需硬件设备,如相机等
    • S2 Requested permissions: 请求的权限,结合安卓本身的 permission system
    • S3 App components: APP 组件,4类不同的组件 (activities, services, content providers, broadcast receivers),每类组件定义不同的接口
    • S4 Filtered intents: 进程内与进程间的通信主要通过 intents 执行,恶意软件通常会侦听特定的意图
  • 从 dex code 中:提供关于 API 调用和数据使用的信息,基于 dex 库
    • S5 Restricted API calls: 通过在反汇编代码中寻找调用的发生来理解程序的功能,尤其是在调用了一个受限制的 API 但没有请求所需要的权限,这种情况极有可能是一个恶意软件在使用 root 权限来绕过安卓系统的限制
    • S6 Used permissions: 通过S5进行提取,寻找 API 调用中所请求和实际使用的功能,但更对于一个应用的行为更笼统化,因为多个 API 调用可以基于同一个 permission
    • S7 Suspicious API calls: 可疑的 API 调用,包括要求获取敏感数据的、要求网络的连接的、要求收发 SMS 消息的、要求执行外部命令的以及常用于 obfuscation 的一些调用
    • S8 Network addresses: 恶意软件常用网络连接将窃取的信息发送回去,这里面可能有一些蛛丝马迹

(2)将特征转化为向量

恶意软件的一些行为通常有一些特定的模式,并且在提取中的八种 feature 中有一些特定的关联,通过转化为向量来为下一步判断做准备

设定 S = S1 ∪ S2 ∪ S3 ∪ S4 ∪ S5 ∪ S6 ∪ S7 ∪ S8 向每个集合中的所有字符串添加唯一的前缀,确保不同集合的元素不会发生冲突

设定一个 |S| 维向量空间 {0, 1}^|S|,每个 app x 映射到空间中一个向量 φ (x), 对于每个 feature s ∈ S, 将对应 dimension 上置1,其余 dimension 上置0

这样做:有类似 feature 的 app 在空间中距离较近,大部分 feature 不一样的 app 距离很远,并且两个 app 之间的距离可以用来表示其中的关联让最后的结果具有可解释性

对于使用这样的高维度向量空间是否会让计算过于复杂的问题:一个包含 m byte 代码和数据的 app x 至多有 m 维向量为非0,所以 φ (x) 常常是一个系数表示,其中只有 x 存在 feature 的对应位为1,其余无关的 feature 的对应位的值为0

(3)学习和检测 (学习参数 w)

使用 linear SVM,定义一个 hyperplane 基于 maximal margin 进行分类,即 maximal margin classifier

detection function : ƒ (x) = < φ(x), w > = ∑ I (x, s) · Ws (s ∈ S), 设定一个阀值 t, ƒ (x) > t 为 malware,ƒ (x) <= t 为 benign app

简化计算:即对于一个 app x,只有从 x 中提取的 feature 所对应的位置在 φ(x) 上为1,其余未提取到 feature 的在 φ(x) 上对应位置的值为0,即 ƒ (x) = ∑ Ws (s ∈ x)

(4)可解释性

借助 linear SVM, 确定每个 feature s 对 ƒ (x) 的权重,记录将 app 分为 malware 时最大的 k 个权重,将权重对应到 feature,即可解释为什么一个 app 被判定为 malware

在获得权重最大的 k 个 feature 之后, DREBIN 自动生成描述这些 feature 基础功能的句子 (通过为每个 feature 集,即 S1 到 S8,构建句子模版)

4.缺陷

  1. 使用静态分析,不能检测 obfuscated 或动态加载的 malware,无法检测到 transaction attack,但提高了攻击难度,并且为了缓解这个问题,DREBIN 提取了与 obfuscation 和代码加载到相关 API 调用,并通过与其他 feature 一起检测 malware
  2. 针对 AI 算法本身的两种攻击:对抗性输入和中毒数据攻击
  3. 在检测到一些混淆攻击或动态执行后,无法访问到检测到的代码
  4. 数据收集问题

5.评估

  1. Detection performance
  2. Explainability
  3. Run-time performance

6.related work

  1. 使用静态分析检测
  2. 使用动态分析检测
  3. 使用 ML 检测
原文地址:https://www.cnblogs.com/sjtuguyang/p/13880072.html