博客
关于我
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 分组统计SQL语句
    查看>>
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    mysql 协议的退出命令包及解析
    查看>>
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mySQL 多个表求多个count
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>