论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf

所需积分/C币:46 2019-08-18 01:57:18 450KB .PDF
收藏 收藏
举报

基于Soot的Android应用静态污点分析工具的研究,孙明剑,辛阳,针对Android应用信息泄露路径检测的问题,为了实现一种基于配置文件的通用的路径检测工具,本文研究了一种基于Soot的Android静态污点分
国武技论文在线 应用静态分析技术,提供了信息泄露路径的种通用检测方式,通过配置文件对检 测内容进行扩展 关键技术 系统与隐私泄露 整个 框架包括层:第层是应用层,包括各种基于语言开发的应用程 序,应用程序在内部被划分为组件;第层是应用程序框架层,提供开发人员访问应用程序 的:第层是系统运行厍,其中包括用 编写的本地库和为 平台定制的虚 找机 ;第层是内核,提供基本的操作系统支持 联系人 电话 第1层 应用层 活动管)(位置管韭)(电话本管理 第2层 包管理 应用程序框架层 通知管理 Android运行时 SOLite Webkit 核心库 第3层 系统运行库 Dalvik虚拟机 libc 电源管理 显示驱动 摄像头驱动 第4层 Linux内核 WIFI驱动 蓝牙驱动) 图 系统架构 由于第层和第层偏向于底层实现,不适宜进行污点分析。污点分析技术在第层的 应用体现在对 系统本身和 开发支持库的分析,找出其中出现的信息泄露或 漏洞问题。第层的分析针对 应用中的组件进行,组件在与第层提供的进行 交互的时候,数据也在第层和第层之间流动,组件从第层获取的隐私数据到达第 层后可能会经过处理然后传播出去,形成隐私泄露 框架与 中间语言 是 大学的 研究小组与年开发的字节码工只,其目标是开 发能够更快、更好地理解与执行程序的⊥具。完全用实现,提供了多种宇节 码分析和变换功能,可以快捷地实现程序的分析、编译优化及变换等,其最新版本为 武技论文在线 提供了四种中间码表现形式来更好的对代码进行分析和展示: 是一种接近于字节码的表示方式,一般不会采用这种分析方式 () :是一种简化的源代码,它一个语句最多有三部分 () 和 样,不过 在 基础上有更进步的约束 :更接近于源代码,更适合阅读 是的核心,能直接创建 码,也可以通过源代码和字 节码进行转化,在最新的中支持将转化为 中间语言。相对于字节码 的多种指令, 只有条指令,这大大简化了分析的难度 污点传播分析技术 污点传播分析技术( )是稈序数据流分析方式。一些外部输入的数据 般称为被污染的数据( ),通常这些薮据来源于非可信实体的输入源。而追踪这 些数据在程序中的使用情况也就称为污点传播分析技术 目前的污点传播可以分为静态分析和动态分析。静态分析是指从溟代码或字节码中抽取 语法和语义特征,记录其中数据的流向,判断污染数据的产生。动态分析在程序执行过稈中 实时检测数据,判断数捷来源的可靠性。相对于动态分析,静态分析不需要执行程序,根据 分析粒度可以分析程序所有的数捱流路径。由于静态分析会分析所有数据流路径,这也就 生了路径分支过多,分析难度成指数型增长的问题 Source 污染数据传播途径_ 图污染传播分析 传统的污点传播是指污点数据从污染点传播到引爆点的过程。污染点( )是指木 经验证的外部输入数据,这类输入数据在分析屮标记为被污染的( );引爆点() 是指一些危险的函数(如执行语句、执行系统命令等),如果这类函数使用了被污染 的数据,就会产生脆弱性问题。而污点传播分析就是给污点数据找到一条从污染点到引爆点 的路径 参考传统的污点分析模型,广义的污点分析借鉴其污染数据传播的流程,但是弱化了污 染源的界限,各类数据诸如敏感数据等都能成为污染数据。相对于传统的污点分析,广义污 点分析能适用」各种不同的数据传播分析场景,更具有实用性。 国武技论文在线 基于的 应用静态污点分析工具设计 工具流程设计 基于的 应用静态污点分析技术核心是借助」框架的数据流分析体系, 辅以污点分析算法,研究敏感数据在 组件内的流动。整个工具流程设计如下: APK输入 构建Main函数 港示结果 结果展示模块 解析数据流 解析 AndroidManifest 查找污染点和引爆点 解析Dex文仁 预处理模块 污染标记分析 分析模块 图应用静态污点分析工具流程 首先预处理模块解析 和文件,获取应用中的组件信息;分析 模块以组件为单位,解析组件的数据流,査找组件中岀现的污染点和引爆点,对其进行污染 标记分析,找出其中出现的信息泄露的路径;最后结果展示模块展示分析模块分析的结果。 预处理模块 预处理模块会将提供的文件作为文件进行解包操作,然后分析其中的 文件获取权限信息和组件信息,解析文件将其转换为 中间 语言。供后续分析使用。 是每个应用必备的文件,在这个文件里记录了应用需要使用 的权限,应用暴露的组件和它们的实现类、实现位置。在打包的时候, 文件被编译成二进制文件,这就无法使用通常的解析工具对其进 行解析,需要使用 工只将其还原为原始的文本文件,然后再对其进行解 在最新版的中可以处理文件,将文件转换为 中间语言的表现形式。 转换了的文件拥有更直观的表达形式,可以大大降低指令分析和数据流构建的难度。 分析模块 分析模块是分析程序的主模块,这部分模块接受预处理产生的 中间语言文件, 以 应用的组件为基本单位进行污点分析。 国武技论文在线 构建 函数 应用可能会包含多个组件,这些组件被 系统调度来展示应用的各 部分功能。组件从启动到退出存在一个生命周期,存在各个生命周期内的功能由 进行调用。所有的组件都需要在 中注册,)且重写 各个生命周期的函数ε根据当前系统环境的需要 会自动调用这些生命 周期函数。 PPAclivily app- ntw APPAclivily launched aoo On o on( onStar crEstar app. OnStart() User navigates to the actiity reSume( App process Activ ty killed Tunni ng nother activity comes rto the foreground User ret appOn?ause( lo the actv pps with higher pririty need memory onPause( no longer visible to the activity app. Or Stop Thle activity is Finishing or bcing doGtroyod by to syetem oncestroyo pp On Restart o) Activ shut down app. On Destory ( 图 组件生命周期与构建函数 不像程序那样, 单个组件不存在函数。而污染点和引爆点可能会分 散在不同的生命周期函数中,为了数据流动的完整性,需要为组件补充一个函数。按 照 组件生命周期的描述,构建的函数需要能够描述各个生命周期之间的关系, 由此可以跟踪存在于不同生命周期的数据的流动情况。 污染点与引爆点定义 在 系统中,污染点指那些获取敏感信息的,而引爆点指那些将数据传输岀 去的。污染点和引爆点以文本文件的格式存储,供分析模块调用处理。本文在分析中 采用的污染点和引爆点定义如下表所示: 表污染点和引爆点定义表 国武技论文在线 分类 示例(所在类返回类型函数名参数) 污染点网络通信 位置获取 设备信息 安装程序列衣 引爆点 日志 输出流 及广播 短信 内部存储 基于 中间语言的污点分析算法设计 污点分析算法针对中间语言进行,主要有两个步骤:()污染点和引爆点标记 ()污染路径构建。首先使用获取中冋语言的数据流图,然后在数据流图中根据污染 点和引爆点的定义标记出存在的污染点和引爆点,最后基于 和数据流图分析污染点 和引爆点之间是否存在路径。如若存在路径,则说眀代码中存在信息泄露。 在分析数据流动的时候,本文以函数为单位进行分析。分析过程的算法流程图如下 武技论文在线 开始 取下一条语句 当前语句类型? AssignStmt赋值语句 allstmt函数调用语句 Returnstmt函数返回话句 赋值被污染? 返叫值被污染? 则变量被污染 则函数被污染 玻调用函数类型? 被污染函数(污染点函数 引爆点函数 未处理函数 变量被污染 发现污染路径递归调用分析函数 分析结束? 是 结束 图污染分析算法流程图 在分析过程中,会维护一个全局表,记录当前语句下函数或变量被污染的情況。处理的 关键是分析赋值语句、函数调用语句和函数返回语句对污染数据传播的影响。总的来说,污 染传播最直接的方式是通过赋值语句从左边传择到右边:函数调用语句充当引入污染和引爆 污染的角色:返回语句则决定着当前函数是合是一个被污染的函数 分析程序从构造的数廾始,以污染函数作为起点,以引爆凶数作为终点,分析 被污染数据在数据流图中的流动情况,判断是否存在从起点到终点的路径,以此判断是否存 在信息泄露的问题。 国武技论文在线 结果展示模块 当前工具污染路径的展示通过命令行文本展示,下图为一条污染路径的结果: staticinvoke <android util. Log: int i(java. lang String, java. lang String)>($r0, $r1) Sources Sr13= ir terfaceiIvoke Sr12. org. apache hIL Lp. HLLpRHs: ouse: org. apache htLp StaLusl ine getStatusLine(>o Sr5= virtualinvoke Sr4<android. net. wifi. Wifilnfo: java. lang String getMacAddress(>O Sr3= virtualinvoke $r2.<java util. Calendar: java util. Time Zone getTime Zone o>O Sr3= virtualinvoke Sr2. android telephony telephony Manager: java. lang String get DeviceId(>O 图工具结果示例 该结果袤示发现了条从污染点到达引爆点的污染路径。这些路径的引爆点都为 输出,而污染点分别来自获取 网络请求、获取改备的地址、获取设 各时区及获取设备的设各编号。 实验测试及分析 测试环境 为了更好的验证本文工具的有效性,特进行了两次实验。第一次通过使用基准测试集测 试木文工具对基准中数据泄露路径的检测情况;第二次选取了 应用市场上 的应用,测试本文工具对一般应用的检测情况。本文实验的测试硬件环境及软件环境分别如 表实验环境 计算机操作系统计算机处理器 计算机内存 版本 版本 双核 处理器 基准测试集测试 实验测试选取了 作为基准测试集, 中包含了类共个小的 安卓应用程序,可用于安卓污点静态、动态的分析评估。测试方法是用工具检测测试集中的 应用,如果应用被检测出了污染路径,则将该类测试计数加,最后统计成功检测出污染路 径到的应用的个数。本文工具在 测试集下的泱试结果如下 表基准测试结果 分类 说明 结果 变量别名引用污染数据 复杂的 数据传输示例 数组和列表相关操作对数据的污染 匿名类的回调包含污染数据 武技论文在线 获取设备信息并以此判断是否为模拟器环境 参数或对象中包含污染数据 普通语言中出现的数据传递操作 包含一些数据流动不太明显的操作 不同之间交换数据 同一个内部组件交换数据 在组件生命周期的不同阶段之间传递数据 通过反射荻取和存储污染数据 在线稈中操作污染数据 从测试结果可以看出,工具能够发现测试集中大多数的污点传播路径,但是对一些复杂 的污染数据传播无法有效的眼踪和分析,也无法很好识别内部组件之间交换的数据。工具还 有很大的改进空间,以支持复杂情况下的污点传播分析。 普通应用测试 为保证测试的全面性,本文从 上选取了人约个应用,按照工具、软件与 演小、社交、生汘时尚、通讯、新闻杂志、音乐与音频、娱乐划分为个类别,每个类别选 取商店推荐的前个应用作为测试样本。针对这个样本,工具检测出的信息泄露路径数 统计分布图如下: 12 8 6 1-10 11-50 51-100 100 路径数区间 图信恳泄露路径数分布统计表 根据统计分析发现,大多数应用都会有意无意的去获取 系统的一些隐私信息, 而这些获取到的信息流向了三个地方:首先是存储到了本地文什或系统提供的数据库中,这 部分信息一般供应用自身使用,但是如果攻击者获取到了应用存储文件,这部分信息就可能 泄露;其次,一部分信息被日志打卬岀来,廾发者为了调试程序而打卬的一些信息中可能包

...展开详情
试读 12P 论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf 46积分/C币 立即下载
    1/12
    论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf第1页
    论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf第2页
    论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf第3页
    论文研究-基于Soot的Android应用静态污点分析工具的研究 .pdf第4页

    试读已结束,剩余8页未读...

    46积分/C币 立即下载 >