zoukankan      html  css  js  c++  java
  • TaintDroid简介

    1、Information-Flow tracking,Realtime Privacy Monitoring。信息流动追踪,实时动态监控。

    2、TaintDroid是一个全系统动态污点跟踪和分析系统,能同时跟踪多个敏感信息源。通过监控敏感数据让用户了解第三方app的使用行为。

    3、监控30款常用的应用程序,其中20款中发现68例滥用用户位置信息和设备识别信息的行为。

    4、移动平台操作系统对app访问隐私权限只提供粗粒度访问控制,不能了解到底是被如何使用的。只能盲目相信app会合理使用隐私信息。

    5、TaintDroid使用细粒度动态污点跟踪,即位于数据项或变量中的标签。

    6、TaintDroid利用Android虚拟化架构整合了四种粒度的污点传播: Message-level,Variable-level,Method-level,File-level。

    7、

    通过VM解释器对不受信任的app代码中进行variable-level跟踪,更侧重于数据上而不是代码上存储污点标志。

    应用程序之间采用Message-level跟踪,开销低,范围扩展到整个系统。

    系统原生库采用Method-level跟踪。

    永久性信息以File-level形式跟踪,确保以保守的方式保留污点标志。

    8、

    信息在可信的app处被tainted(1),污点接口调用一个native方法(2),此方法interface一个DVM解释器,每个解释器中都有一个Virtual Taint Map,存储特定的污点标记tag。当可信app使用tainted数据时,DVM传输taint tags(3)。当可信app进行IPC通信时若使用tainted信息,则Binder(4)会确保该信息包会包含taint tag,此tag反映信息包中所有数据的污点标签信息。该 信息包 通过 binder kernel module(5)进行传输,然后被远程的不可信 app 接收。更改后的binder从信息包中获取taint tag(6),远程DVM解释器将taint tag传给不可信app(7)。当不可行app调用一个动态库,则该库会从待发数据中抽取tainted tag,并报告此事件(8)。

    9、以上结构需要克服的问题:

      (1)、taint tag存储:将污点标签存储在与变量相邻的内存中,减少存储开销。

      (2)、解释型代码污点传播:(这一部分不是很懂) 污点传播逻辑 tainted对象引用

      (3)、原生库代码污点传播:不受监控。 内部VM方法:被解释后的代码直接调用,传递一个指向32位寄存器参数数组的指针,返回一个指向返回值的指针。一般无需修改。 JNI方法:(Java Native Interface)。TaintDroid询问一个方法 profile表,该表用于传播信息的更新。一个方法 profile 是一个(from,to)数据对的 list,用于指示变量之间的数据流(这些变量可能是参数、类的变量、返回值等)。

      (4)、IPC污点传播:跟踪app之间的通信时发送的数据包中的敏感信息。

      (5)、二次存储污点传播:确保被污染的数据存入文件时,污点标记会在稍后文件被读取时恢复。

    10、隐私Hook的放置

      (1)、低带宽传感器:信息常变换,被多个app使用,如位置、加速器

      (2)、高带宽传感器:传输大量数据。只被一个app使用,如摄像头

      (3)、信息数据库:电话簿、短信等,存于文件数据库

      (4)、设备标识符:设备的唯一标识,如IMEI,SIM

      (5)、网络流动站:信息传递时的网络接口

    11、应用程序研究:

      (1)、实验共生成1130个TCP连接,正确标记了105个含有受污染的隐私敏感信息连接。

      (2)、半数应用程序将位置信息发送到广告服务器。

      (3)、30款app中20款要求获取手机状态并获取访问互联网权限。

      (4)、设备唯一ID IMEI遭到泄露。app通过收集手机标识符来跟踪用户行为,如手机号、社交网络、用户资料、电子邮件等。且会被长期追踪难清除。

    12、性能研究:

      TaintDroid只引入了很小的性能开销。因为:(1)大多数应用程序主要出于“等待状态”,(2)重量级运算如屏幕更新、网页渲染等均不发生在受监控的原生库中。 TaintDroid总体平均CPU消耗为14%,内存开销为4.4%。

    13、方法设计局限性:

      为了降低开销,TaintDroid只跟踪信息流(显式流),而不跟踪控制流(隐式流)。恶意软件可能使用控制流泄露隐私敏感信息。要跟踪控制流则需要进行静态分析。信息离开手机后,服务器会返回网络应答数据,TaintDroid无法跟踪。

    实现上的局限性:

      DirectBuffer对象使用PlatformAddress类中的原生地址,而文件IO操作中对直接变量进行读写操作的API会默认这些原生地址来自于DirectBuffer。而DirectBuffer中的数据以非透明的形式存储在本地,所以TaintDroid不能跟踪。

    污点来源局限性:

      当被跟踪信息包含配置标识符时,会发生误报。所以对包含配置参数的污点来源,应对个别变量进行污染。

  • 相关阅读:
    Windows Azure 架构指南 – 第 1卷 发布
    SQL Azure 入门教学(一):SQL Azure之初体验
    WPC大会新动态: Windows Azure Platform Appliance发布
    Windows Azure AppFabric 入门教学(七):多播(Multicast)
    PHP on Windows Azure 入门教学系列(一):在Windows Azure内运行PHP应用
    SQL Azure SU3 现已在全球6座数据中心开始启用
    WPC大会新动态:合作伙伴采纳Windows Azure
    时间的运算
    把字符串复制到剪贴板
    常用的表格效果
  • 原文地址:https://www.cnblogs.com/zlz099/p/6723764.html
Copyright © 2011-2022 走看看