DeepIntent:用于移动APP意图-行为差异检测的深度图标-行为学习

本文介绍2019年CCS会议的一篇文章,题目是《DeepIntent: Deep Icon-Behavior Learning for Detecting Intention-Behavior Discrepancy in Mobile Apps》,DOI信息在这里

概览

移动APP已经成为我们日常生活中不可缺少的一部分。然而,存在许多潜在的有害APP可能会利用用户的隐私数据,例如,收集用户的信息或在后台发送消息。让这些不受欢迎的APP远离市场是一个持续的挑战。

虽然现有的工作提供了确定APP行为的技术(例如,可能导致信息泄露的APP行为),但几乎没有研究针对APP的行为是否与APP的UI所反映的意图兼容。在这项工作中,作者探索了深度学习和程序分析的协同合作,以解决这一问题。

文章基于一个重要的观查现象:组件触发的操作应与其外形相符。例如,音乐播放器UI上的“+”图标,通常功能是将音乐添加至播放列表中。若其在点击后调用了用户的GPS数据,则应发出警报,因为这可能是违反用户意图的APP行为。

为了检测移动APP中不受欢迎的行为,本文的出发点是:APP的意图和程序行为的兼容性是否可以用来判断APP是否会按照用户的期望运行?由于用户可感知的APP UI信息(如文本和图片)代表用户对APP行为的期望,文章的目标是自动检查APP的意图和它们的幕后行为之间的兼容性,也就是检测意图-行为差异。

检查图标widget(小部件)的意图及其行为之间的兼容性是一项具有挑战性的任务:

  1. 它们的意图主要是通过图标和文本的混合来表达的,很难使用这些非结构化的组件来建模这种相关性。现有方法或者对文本语义建模,以通过UI检测用户敏感输入的暴露;或者使用计算机视觉技术检测敏感UI widget。但是,它们都没有对图标与文本的联合语义进行建模;
  2. Android的UI设计模型和异步编程模型对准确识别图标widget的敏感行为提出了挑战。Android APP可通过UI布局文件与程序代码与带有图标widget的UI处理器联系。此外,UI处理器可以通过Android的多线程和组件间通信调用敏感的API。现有的方法或者由于列举了所有可能的生命周期方法组合而产生大量的误报,或者由于覆盖率低而未能识别某些行为;
  3. 很难将APP的意图和行为联系起来,以确定行为是否不受欢迎。已经有研究工作检测不希望披露的通过用户界面的敏感用户输入,然而,这些方法产生的行为模式只能捕获一组固定的不希望的行为。此外,UI widget的行为通常使用多个权限。现有基于预测的方法主要侧重于基于意图预测单个权限使用,而缺乏对多个权限使用的建模,使得在检测意图-行为差异方面的效果较差。

本文提出DeepIntent,它的设计基于3个关键的观察结果:

  1. 移动APP的UI一般明确显示给用户,且执行相同类型操作的图标应该有相似的外观。因此,基于CNN的图象识别技术适于本研究
  2. 在不同的UI上下文环境中,同一种图标可能对应不同的意图
  3. 用户在与具有特定外观的图标小部件交互时期望某些行为,而不期望的行为通常与用户的期望相矛盾

基于以上3个观察,DeepIntent提出一种新颖的学习方法:深度图标行为学习,包含3个主要阶段:

  1. 图标widget分析
  2. 学习图标行为模型
  3. 检测意图-行为的差异

DeepIntent过程示例

DeepIntent过程示例图

如图,可以分为三个阶段:

  1. 从UI layout文件中提取资源ID,分析处理按钮操作的代码,建立调用关系图,将按钮与其需要的权限作对应;
  2. 使用从受欢迎的良性APP提取的特征三元组,学习图标-行为模型,基于假设:这些APP中的大多数图标恰当地使用图标与权限,符合用户的大致期待。通过学习图标-行为模型,DeepIntent还训练了一个差异检测模型,该模型可用于计算测试图标的离群值;
  3. 对于需要进行意图行为差异检查的按钮,DeepIntent采用相同的方法提取特征三元组并送入模型,以判断是否存在差异。

图标-行为关联

图标-行为关联示意图

构建扩展的调用图来修补Android环境引入的缺失的调用关系,并使用扩展调用图来标识UI widget调用的API。

  1. 图标-widget关联。UI布局文件与源代码均可进行图标与widget的关联。文章中使用IconIntent工具,通过静态分析方法完成。
  2. 扩展调用图构建。首先使用已有的静态调用图技术,基于调用语句构建调用图;之后再对其进行扩展,添加代表隐式调用关系的边。
  3. widget-API关联。使用Android静态分析工具GATOR关联UI handler与UI widget,之后将GATOR的输出与图标-widget关联组件的输出进行组合,从而建立图标、布局文件、UI widget与UI handler的关联。
  4. API权限检查。使用PScout,获得Android API与Android权限的对应。本组件给出每个图标与权限集合的对应关系。

此外,DeepIntent提取3种上下文相关文本:包含在XML布局文件中的布局文本、OCR技术识别出的图标内嵌文本、按变量命名约定划分的资源名称。

深度图标-行为学习

深度图标-行为学习示意图

深度图标-行为学习主要分为三个阶段。

  1. 图标特征提取:使用目前最优的图像特征提取模型DenseNet。文章没有使用预训练的DenseNet模型,原因有二:1、预训练模型使用的数据集如CIFAR与ImageNet包含相机拍摄的自然图片,但图标往往由人工制造;2、预训练模型没有考虑描述图像透明度的alpha通道,但是很多图标使用了这一通道,忽略它可能导致学习特征的误导。
  2. 文本特征提取:使用目前最优的双向RNN提取文本特征。
  3. 特征组合:最近提出的协同注意层可以在相互的指导下同时更新图标特征和文本特征,从而捕获图标和文本之间的相关性。

图标-行为差异检测

图标-行为差异检测中,文章提出了两种方法,且通过实验证明了它们的有效性。

  1. 基于组的检测:将Android敏感权限划为权限组,对每个权限组基于AutoEncoder训练异常检测器,解决一个图标对应多个权限的问题。
  2. 聚集:混合了基于距离的聚集方法与基于预测的聚集方法。又可分为两种:基于距离的聚集方法(距离指待测图标与权限组图标的相似度)、基于预测的聚集方法(如果图标-行为模型预测图标应该使用某个权限,那么待测图标在这个权限组中往往不是一个离群值)

总结

本文从移动APP的GUI界面入手,通过组件触发的行为,判断一个APP是否具有恶意行为。这篇文章利用人工智能领域较为先进的研究成果与技术方法,基于Android APP的图标行为检测是否带有恶意,其方法思路、文章结构及人工智能方法值得认真学习。