Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

What the App Is That? Deception and Countermeasures in the Android User Interface

本次介绍的论文What the App is That? Deception and Countermeasures in the Android User Interface发表在2015年的SP安全会议上,这篇文章主要讨论了目前Android平台上存在的一种GUI attack,GUI attack是指恶意应用通过伪装成知名应用程序GUI或是在知名应用程序打开时在界面上覆盖透明的控件的方法来迷惑用户,从而达到窃取用户输入的隐私数据的目的。

论文下载:http://www.cs.ucsb.edu/~chris/research/doc/oakland15_uideception.pdf

本文就GUI attack的技术细节进行了研究,发现了多种已知、未知的GUI attack攻击方法。

此外,作者开发了两个不同工具来帮助用户对抗这样的攻击。一个是App静态分析工具,用于在应用市场中筛选出可能发起此类攻击的恶意程序。另一个是运行在Android设备上的动态防御工具,能够提醒用户正在和他们发生交互的App的身份。

作者原来是做web安全的,所以这篇文章里可以看到很多的安全设计都和web上的安全设计有着类似的想法。

Introduction

本文主要的贡献在于:

  1. 系统性的研究了Android平台上能够被用于实现GUI attack的多种技术。并以此设计了能够静态检测GUI attack的静态分析工具。
  2. 设计了一种部署在Android设备上的GUI attck防御工具,能够很好的覆盖现有的攻击方式。
  3. 实验

Background

一些有关Android GUI的介绍

GUI Confusion Attacks

GUI confusion attack的主要目的就是通过各种方法使得自己构造的仿造的恶意GUI替代正常应用程序的GUI来和用户进行交互,以此进行钓鱼,获取用户的敏感信息。作者通过分析,发现了很多可以用来实施GUI confusion attack的API,并进行了分类,如下图所示:

pic1

之后对不同的攻击方式进行了具体分析。除了通过上述的API来在不同的场景下使得自己的恶意API取信于用户,实施GUI attack的另一个要素就是如何正确的把握正常应用关键GUI弹出的时间。文章中同样对这些方法进行了分析总结:

  1. 读取系统log
  2. 使用getRunningTasks API(需要GET_TASKS权限,并且5.0之后对该API进行了限制,只能读取自己Activity的状态)
  3. 读取/proc/self/cgroups的内容(“/apps”表示处于最上层正在和用户交互,否则是”/apps/bg_non_interactive”)

最后作者表示一般会通过重打包来构造一个恶意的应用程序。

State exploration of the Android GUI API

分析了上述API在被用来实施GUI attack的时候,各项参数的选择,为下文的静态分析做准备。

Detection via static analysis

通过静态的程序分析技术,针对上一节总结出的各种API以及对应的参数,检测存在进行GUI attack隐患的App。

作者搜集了4种不同的app进行实验:

  1. 500个来自Google Play的随机应用
  2. 500个来自Google Play的热门应用
  3. 20个锁屏软件(作者认为这类应用很符合GUI attack恶意应用的特征)
  4. 1260个来自Android Malware Genome project的恶意程序

分析结果如下:

pic2

pic3

可以看出这样的恶意程序样本还不是很多。

UI defence mechanism

除了上文所述的静态检测工具,作者还开发了运行在Android设备上的实时防御系统。通过修改系统,实时的向用户提醒目前和他们交互的UI是属于哪个应用,哪个开发者。这里需要提到的是Android程序分析领域的一个经典问题:如何识别一个恶意的应用程序。由于Android的生态系统相对于iOS来说要开放很多,用户可以通过多种不同的渠道安装应用(Google Play,第三方市场,apk安装),除了来自Google Play的应用外,并没有可信的第三方为Android程序的签名做背书,也就是说任何人都可以伪造签名的内容,攻击者可以将自己的签名制作的和腾讯、阿里这种大公司一样,用户没有办法通过签名进行身份校验。本文作者在这里使用的了传统web领域的方法, 使用已有的CA对签名进行认证。

pic4

最后作者召集了300多名测试者来测试他们的系统,以此说明这个实时防御系统的有效性:

pic5