ABTraceTogether iOS应用深度技术解析:蓝牙追踪与取证分析

本文详细分析了阿尔伯塔政府发布的ABTraceTogether接触追踪应用的技术实现,包括基于BlueTrace协议的蓝牙交互机制、数据加密方式、iOS沙盒取证价值,以及静态分析和文件系统 artifacts 的深入考察。

观察总结

注册过程仅要求提供电话号码,不收集其他个人身份信息。该应用基于开源的BlueTrace/OpenTrace框架构建,最初于2020年3月在新加坡的TraceTogether应用中首次使用。

设备间的接触记录仅在本地存储,只有在卫生部门联系并要求时才会手动自愿上传。测试显示应用仅在进行必要通信时(如获取加密的前瞻性临时ID)才会与服务器交互。

追踪数据库分析未发现具有重大取证价值的信息。设备接触日志仅包含:1)对方设备的品牌型号 2)本机品牌型号 3)交互时间 4)接收信号强度指示器(RSSI)等接近度指标。其余数据均经过加密,没有卫生部门持有的密钥无法访问。

静态分析

应用版本1.0.0在运行iOS 13.2.2的iPhone 6S上进行分析,使用frida获取解密的应用二进制文件,并通过Hopper进行检查。这是一个用Swift编写的小型简单应用,代码量不多。

应用使用了OpenTrace库(BlueTrace的实现)。BlueTrace发布了详细说明技术方法的白皮书。

Info.plist分析

应用Info.plist包含权限请求的开发者描述:

  • NSBluetoothAlwaysUsageDescription:应用与附近运行相同应用的手机交换包含匿名ID的蓝牙信号
  • NSCameraUsageDescription:用于支持请求中上传照片
  • NSPhotoLibraryUsageDescription:用于支持请求中上传照片

应用最低要求iOS 13,这一要求限制了无法运行iOS 13的旧设备用户使用。

文件系统取证价值

位于Library/Application Support/的tracer.sqlite数据库中的ZENCOUNTER表记录了设备间的交互信息:

列名 描述
ZV 对方设备使用的BlueTrace协议版本
ZRSSI 接收信号强度指示器
ZTIMESTAMP 接触发生时间
ZTXPOWER 传输功率
ZMODELC 设备品牌型号(中央设备)
ZMODELP 设备品牌型号(外围设备)
ZMSG 加密的有效载荷,base64编码
ZORG 外围设备注册的国家/卫生机构代码

前瞻性临时ID在Library\Caches\ca.ab.gov.ahs.contacttracing\fsCachedData{GUID}文件中找到。

未来工作

iOS钥匙链中存有多个条目,值得进一步研究,考虑到临时ID令牌生成在服务器端进行,这些条目的用途令人好奇。

更新说明

2020-05-02更新:OpenTrace项目使用GPL许可证可能存在问题,因为该许可证要求与其一起分发的所有内容也必须使用GPL许可证。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计