macOS取证工具mac_apt的重大更新:深入解析BTM文件处理机制

本文详细介绍了macOS取证工具mac_apt在AUTOSTART插件上的重要更新。文章深入解析了macOS 13及以上版本中用于管理登录项和后台任务的.BTM文件结构,包括其存储路径、序列化格式、关键的“type”和“disposition”参数含义,以及工具如何精准解析这些数据以辅助取证分析。

mac_apt更新:BTM文件处理详解

本文重点介绍了mac_aptAUTOSTART插件的改进。

自 macOS 13 (Ventura) 起,登录项和后台任务通过.BTM文件进行管理和跟踪。该文件位于以下路径: /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v<xx>.btm 其中<xx>是版本号,目前在 macOS 15.2 上是 13。

通过系统设置中的“登录项与扩展”页面,终端用户可以查看到其中大部分(但非全部!)信息,如下图所示。 图 1 - 系统设置中的登录项与扩展

mac_aptAUTOSTART插件原先已能处理BTM文件,但此次更新有了显著改进。此前,未解析BTM特有的参数,并且包含了开发者条目(这些并非自动启动项),导致数据难以阅读和解释,同时也遗漏了一些关键信息。

BTM文件是NSKeyedArchives,反序列化后包含每个用户的登录项和后台任务字典。 图 2 - .BTM文件中单个条目的片段

如何将这些数据解释并转换成如上图所示的友好GUI视图,主要取决于参数typedisposition。目前已观察到这些字段的以下值:

1
2
DispositionValues = { 0x01: 'Enabled', 0x02: 'Allowed', 0x04: 'Hidden', 0x08: 'Notified'}
TypeValues = { 0x00001: 'user item', 0x00002: 'app', 0x00004: 'login item', 0x00008: 'agent', 0x00010: 'daemon', 0x00020: 'developer', 0x00040: 'spotlight', 0x00800: 'quicklook', 0x80000: 'curated', 0x10000: 'legacy'}

type值指示该项是代理(agent)、守护进程(daemon)、应用程序(app)、用户定义项,还是Spotlight或QuickLook扩展。

当用户在“允许在后台运行”设置中将某个项目切换为“关”时,这将清除Disposition标志中的Allowed位,从而表示“不允许”。

mac_apt现在能够读取、解释并展示BTM参数,包括disposition、type、container、developer和executableModifiedDate。以下针对“Not Allowed”筛选的输出片段将显示与系统设置GUI中相同的输出。如上文图1(及下文图4)所示,2个Citrix项被切换为“关”,导致属于这些项的6个应用程序处于“不允许”组。 图 3 - 来自mac_apt的AUTORUNS输出片段,已按后台任务项和’Not Allowed’的disposition进行筛选 图 4 - 系统设置中被禁用的项目

这大大简化了后台应用程序的审查。如果应用程序本身禁用了某个启动项,那么Enabled标志将关闭,这会导致该标志不出现在BTM_Disposition列中。mac_apt会在Disabled列中填充值“1”来同时指示这种情况。

此外,还添加了一个AppArguments列,该列应从所有已处理的文件(BTM和plist)中填充完整的命令行参数。

请注意,mac_apt会处理所有遇到的.btm文件,因此您可能会看到重复的数据,因为可能存在旧的.btm文件,即之前macOS版本的残留痕迹。在我的测试系统中,我有BackgroundItems-v9.btmBackgroundItems-v13.btm。从取证角度来看,这有助于查看特定时间点的自动启动项。如果您希望只查看当前数据,必须在输出中对Source列进行筛选。

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