博客
关于我
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 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-connector-java各种版本下载地址
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>
    MySQL-架构篇
    查看>>
    MySQL-索引的分类(聚簇索引、二级索引、联合索引)
    查看>>
    Mysql-触发器及创建触发器失败原因
    查看>>
    MySQL-连接
    查看>>
    mysql-递归查询(二)
    查看>>
    MySQL5.1安装
    查看>>