Android设备上移动应用程序的自动取证分析外文翻译资料

 2022-08-25 21:15:41

英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料


DFRWS 2018 USA d 第十八届年度DFRWS美国会议录

Android设备上移动应用程序的自动取证分析

林晓东a,陈婷b ,*,朱童c,阳坤b,伟冯国d

a劳里埃大学,加拿大滑铁卢大学b电子中国科学技术大学中心网络安全,成都,中国Ccedil; 中国计算机科学与工程,电子科学与中国的科技,成都大学,学院d南大学美国佛罗里达州佛罗里达州

摘要

关键词:

自动取证分析

Android应用程序

组件间静态分析

污点分析

用移动电话参与犯罪活动的情况并不少见,例如暗中收集信用卡信息。移动应用程序的取证分析对收集犯罪分子的证据起着至关重要的作用。但是,基于手动调查的传统取证方法无法扩展到大量移动应用程序。另一方面,由于设置适当的运行时环境以适应OS差异和依赖库并激活所有可行的程序路径的负担,动态分析很难自动化。我们提出了一个全自动工具,Fordroid,用于Android上移动应用程序的取证分析。Fordroid在Android的APK进行组件间静态分析和构建控制流和数据依存性的曲线图。此外,Fordroid 识别在哪里写有污点分析本地存储信息。通过遍历图来定位数据。这解决了几个技术挑战,包括组件间字符串传播,字符串操作(例如,追加)和API调用。此外,Fordroid 可以识别网络如何通过解析SQL命令来存储信息,即数据库表的结构。最后,我们选择了100个随机Android应用程序,包括来自四个类别的2841个组件进行评估。所有应用程序的分析耗时64小时。Fordroid在36个应用程序中发现了469条路径,这些路径将敏感信息(例如GPS)写入本地存储。此外,Fordroid 成功定位了其中信息是为458(98%)的路径写入和识别了所有(22)的数据库表的结构。

copy; 2018作者。由Elsevier Ltd代表DFRWS发布。这是一篇开放获取的文章

CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。

1.简介

手机已成为我们生活中不可或缺的一部分。以前,移动电话仅用于通信目的。今天,他们的能力已经扩展到包括游戏,社交媒体,网上银行和股票交易在内的无数用途。伴随着移动设备的激增,这些设备被使用在犯罪活动中。在某些情况下,恶意开发人员可以在用户不知情的情况下收集敏感信息,移动应用程序还可以用作犯罪活动的工具,或者被涉及不良行为或犯罪行为的人员使用。在许多情况下越来越多的移动设备被视为关键

* 通讯作者。

电子邮件地址:xlin@wlu.ca (X。Lin ),brokendragon @ yearc.edu.cn (T。Chen ), tong.zh @ fsmail.com (T. Zhu),1481978708 @ qq.com (K。 Yang),fwei @ mail.usf.edu (F。Wei )。

https://doi.org/10.1016/j.diin.2018.04.012

的证据。例如2015年圣贝纳迪诺攻击(维基百科,2015)和

Adnan Syed的谋杀案(Sali)中的移动设备。

移动应用程序处理大量的的用户信息。大量敏感信息存储在智能手机本地(Scrivens和Lin,2017 )。因此,获取和分析移动应用程序生成的工件是移动设备取证分析中至关重要的必要步骤。

移动设备上的数字取证是一件复杂的事情。移动电话取证中的数据获取和分析涉及从移动电话中提取信息,然后确定并确定证据是否与正在进行的调查相关。进行数字取证调查通常需要完整的图像提取,但是,它可能适合于时间只提取和检查特定的移动应用程序。在这些情况下,在移动设备上的数字证据是由特定的应用程序存储在本地的。

