Android12的隐私设计分析

Android 12 是 Google 研发的操作系统 , 于 2021 年 10 月 5 日发布。虽然最引人注目的是用户界面(Material You)的重新设计 , 但增加了隐私控制面板 , 这是谷歌向用户提供的通过透明度增加对 Android 平台信任的设计 。
谷歌决定实现隐私控制面板 , 以响应用户的请求 , 了解他们的应用程序正在访问或使用哪些数据 。知道你的手机在做什么总是一件好事 , 包括当你没有使用它时它在做什么 , 或者你在使用它时它在后台做什么 。Android 设备不断生成、收集和使用来自各种类别(我们的位置、我们的联系人等)的数据 , 其中大部分是在后台生成 。OEM/ 操作系统开发人员这样做是为了提供更好的用户体验 。作为用户 , 当我们在使用我们的设备之前同意服务条款时 , 我们会盲目地同意 。不过 , 隐私控制面板旨在通过让 Android 用户了解手机上发生的位置、摄像头和麦克风活动来消除用户的安全疑虑 。
现在让我们看看隐私控制面板 , 看看是否有任何方法可以检查该功能捕获数据 。了解应用程序使用了手机的位置、摄像头或麦克风可以通过多种方式在检查期间提供帮助 。对新手来说 , 当应用程序报告的目的与录制音频无关时 , 知道可疑应用程序正在访问手机的麦克风可能会对涉及移动恶意软件的检查有所帮助 。或者 , 据称手机所有者从未使用过的应用程序在隐私控制面板的摄像头部分中有条目 。当然 , 这只是两个例子 。我相信有创意的审查员 / 调查员可以想出其他方法来应用这些数据 。
在测试中 , 我使用 Pixel 3 运行 Android 12 , 并安装了 10 月的补丁 。我还使用了最新版本的 WhatsApp ( 2 。21 。24 。22 ) 和 AirTracker ( 1 。1 。0 ) 作为第三方应用程序 。
隐私控制面板是 Android 12 独有的功能 。在运行 Android 11 或更低版本的设备上找不到它 。默认情况下启用 。从用户的角度来看 , 隐私控制面板与 Google 的 Digital Wellbeing 非常相似 。可以通过进入设置 > 隐私 >隐私控制面板找到它 。UI 中有一个圆圈 , 显示过去 24 小时内 Location、Camera 和 Microphone ( LCM ) 的使用情况 。
隐私控制面板 UI
关于时间限制的一个说明 。谷歌声明用户不会在 24 小时后回忆他们的活动 , 这解释了 24 小时的限制 。
在圆圈下方 , 用户可以按下这三种类别中的一种 , 以获得使用该类别的更多应用信息 ( 红框 – 图 1 )。
使用手机位置的应用程序
上图显示了使用手机位置的应用程序以及使用该位置的时间线 , 所有这些都是按照时间顺序排列的 。按下右上角的三个点 , 用户就可以选择显示使用过位置功能的系统应用程序 。下图显示了与上图大致相同的时间框架 , 但是添加了系统应用程序 。
更多使用位置的应用程序
有趣的是 , 摄像头和位置并不提供查看使用过它们的系统应用的功能 。
在图 1 中红色框的下方有一个部分:” 参见其他权限 “ , 展开它会显示额外的权限 , 例如电话、通话记录、身体传感器以及文件和媒体 。在撰写本文时 , 隐私控制面板还没有跟踪这些权限 , 但可能以后会跟踪 。
图 4 和图 5 显示了 UI 中摄像头和麦克风的使用情况 。
下面两个图显示了摄像头和麦克风在 UI 中的使用情况 。
使用手机麦克风的应用程序
从用户的角度来看 , 就是这样 , 操作很简单 。
不幸的是 , 隐私控制面板背后的取证并不像 UI 那么简单 。隐私控制面板将其数据存储在 USERDATA/system/appops/discrete 目录路径中 。如下图所示:
隐私控制面板文件
我观察到在目录中八 ( 8 ) 到十七 ( 17 ) 分钟之间的任何地方都创建了文件 。这只是我的观察;根据电话使用情况 , 频率可能会更低或更高 。除非最近卸载了某个应用程序 , 否则审查员应该会在此目录中找到大量文件(稍后会详细介绍) 。在此目录路径中找到的文件聚合代表 24 小时的使用时间 。每个文件都以特定格式命名 , 以文件创建时的 Unix 纪元时间戳开头 , 后跟字母 “tl” 。虽然文件没有扩展名 , 但它们是 XML 文件 。而且 , 它们不仅仅是任何 XML 文件 , 它们是 Android 二进制 XML 文件 。Android 12 已开始对其部分 XML 文件使用新的二进制格式 , 这些文件采用新格式 。如果你有兴趣了解有关格式的更多信息 , 请参阅 Alex Caithness 的这篇文章 。不用说 , 在检查它们之前必须进行一些解码 , 或者使用的取证工具需要能够解释格式 。在我写这篇文章的时候 , 我知道有两个工具可以解码这些文件:Alexis Brignoni 的 ALEAPP 和 Cellebrite Physical Analyzer 7 。52(我还没有测试过 7 。52 , 但我有权威的它可以解码它们) 。为了快速解码 , 我使用 Alex Caithness 的 ABX Python 模块将文件转换为人类可读的形式 。我强烈建议下载模块以进行快速解码;亚历克斯在这方面做得非常出色 。图 7 显示了使用模块解码后的文件之一 。
解码的隐私控制面板 XML 文件
Alex 的模块将文件解码为没有任何格式的流程 , 为了便于阅读 , 我对已解码的 XML 文件进行了格式化处理 。
隐私控制面板是 AppOps 的一部分 , 它可以做几件事 , 包括跟踪应用程序何时利用手机的运行时权限 。如果你不熟悉 Android 的危险权限 , 我去年写了一篇关于它们的文章 , 你可以点击这里阅读 。危险权限包括授予应用使用手机位置、摄像头或麦克风的权限 。因此 , 如果你曾经查看过 appops 。xml ( USERDATA/system/ ) 文件 , 那么隐私控制面板中文件的一些内容会看起来很熟悉 。
上图所示的文件中表示了多个应用程序 , 每个应用程序都有自己的信息 。为了帮助理解应用程序是如何表示的 , 下图仅显示了一个应用程序 AirTracker 的条目 。
AirTracker 的入口
上图中的条目表示隐私控制面板中的单个条目 , 有三个与此条目相关的 XML 值 。第一个是 “pn”(包名称 – 红色框) , 它代表利用 LCM 的应用程序 。接下来是值 “op”(可能代表 ” 操作 ” ——蓝色框) 。这表示使用了哪个 LCM 。在此条目中 , AirTracker 使用了位置 ( op=1 )。由于隐私控制面板正在跟踪三件事(位置、摄像头和麦克风) , 因此审查员可以在这里看到三个 ” 操作 ” 值:
1 = 位置
26 = 摄像头
27 = 麦克风
上图中最后的重要值是 “nt” ( 绿框 )。虽然我无法准确确定 “nt” 代表什么 , 但我怀疑它是与 noteOps 相关的 “note time” 。不管它是什么意思 , 与 “nt=” 相关的时间戳代表了 AirTracker 使用手机位置的时间 。
下图显示了如何在隐私控制面板 UI 中查看它(使用相同的颜色编码) 。请注意 , 隐私控制面板中显示的时间为当地时间 ( UTC -0500 )。
上图在隐私控制面板 UI 中表示
有一件重要的事情需要注意 。图 8 和图 9 所示的条目是 AirTracker 在后台自动运行的结果 。检查人员应该了解隐私控制面板及其写入存储的基础文件将包含与用户活动和系统 / 自动活动相关的信息 。当尝试将隐私控制面板条目归因于用户活动时 , 检查者应在此处与在设备上发现的其他人确认工件 。
图 8 是一个简单的条目 , 图 10 显示了一个更复杂的条目 。它代表了我用 Google 摄像头拍摄的一段大约两分钟长的视频 。
拍摄完两分钟的视频后进入摄像头
创建视频时 , 摄像头利用了手机的位置、摄像头和麦克风 。图 10 具有图 8 中所示的先前 XML 值(pn、op 和 nt)和一个附加值 。该条目可以分为三个部分 , 每个部分代表一个 LCM 。橙色箭头标记每个新部分的开始 。在图 10 的顶部 , 我们有包名称(红色框)、位置使用情况(op=1 – 顶部蓝色框)和使用位置的时间(nt – 顶部绿色框) 。
在该条目下方 , 我们有第二个操作(op=26 – 中间蓝色框)和第二个时间戳(中间绿色框) 。op=26 代表摄像头使用情况 。虽然该操作下有多个时间戳(nt 值) , 但操作下的第一个时间戳(中间绿色框)是隐私控制面板 UI 中显示的时间戳 。紫色框中的值 ( nd=133443 ) 表示摄像头使用的持续时间 ( “d” )  , 以毫秒为单位 。请注意 , 虽然我的视频大约两分钟 , 但在拍摄实际视频之前和之后的短时间内 , 摄像头都在使用 。
底部条目的最后一部分以 XML 值 op=27(底部蓝色框)开头 , 它表示我在拍摄视频时摄像头使用的麦克风 。注意 , 时间戳 ( 底部绿色框 ) 与摄像头使用相关的时间戳很接近 。麦克风使用的持续时间(以毫秒为单位)显示在底部的紫色框中(nd=126022) 。
下面三幅图代表隐私控制面板 UI 中的进程(时间以 UTC -0500 为单位) 。虽然下图中显示的麦克风使用持续时间为 “3 分钟 “ , 但上图中显示的麦克风使用持续时间值 ( nd ) 是准确的 。
Google 摄像头的位置使用情况
Google … Camera 的摄像头使用情况
通过谷歌摄像头使用麦克风
图 8 和图 10 显示了应用程序在其中一个 XML 文件中的单个操作 。在某些情况下 , 同一个应用程序会被多次使用并在单个 XML 文件中表示 。具体如下图所示 。
在单个 XML 文件中多次使用 Google 摄像头
上图显示了 Google 摄像头在短时间内多次利用手机的位置(红色框)和摄像头(蓝色框) 。如下面两个图所示 。
隐私控制面板 UI 中的摄像头位置使用条目
隐私控制面板 UI 中的 Camera … camera
根据此处的调查结果 , 隐私控制面板似乎会在短时间内频繁使用的情况下 , 在 UI 中向用户显示上次使用的时间和总的使用持续时间 。当出现这种情况时 , 最好查看持续时间值 ( nd= )  , 以确定是否有大量使用 。
审查员可能会发现的另一个 XML 值是属性标签或 “at” , 请参见下图中的红色框 。
属性标签 ( at )
据我所知 , 属性标签允许应用程序开发者提供他们正在执行的操作的上下文 。应用程序开发人员不需要提供属性标签 。
不幸的是 , 隐私控制面板不会保留有关已删除应用程序使用情况的数据 。为了测试这一点 , 我使用 WhatsApp 录制了大约 38 秒长的视频 , 然后从 USERDATA/system/appops/discrete 文件夹中提取了相应的 XML 文件 。如下图所示 。
摄像头和麦克风使用的 WhatsApp 条目
在上图中 , 可以看到包名称(红框)摄像头使用情况(蓝框)、麦克风使用情况(绿框)以及两者的持续时间(紫框) 。该条目也可以在隐私控制面板 UI 中看到 。如下面两个图所示:
WhatsApp 摄像头使用情况
WhatsApp 麦克风使用情况
我卸载了 WhatsApp 并返回到 USERDATA/system/appops/discrete 文件夹 , 发现了一些有趣的行为 , 如下图所示 。
一切都消失了
上图中的绿色框是我卸载 WhatsApp 之前 USERDATA/system/ apppops /discrete 文件夹中的文件列表的最后一部分 。红色框表示卸载 WhatsApp 后的相同文件夹 。安装后 , 整个文件夹被刷新 , 不留下任何文件 。然而 , 大约一分钟后 , 一个新文件被创建(上图中的蓝色框) 。我还注意到隐私控制面板 UI 保留了有关应用程序使用情况的数据 , 但有关 WhatsApp 的数据除外 。我从 USERDATA/system/appops/discrete(以 4300tl 结尾)中提取了一个新文件并对其进行了解码 , 具体如下图所示 。
数据转储
似乎在卸载应用程序时 , 会刷新 USERDATA/system/appops/discrete 文件夹 , 有关剩余应用程序的使用数据被转储到单个 XML 文件中 , 该文件被放回 USERDATA/system/appops/discrete 文件夹中 , 这样隐私控制面板就可以开始创建新的 XML 文件 。我搜索了新的单一文件 , 但没有找到任何有关 WhatsApp 的信息 。隐私仪表板的 UI 中也删除了对 WhatsApp 的引用 。
WhatsApp 不再使用摄像头
WhatsApp 不再使用麦克风
关于三星的注意事项
截至本文发表之时 , 运行 Android 12 系统的三星手机还没有大量供货 。三星已经推出了 Android 12 来选择设备 , 但在我的 DFIR 圈子里 , 没有一个人有可以进行安全检查 。不过 , 我还是找到了三星隐私仪表盘功能的截图 。
三星 Android 12 中隐私和隐私 > 权限使用历史的屏幕截图
【Android12的隐私设计分析】虽然三星将拥有此功能 , 但他们已将名称更改为 ” 隐私使用历史 “ 。我怀疑名字不会是唯一的区别 。三星背后的取证可能与这篇文章中描述的有所不同 。

    推荐阅读