`
MyEyeOfJava
  • 浏览: 1151869 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71167
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

DroidBox简介

阅读更多

目前Android系统最大的问题是什么?安全,这也是Android总是进不了企业的主要原因。如果问主要的安全问题是什么?我想应该是吸费、流量消耗和隐私泄漏。针对于隐私泄漏的侦测,目前有一个开源软件叫做DroidBox,算是做的不错的了。今天我们就来分析一下DroidBox是如何侦测隐私泄漏的。

DroidBox的核心技术称作TaintDroid,从字面上理解就是污染机器。我们都知道标识隐私数据并不难,只要牢牢卡住相关的API调用就可以了,问题是如何知道这些隐私数据被泄漏出去了?恶意程序拿到隐私数据后往往会做一系列的操作,包括截取,拼装,加密甚至是进程间传递,这使得隐私数据的跟踪变得相当困难。所以关键技术就演变成了:如何跟踪数据。TaintDroid的思想就是将所有隐私数据变成污染源,在程序运行的过程中如果你想对污染源进行截取,拼装,加密,传递等等操作,那么你新生成的数据也会被污染。如果有被污染的数据被泄漏出去,那么就发生了隐私泄漏。好,到这里问题变成了如何标记数据和如何进行污染。

先说比较好搞定的问题,如何进行污染。对于java操作(dex)的污染规则基本上可以用下图表示:

可以看出污染的三大途径:赋值,参数传递,返回值。目前在dex里面无论怎么对隐私数据操作,都会被污染。而对于native的code, 污染会相对复杂一些,尤其是第三方的native code,但基本的理念还是一样的,这里就不详细介绍了。至于在Android里面具体污染的层次,可以用下面这张图来理解:

基本上能传播的方式都可以污染,Dalvik之上是变量级的污染,Native是调用级的污染,存储是文件级的污染,IPC还有消息级别的污染。

污染跟踪的问题解决了,另一个问题是如何标记,换句话说,就是在什么地方存储每块数据是否被污染的标记。对于不同的层次有不同的存储方式。最容易搞定的依然是Dalvik以上的部分,系统Native库较为难搞,最不好搞的是第三方Native库。基本上存储的方式可以用下面这张图表示:

对于Dalvik以上的部分,利用修改Dalvik来搞定,因为Android里面的java是32bit的,所以所有引用的大小也都是32bit,TaintDroid为每个引用多申请了一倍的空间,即64bit。程序自身还是用前32bit, 而TaintDroid就可以利用剩下的32bit, 采用bitmap的方式可以标注32种不同的隐私类型。这种方式带来的副作用不言而喻,会导致程序引用占用的内存增加一倍,而优点是可以精确定位到每个对象是否被污染。
对于Native的模块就不这么简单了,因为无法修改指针长度(改kernel应该可以,但影响面太大了)。所以TaintDroid的污染是基于调用级的,利用增加调用参数的方式来放污染标记。例如上图第三列,有一个调用的参数有两个:arg0和arg1, TaintDroid再多加3个参数,第3个参数是输出参数,调用完成后return值的标记就放在这里,第4和第5个参数是输入参数分别是arg0和arg1的污染标记。通过这种方式,在做完一次Native调用后就可以得到return值的污染标记(注意,仅仅是return值),所以这种方式被称为面向调用的污染。

应该说DroidBox最核心的东西就这么多了,那么TaintDroid是否就完美了呢?显然不是的,它依然存在FP和FN。FN主要存在于Native Code的调用,尤其是第三方Native Code的调用。对于这个问题TaintDroid有个坑爹的对策:不允许调用第三方的动态库。这就意味着所有调用第三方库的程序都不能在TaintDroid的Image上运行。坑爹吧,因为我们知道尤其在中国很多热门应用都要用到第三方库的。而FP的情况也并不乐观,FP出现问题的地方主要包括:自身设计问题和先天条件限制。我们在实际使用的过程中发现TaintDroid会吧所有的pipe操作误认为是文件操作,只要有隐私数据参与pipe操作,就会有FP发生。而TaintDroid对于Array的策略也是另外一个FP的来源,由于Array在Dalvik中只有一个引用,所以TaintDroid只有一个标记的位置,因而策略是宁可错杀一千,不可放过一个。即使未来Array里面的那个污染源已经被移走了,Array的标记依然不会被清除。

针对于这些问题,我们team已经做了很多改动和修补,也许在未来我们会公开我们的源码。

分享到:
评论

相关推荐

    安卓动态分析平台droidbox

    **一、DroidBox简介** DroidBox是由谷歌项目维护的开源工具,其主要目标是模拟安卓应用程序的执行,记录其在运行时的行为。该工具能够对APK进行动态分析,包括但不限于文件系统交互、网络通信、权限使用等,帮助...

    DroidBox 4.1.1

    《DroidBox 4.1.1:深入解析Android安全沙箱测试》 在移动设备领域,Android系统因其开源性和灵活性而备受青睐,但这也带来了安全挑战。为了解决这个问题,开发者们引入了沙箱技术,其中DroidBox是极具代表性的工具...

    DroidBox411

    DroidBox411RC.tar.part2.rar

    droidbox, Android应用的动态分析.zip

    droidbox, Android应用的动态分析 介绍DroidBox是为Android应用程序提供动态分析的。 在分析完成时生成的结果中描述了以下信息:已经分析软件包的哈希传入/传出网络数据文件读取和写入操作通过DexClassLoader启动...

    DroidBox411RC.tar.part1.rar

    DroidBox411RC.tar.part1.rar 动态检测android

    DroidBox411RC.tar.part3.rar

    DroidBox411RC.tar.part3.rar

    DroidBox 4.1.1安卓沙箱最新版.rar

    软件介绍: 最新版本的android安卓安全沙箱软件DroidBox 4.1.1,方便动态监控分析安卓程序,能够实时分析程序运行时的意图。先搭建DroidBox运行环境,建议在ubuntu13.04下运行至少要2G内存。

    droidbox:用于在 Clojure 中构建 Android 应用程序的虚拟开发环境

    机器人盒子通过 Terje Norderhaug VirtualBox 开发环境/沙箱,用于使用当前 SDK 在 Clojure 中构建 Android 应用程序。 版本:预览在 VirtualBox 上安装规范的 Clojure Android 应用开发沙箱: Ubuntu 14.04 Oracle...

    droidbox:旧机器人项目的沙盒

    “DroidBox:旧机器人项目的沙盒”这一标题暗示了这是一个与Android相关的项目,且具有实验性质。"旧机器人项目"可能指的是早期的Android应用或自动化工具,而“沙盒”通常指的是一个安全的环境,用于测试和开发应用...

    x14.12-xmobile-droidbox:文章“控制感染”的材料

    《x14.12-xmobile-droidbox:掌握“控制感染”技术的解析》 在信息技术领域,安全始终是不容忽视的重要环节。本文将深入探讨一个名为“x14.12-xmobile-droidbox”的项目,它与Android设备的安全分析密切相关。...

    java8看不到源码-DroidBox_AndroPyTool:DroidBox_AndroPyTool

    看不到源码DroidBox-AndroPyTool 这是要使用的工具的一个分支。 它包括新功能: 性能提升 可以在非 GUI 模式下运行(服务器的理想选择) 使用Strace 进行低级进程监控 如何安装 0. 要求 AndroPyTool 有一系列的依赖...

    droidboxhelper:对 droidbox 源代码和帮助文件稍作修改,将输出转换为更易读的形式

    机器人助手对 DroidBox 源代码和帮助文件稍作修改,将输出转换为更清晰易读的形式。用法将 scripts/droidbox.py 文件(适用于 DroidBox 4.1.1)替换为此存储库中提供的文件或修改第 512 行附近的代码: - print(json...

    mobile-sandbox:移动沙箱 - 安卓应用沙箱

    移动沙盒 在这个 repo 中,您可以找到一些我们在 Mobile-Sandbox 项目中使用的知名工具的工具和补丁,以及系统最重要模块的源代码。... 在这里你可以找到一些有用的脚本和工具来使用 DroidBox(例如,DroidBox 4.1

    apkinspector

    apkinspector 请按照以下步骤进行动态分析: 安装 Cython-0.21.1 转到并下载适用于 linux 的 sdk ...将图像粘贴到 cd Desktop/apkinspector/webapp/tools/DroidBox_4.1.1/images cd 桌面/apkinspector/webapp/tool

    Android系统外部SDK安全漏洞检测研究.pdf

    本研究选择了35个使用较为广泛的非官方SDK,结合污点追踪、二进制插值方法,并使用FlowDroid和DroidBox软件工具分析了应用于外部SDK开发的应用程序。研究结果表明,在35个外部SDK开发工具中,19个(54.3%)存在SSL/...

    AndroPyTool:从Android应用程序自动提取静态和动态功能的框架

    DroidBox图像是固定的。 动态分析现在正在工作。 这是一个用于从Android APK中提取静态和动态功能的工具。 它结合了各种著名的Android应用程序分析工具,例如DroidBox,FlowDroid,Strace,AndroGuard或VirusTotal...

    基于行为的移动智能终端恶意软件自动化分析与检测系统.pdf

    动态分析可以在实际运行环境中捕获恶意软件的行为,例如,TaintDroid系统提供了一种高效的动态污点追踪技术,能够实时追踪隐私泄露,而DroidBox系统则是在TaintDroid的基础上进一步完善,用于应用程序行为分析的全...

    AndroPyTool,从android应用程序中自动提取静态和动态特性的框架.zip

    它结合了不同的知名android应用分析工具,如droidbox、flowdroid、strace、androguard或virustotal分析。提供一个包含apk文件的源目录,andropytool应用所有这些工具来执行预静态、静态和动态分析,并生成json和csv...

    面向Android生态系统中的第三方SDK安全性分析.pdf

    研究者选取了129个市场上流行的SDK进行深度分析,采用了包括静态污点追踪、动态污点追踪、动态二进制插桩在内的多种分析方法,并利用flowdroid、droidbox等专业工具进行辅助检测。 分析结果显示,超过60%的被选SDK...

Global site tag (gtag.js) - Google Analytics