Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Covert Communication in Mobile Applications

论文下载:https://people.csail.mit.edu/mjulia/publications/Covert_Communication_in_Mobile_Applications_2015.pdf

Abstract & Introduction

作者提出的问题:

APP中会出现一些没有价值的通信,这些通信流量被禁用之后不会对用户使用产生任何影响。这些流量可能会泄露用户隐私,占用带宽,费电。

作者的解决方式:

  • 明确显示通信和隐式通信的定义
  • 半自动动态检测APP中的隐式通信,测试了google play前20名应用,63%的通信是隐式的
  • 提出静态批量检测方案,测试了google play前500的应用,46.2%的通信是隐式的

Communication In Android

动态分析APK:

  1. 找到连接的声明
  2. 对APK插桩,对单个连接直接返回异常,重打包APK
  3. 按照所有的连接列表生成多个版本的APK
  4. 自动化执行这些APK,比较执行结果

执行方法,人工使用APP,记录操作,覆盖尽可能多的功能。用同样的脚本跑其他的APP版本,在每个用户输入点之后截图,比较截图

Fig

选取了google play前20的应用作为样本,排除聊天应用和不能重打包的应用,留下13个,结果如下

Fig

  • 51个中22个是由advertisement and analytics (A&A)包引入的
  • 在没有向用户声明的情况下,收集应用的performance,crash,usage data。甚至从手机开启之后一直收集发送信息
  • twitter会隐式上传推文中照片以及视频的相关信息,有些包发送加密数据,沃尔玛应用调用第三方库手机扫描过的二维码信息。

Static Analysis For Classifying Connections

静态分析APP:

  • 生成函数调用图
  • 分析failer handler,根据不同情况判定显式还是隐式。
  • 分析成功之后的函数调用,判断是否改变了UI

Experiments

首先测试静态分析方法的准确性,跑前面用动态分析跑过的几个APK。分析准确性和完备性,结果如下。

Fig

检测可用性:

  • 取前100的应用,排除之后剩下47个,重打包禁用所有检测出来的隐式通信,让测试人员正常使用,对比正常应用:30个是正常的,9个丢失广告,3个是小功能缺失,5个重要功能缺失
  • 取前500的应用,攻找到46.2(8539/18480)的隐式通信。

Fig

特别指出gameloft的情况17个应用共有787个隐式连接。

Limitations

  • 动态执行的代码覆盖率问题,不能检测跨应用之间通信。
  • 静态分析时RPC不能分析,间接方式影响UI的没有考虑。