Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

安全论文每日读 2015.02.23

今天继续介绍Mobile Security的论文,论文名字叫做:Brahmastra: Driving Apps to Test the Security of Third-Party Components 发表于Usenix Security 2014学术会议上。这篇论文设计的Brahmastra是一个针对Android app中第三方代码的自动化测试工具,通过对app的静态分析,找出不同页面之间的跳转联系,然后通过二进制重写进行爆破,强制程序进行跳转,从而触发app中的第三方代码。

论文:https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-bhoraskar.pdf

Related work

一些动态分析的论文:

    1. Hao, B. Liu, S. Nath, W. G. Halfond,and R. Govindan. PUMA: Programmable UIAutomation for Large Scale Dynamic Analysis of Mobile Apps. In Mobisys, 2014.
    1. Liu, S. Nath, R. Govindan, and J. Liu. DECAF:Detecting and Characterizing Ad Fraud in Mobile Apps. In USENIX NSDI, 2014.
    1. Rastogi, Y. Chen, and W. Enck. Appsplayground: Automatic security analysis of smartphone applications. In Proceedings of the ACM Conference on Data and Application Security and Privacy, 2013.
    1. Ravindranath, S. Nath, J. Padhye, and H. Balakrishnan. Automatic and Scalable Fault Detection for Mobile Applications. In Mobisys, 2014.
    1. Azim and I. Neamtiu. Targeted and depth-first exploration for systematic testing of android apps. In OOPSLA, 2013.

现在的动态分析工具,覆盖率太低,无法满足作者对触发第三方库的需求。作者提出4个导致这种情况的原因:

  • R1. Timeout
  • R2. Human inputs
  • R3. Unidentified elements
  • R4. Crashes

作者的目的不同于一般的动态分析工具,作者不需要尽可能的触发所有的代码,而是只要触发某一些特定的代码,这些代码可能隐藏的非常深。

设计

输入:应用程序、需要执行的方法名、到达目标方法后的进一步分析插件。

三个部分:Execution Planner、Execution Engine、Runtime Analyzer。

Execution Planner

找到目标方法,然后构造一个通向目标方法的有向图,有向图的节点是不同的方法,有向图的边代表了不同方法之间的调用关系。基于调用方法的不同,有三种不同的边:直接调用、异步调用、通过activity进行调用。 这里比较复杂的是异步调用,Android平台的异步调用一共有三种:程序内部注册的各种Listener、XML定义的Listener、生命周期相关的函数。 构造有向图会遇到爆炸的问题,这里采用两个方法来缓解:排除系统静态库和其他无关的三方库、使用后向搜索路径的方法。

Execution Engine

二进制重写来进行代码执行,不需要分析界面元素,同时还能够触发一些不可见的跳转. 针对一条完整的路径P,EE会选择跳过尽可能多的节点,直接从路径的中间开始执行,能够节省时间同时避免错误。

Runtime Analyzer

记录运行时的数据,用于后期分析.

Implementation

Execution Planner

参考了 Redexer in Dr. Android and Mr. Hide: Fine-grained Permissions in Android Applications.

Execution Engine

  • soot for rewritting
  • adb for jump start

Evaluation

测试结果1 测试结果2

最后做了一个儿童软件广告的case study和一个针对Facebook token leak的case.