1742-2876 / copy; 2018作者。由Elsevier Ltd代表DFRWS发布。这是CC BY-NC-ND许可下的开放存取的文章(http://creativecommons.org/ 许可证/由-NC-ND / 4.0 /)。

移动设备上本地存储的数字取证需要回答以下三个问题:存储的信息是什么(例如,GPS); 存储的信息在哪里(例如,文件路径); 以及如何存储信息(例如,数据库表的结构)。过去已经进行了广泛的研究,以识别和分析各种应用产生的工件(Scrivens和Lin,2017 ; Anglano,2014 )。动态分析是最常见的做法。更具体地说,就是安装应用程序在测试手机或模拟环境。在一段时间内手动播放应用程序以生成取证跟踪。不幸的是,这种方法有几个缺点。

首先,很难触发所有有趣的程序路径。因此,动态分析可能无法发现犯罪行为。此外,识别存储的信息及其存储方式并不重要。例如,由内容被编码或其格式未知的移动应用程序生成的文件需要相当大的分析工作量。另一种方法是手动逆向工程。但是,手动解析相关工件的文档是一项艰巨而漫长的任务。这种方法耗时并且需要丰富的技术专业知识。

因此,上述问题促使我们采用自动化方法来解决移动应用程序取证分析问题。由于运行时环境(例如,操作系统,依赖库)的差异,给定大量应用程序很难自动化动态分析。

这项工作建议通过静态分析的方法自动进行Android应用程序的取证分析。我们的方法克服了手动分析和动态分析的缺点。特别是,我们的方法可以扩展到大量应用程序,因为不需要人工干预。此外,我们的方法不需要设置测试环境,并且可以涵盖所有应用程序代码。

我们在Fordroid中实现了我们的方法,这是一种组件间分析工具,能够识别信息存储在本地存储中的内容,位置和方式。从技术上讲, Fordroid 需要在Android APK(无源代码),然后建立控制反编译APK后的流和数据依存性的曲线图。接下来,Fordroid识别写入的敏感信息类型并通过并通过污点分析进行本地存储。然后Fordroid 显示了通过遍历图形来存储信息的路径。通过我们的方法,我们克服了组件间字符串传播,字符串操作(例如,追加)和API调用所带来的一些技术挑战。最后,Fordroid通过解析从应用程序提取的SQL命令来识别数据库表的结构。

我们从中国流行的Android应用程序市场AppChina中随机选择了100个属于四个类别的实际应用程序。1 Fordroid 在3860分钟内(每次应用38分钟)分析了包含2841个组分的所有应用。结果显示,应用程序中有469个路径有超过三分之一(100个中有36个)将敏感信息写入本地存储。 Fordroid 成功找到了为458(98%)路径编写敏感信息的位置。此外,其包含敏感信息的所有(22)的数据库表的结构被成功识别

总之,我们的工作做出了以下贡献。

  1. 设计并实现了Fordroid ,Android应用程序的组件间静态取证工具,它会自动识别什么,在哪里以及敏感信息如何存储在本地存储器。
  2. 我们在100个Android应用程序上进行实验。Fordroid 发现大约三分之一的应用将敏感信息写入本地存储。此外,Fordroid 成功找到98%的敏感信息路径和识别了所有数据库表的结构。

本文的其余部分安排如下。第2 节给出了一个激励性的例子。第3 节描述了Fordroid 的设计和实现。实验结果见第4 节。我们的方法的局限性在第5 节中讨论。我们在第6节简要介绍相关研究,得出的结论 在本文的第7节 。

2.激励的例子

在本节中,我们提供了移动应用程序取证分析的示例。这些例子很常见,也是我们开发Fordroid的动力。我们使用了一个实际Android应用--agilebuddy 2来说明手动逆向工程和动态分析来定位的敏感信息的难度。agilebuddy是一款拥有703 KB大的游戏应用程序。它有13个包,7个组件,80个类和559个功能。为了便于演示,我们反编译3这个APK并说明其来源

图1 。

函数c(),类h,包com.uucunadsks.b中的第138行(图1 (a))通过调用函数a()产生字符串v0_1。第139行使用v0_1作为文件名创建File对象v1 。第140行创建另一个File对象v4,它接收两个参数v1和一个字符串v0_1。最后,敏感信息被写入该文件的171行,对这个应用程序逆向工程来查找关键四行的代码是很难的。

我们无法使用动态分析创建文件,这促使我们调查原因。首先,为了在触发138行的代码,应满足几个条件。首先,应调用函数c(),然后布尔值arg6(第124行)应为false。此外,hglength()应不小于hf(第126行),即8192(第26行)。而且,他不应该等于null(第128行)。此外,应安装SD卡(第134行)。最后准备一个满足条件

装有SD卡的Android手机。我们发现通过代码检查编辑可以轻松满足128行的条件。特别是,他是一个上下文对象,它是组件的this指针。

但是,很难满足第126行中的条件.hg是一个字符串,因此这个条件表明该字符串的长度不应小于8 K字节。hg用于记录异常信息,如图1 (c)所示,它调用ha()来生成异常信息。请注意,图1 (c)中的代码片段位于另一个软件包com.uucunadsdk.c中,这进一步增加了分析的难度。ha()(图1 (b))附加一个flag(即arg6,第72行),日期,类名,方法名,行号和异常类型(即arg8,第73行)到hg因此,记录一个异常所需的空间不能超过100个字节。因此,动态分析必须触发至少80个例外在创建文件之前。

2 http://www.appchina.com/app/com.app.kg.agilebuddy 。

1 3

http://www.appchina.com/。 由JEB, https: //www.pnfsoftware.com/jeb2/反编译。

因此,动态分析以发现文件到期是由于难以触发程序路径关键代码。手动逆向工程和动态分析的局限性促使我们开发自动化静态方法。我们将在第3 节中演示Fordroid 如何处理此APK 。

  1. 函数c(),类h,包com.uucunadsdk.h中的代码片段

  1. 函数a(),类h,包com.uucunadsdk.h中的代码片段

  1. 函数b(),类m,包com.uucunadsdk.c中的代码片段

图1. agilebuddy如何将数据写入文件。

3.方法

3.1。概观

目前Fordroid的实现基于Amandroid(Wei et al。,2014 ),这是一个适用于Android应用程序的组件间静态分析平台。我们将简要在这里介绍Amandroid。Amandroid确定的指向信息(Android应用程序在几乎所有Android静态分析的核心底层问题)在 流和上下文敏感的方式。它反编译APK成IR表示,然后从它建立一个抽象语法树(AST)。Amandroid构建过程间控制整个应用程序的流图(ICFG)并设为组件间通信(ICC)一样的方法调用。随后,它构建组件间数据流图表(IDFG)将ICFG与事实相关联,然后从IDFG中导出数据依赖图(DDG)。此外,Amandroid提供了一组丰富的API,用于开发分析应用程序。

图2 展示了Fordroid 的架构,它采用Android APK并生成一个报告,其中包含敏感信息存储在本地存储中的内容,位置和方式。Fordroid 需要Amandroid进行反编译APK,建立AST,ICFG,IDFG,和DDG,并使用它的示例应用程序,污点分析器写入到本地存储器中的类型的敏感信息。从技术上讲,污点分析(维基百科和污点检查)由污染源,污染传播和污点沉组成。在跟踪信息泄漏的上下文中,污点源是敏感信息进入应用程序的位置(例如,通过调用getLastKnownLocation()来获取位置)。污点传播跟踪敏感信息在程序指令执行过程中的传播。污点是敏感信息泄漏到应用程序外部的地方(例如,通过调用Write()将数据写入本地文件)。

Android应用程序通常通过调用API来获取和泄漏敏感信息,因此Fordroid

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[451964],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。