博客
关于我
TaintDroid简介
阅读量:480 次
发布时间:2019-03-06

本文共 1568 字,大约阅读时间需要 5 分钟。

TaintDroid是一种全系统动态污点跟踪和分析系统,旨在监控和分析移动设备中的敏感信息流动,帮助用户了解第三方应用程序的隐私行为。以下是TaintDroid的核心功能和设计原理:

信息流动追踪与实时动态监控

TaintDroid通过细粒度的动态污点跟踪技术,能够同时跟踪多个敏感信息源,实时监控数据的流动路径。这种技术不仅能够追踪数据在内存中的传播,还可以延伸到文件系统,确保污点标记能够在必要时被恢复。

基于Android虚拟化架构的多层次污点传播机制

TaintDroid整合了四种粒度的污点传播机制:

  • Message-level(消息层面):适用于应用程序之间的通信,开销较低,覆盖范围广。
  • Variable-level(变量层面):针对不受信任的代码,污点标记存储在变量的内存旁边,减少存储开销。
  • Method-level(方法层面):用于跟踪系统原生库的调用,通过解释型代码的特性进行监控。
  • File-level(文件层面):对永久性信息进行跟踪,确保污点标记能够在文件被读取时恢复。
  • 信息流动的具体实现过程

    信息在可信应用程序中被标记为tainted后,会通过以下路径传播:

  • 污点接口调用:污点标记会调用一个native方法,进入DVM解释器。
  • DVM解释器的Virtual Taint Map:每个解释器都有自己的Virtual Taint Map,用于存储特定的污点标记。
  • 数据传输与binder机制:当可信应用程序通过IPC通信发送数据时,binder机制会确保数据包中包含污点标记。
  • 远程DVM解释器的处理:远程的不可信应用程序接收到数据包后,会从binder中提取污点标记,并将其传递给DVM解释器。
  • 动态库的调用:当不可信应用程序调用动态库时,污点标记会被抽取并报告,确保隐私信息的可追踪性。
  • 系统设计中的关键挑战

    TaintDroid在实现过程中需要解决以下关键问题:

  • taint tag存储优化:通过将污点标记存储在与变量相邻的内存中,显著降低了存储开销。
  • 解释型代码的污点传播:需要设计机制来跟踪解释型代码中的变量引用,确保污点能够在多层次传播中被正确传递。
  • 原生库的污点传播:由于原生库的调用方式复杂,TaintDroid需要通过profile表来跟踪JNI方法的数据流。
  • IPC污点传播:确保在应用程序间通信过程中,污点能够被正确传递。
  • 二次存储的污点恢复:在文件存储过程中,污点标记需要被临时保留,以便在文件被读取时能够恢复。
  • 隐私信息的采集与分析

    TaintDroid通过对30款常用应用程序的监控,发现了20款应用程序中存在滥用用户位置信息和设备识别信息的行为。研究结果显示:

  • 半数应用程序将位置信息发送到广告服务器。
  • 30款应用程序中有20款要求获取手机状态权限并访问互联网。
    3.设备唯一标识符IMEI的泄露问题:恶意软件通过收集设备标识符,进行用户追踪和行为分析。
  • 性能评估与系统局限性

    TaintDroid在性能上表现良好,系统运行的总体CPU消耗为14%,内存开销为4.4%。然而,系统设计存在以下局限性:

  • 控制流跟踪的缺失:为了降低性能开销,TaintDroid仅跟踪显式的信息流,而未对控制流进行跟踪,这可能导致恶意软件通过控制流泄露隐私信息。
  • 数据传输的局限性:TaintDroid无法跟踪信息离开手机后的传输过程,包括网络应答数据的返回路径。
  • DirectBuffer对象的限制:由于DirectBuffer对象的数据存储方式,TaintDroid无法跟踪文件IO操作中的直接变量。
  • 污点来源的准确性:部分配置标识符会被误判为污点来源,需要对相关变量进行单独标记处理。
  • 本文主要介绍了TaintDroid的核心设计理念和实现细节,全面分析了系统的功能、性能以及存在的局限性。

    转载地址:http://dgtbz.baihongyu.com/

    你可能感兴趣的文章
    Mysql中的using
    查看>>
    MySQL中的关键字深入比较:UNION vs UNION ALL
    查看>>
    mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
    查看>>
    mysql中的字段如何选择合适的数据类型呢?
    查看>>
    MySQL中的字符集陷阱:为何避免使用UTF-8
    查看>>
    mysql中的数据导入与导出
    查看>>
    MySQL中的时间函数
    查看>>
    mysql中的约束
    查看>>
    MySQL中的表是什么?
    查看>>
    mysql中穿件函数时候delimiter的用法
    查看>>
    Mysql中索引的分类、增删改查与存储引擎对应关系
    查看>>
    Mysql中索引的最左前缀原则图文剖析(全)
    查看>>
    MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
    查看>>
    Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
    查看>>
    Mysql中视图的使用以及常见运算符的使用示例和优先级
    查看>>
    Mysql中触发器的使用示例
    查看>>
    Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
    查看>>
    mysql中还有窗口函数?这是什么东西?
    查看>>
    mysql中间件
    查看>>
    MYSQL中频繁的乱码问题终极解决
    查看>>