Apple FSEvents相关的取证问题总结
苹果FSEvents或文件系统事件对于每个苹果系统的安全审查员而言都是不可或缺的工具,通常,恶意软件在进行了非法操作之后,都会尝试删除其运行痕迹,而利用FSEvents,即使恶意软件已经将其操作痕迹完全清除了,我们仍可以轻松地获取到恶意文件的完整路径,创建和删除的日期。在这篇文章中,我们将介绍一下存储在磁盘中的苹果FSEvents日志的方方面面,包括FSEvents的背景信息和行为分析,主要涉及OS X以及iOS。
FSEvents简介
FSEvents或文件系统事件记录了文件系统对象,如安装在OS X中的卷上发生的文件和文件夹的更改事件,OS X中包括TimeMachine和Spotlight在内的多个工具都在使用它。
一开始,OS X 10.5和10.6版本仅捕获与文件夹相关的事件,等到OS X 10.7及以后的版本都引入了FSEvemts,它类似于Windows系统的NTFS更改日志,用于记录文件系统活动的全部记录,并将数据存储在UsnJrnl:$ J中。
当FSEvent日志被解析时,以前发生的文件系统事件,如文件,文件夹,符号链接和硬链接创建,删除,重命名,修改,权限更改等数据都可以被调出来审查。
可能对调查有价值的信息包括,安装和卸载外部驱动器和磁盘映像,用户配置文件目录中的活动,文档编辑,互联网活动,移动到垃圾文件的文件,下载的文件等等。
FSEvent日志存在的位置
在OS X的位置
在OS X上,FSEvent日志位于系统分区根目录中的“.fseventsd /”的隐藏文件夹中。请注意,默认情况下,该文件夹会在正在运行的Mac上的Finder中被隐藏,并且访问它需要提升用户的权限。
在iOS的位置
对于iOS设备来说,存在多个存储FSEvent日志的位置。请注意,通常需要越狱设备来获取FSEvent日志。 FSEvent日志位置包括:
1)系统:/.fseventsd'
2)数据:/private/var/.fseventsd'
3)开发人员补丁:/DeveloperPatch/.fseventsd'
包含用户首次使用设备之前的记录,如果操作系统在购买后被修补过,还可能包括修补程序活动。
在外部设备中的位置
对于插入Mac的外部设备来说,FSEvent日志将位于“.fseventsd /”目录中的设备的根文件夹中。然而,有几种特殊情况会导致外部设备虽然具有“.fseventsd /”文件夹,但文件夹中却没有记录的日志:
1.虽然外部设备已插入Mac,但设备已拔下电源,没有进行安全删除,这会导致FSEvent日志丢失。例如,用户直接从Mac中拔出usb,而不使用Finder中的卸载标识。
2.虽然将外部设备插入到Mac,设备也被安全卸载了,但是在操作系统完成将FSEvent写入磁盘之前,设备已拔下电源。
3.虽然外部设备已插入Mac,但日志文件与设备的文件系统存在兼容性问题。
FSEvent日志文件
'.fseventsd /'目录可以包含多达数百个日志文件,每个日志文件都会包含几天到几个月的历史文件系统和用户活动的日志。
单个日志文件的保存时间,取决于卷宗上所记录的运行操作数量,比如,系统更新,升级和应用程序安装往往会生成大量的FSEvent。
日志是以gzip存档,并使用以十六进制格式表示的特定命名标准命名。每个FSEvent日志的名称是由存储在FSevent日志文件中的最后一个事件ID加1标识的。
例如,使用下图中列出的第一个FSEvent日志,当文件名从十进制值“00000000000a4b3e”转换为十进制时,该值为674622。因此,此文件中的最后一个事件ID为674621,比674622小1。
FSEvent记录周期
FSEvent记录最初存储在内存中,当记录卷宗上的事件对象发生更改时,FSEvents API将检查对象是否已经使用它的相对完整路径分配了事件ID(包括事件ID在内的FSEvent记录的组件将在后面进行更详细的讨论)。如果没有为内存中的对象分配事件ID,则会分配一个事件ID,并将对象的相对完整路径,记录标志和事件ID存储在内存中。如果对象已经被分配了一个事件ID,API将更新记录标志以包括当前的更改。对于对象在内存中分配事件ID时所引起的每个后续更改,API会根据记录标志将更改对象合并并将其存储为对象的单个事件。
当FSEvents API确定内存缓冲区已满或已卸载卷宗时,就会以FSEvent日志文件的形式将事件刷新到磁盘。一旦刷新到磁盘,API将不会修改日志的内容。
如前所述,可以在单个FSEvent记录中记录多个更改,每个更改都会清楚记录对象发生了什么样的更改。例如,如果创建了用户桌面上的文本文件,然后修改,五分钟后再次修改,然后最终删除,这两个修改只会作为单个事件记录一次,解析文本文件的事件记录可能如下所示:
请注意,即使上面的FSEvent记录显示了发生了哪些更改,但更改的顺序也不会显示在日志中,这是由于FSEvent API API在记录更改时所施加的粒度不足而导致的结果。
FSEvent日志格式
FSEvent日志以gzip格式存储为压缩文件,文件解压缩后,可以使用十六进制编辑器打开文件,以便可以查看原始字符串。
FSEvent记录组件
每个FSEvent日志都包含代表卷宗上对象的历史更改记录,FSEvent日志中的每个记录包含三个主要组件:
苹果FSEvents或文件系统事件对于每个苹果系统的安全审查员而言都是不可或缺的工具,通常,恶意软件在进行了非法操作之后,都会尝试删除其运行痕迹,而利用FSEvents,即使恶意软件已经将其操作痕迹完全清除了,我们仍可以轻松地获取到恶意文件的完整路径,创建和删除的日期。在这篇文章中,我们将介绍一下存储在磁盘中的苹果FSEvents日志的方方面面,包括FSEvents的背景信息和行为分析,主要涉及OS X以及iOS。
FSEvents简介
FSEvents或文件系统事件记录了文件系统对象,如安装在OS X中的卷上发生的文件和文件夹的更改事件,OS X中包括TimeMachine和Spotlight在内的多个工具都在使用它。
一开始,OS X 10.5和10.6版本仅捕获与文件夹相关的事件,等到OS X 10.7及以后的版本都引入了FSEvemts,它类似于Windows系统的NTFS更改日志,用于记录文件系统活动的全部记录,并将数据存储在UsnJrnl:$ J中。
当FSEvent日志被解析时,以前发生的文件系统事件,如文件,文件夹,符号链接和硬链接创建,删除,重命名,修改,权限更改等数据都可以被调出来审查。
可能对调查有价值的信息包括,安装和卸载外部驱动器和磁盘映像,用户配置文件目录中的活动,文档编辑,互联网活动,移动到垃圾文件的文件,下载的文件等等。
FSEvent日志存在的位置
在OS X的位置
在OS X上,FSEvent日志位于系统分区根目录中的“.fseventsd /”的隐藏文件夹中。请注意,默认情况下,该文件夹会在正在运行的Mac上的Finder中被隐藏,并且访问它需要提升用户的权限。
在iOS的位置
对于iOS设备来说,存在多个存储FSEvent日志的位置。请注意,通常需要越狱设备来获取FSEvent日志。 FSEvent日志位置包括:
1)系统:/.fseventsd'
2)数据:/private/var/.fseventsd'
3)开发人员补丁:/DeveloperPatch/.fseventsd'
包含用户首次使用设备之前的记录,如果操作系统在购买后被修补过,还可能包括修补程序活动。
在外部设备中的位置
对于插入Mac的外部设备来说,FSEvent日志将位于“.fseventsd /”目录中的设备的根文件夹中。然而,有几种特殊情况会导致外部设备虽然具有“.fseventsd /”文件夹,但文件夹中却没有记录的日志:
1.虽然外部设备已插入Mac,但设备已拔下电源,没有进行安全删除,这会导致FSEvent日志丢失。例如,用户直接从Mac中拔出usb,而不使用Finder中的卸载标识。
2.虽然将外部设备插入到Mac,设备也被安全卸载了,但是在操作系统完成将FSEvent写入磁盘之前,设备已拔下电源。
3.虽然外部设备已插入Mac,但日志文件与设备的文件系统存在兼容性问题。
FSEvent日志文件
'.fseventsd /'目录可以包含多达数百个日志文件,每个日志文件都会包含几天到几个月的历史文件系统和用户活动的日志。
单个日志文件的保存时间,取决于卷宗上所记录的运行操作数量,比如,系统更新,升级和应用程序安装往往会生成大量的FSEvent。
日志是以gzip存档,并使用以十六进制格式表示的特定命名标准命名。每个FSEvent日志的名称是由存储在FSevent日志文件中的最后一个事件ID加1标识的。
例如,使用下图中列出的第一个FSEvent日志,当文件名从十进制值“00000000000a4b3e”转换为十进制时,该值为674622。因此,此文件中的最后一个事件ID为674621,比674622小1。
www.wnhack.com
FSEvent记录周期
FSEvent记录最初存储在内存中,当记录卷宗上的事件对象发生更改时,FSEvents API将检查对象是否已经使用它的相对完整路径分配了事件ID(包括事件ID在内的FSEvent记录的组件将在后面进行更详细的讨论)。如果没有为内存中的对象分配事件ID,则会分配一个事件ID,并将对象的相对完整路径,记录标志和事件ID存储在内存中。如果对象已经被分配了一个事件ID,API将更新记录标志以包括当前的更改。对于对象在内存中分配事件ID时所引起的每个后续更改,API会根据记录标志将更改对象合并并将其存储为对象的单个事件。
当FSEvents API确定内存缓冲区已满或已卸载卷宗时,就会以FSEvent日志文件的形式将事件刷新到磁盘。一旦刷新到磁盘,API将不会修改日志的内容。
如前所述,可以在单个FSEvent记录中记录多个更改,每个更改都会清楚记录对象发生了什么样的更改。例如,如果创建了用户桌面上的文本文件,然后修改,五分钟后再次修改,然后最终删除,这两个修改只会作为单个事件记录一次,解析文本文件的事件记录可能如下所示:
无奈人生安全网
请注意,即使上面的FSEvent记录显示了发生了哪些更改,但更改的顺序也不会显示在日志中,这是由于FSEvent API API在记录更改时所施加的粒度不足而导致的结果。
FSEvent日志格式
FSEvent日志以gzip格式存储为压缩文件,文件解压缩后,可以使用十六进制编辑器打开文件,以便可以查看原始字符串。
FSEvent记录组件
每个FSEvent日志都包含代表卷宗上对象的历史更改记录,FSEvent日志中的每个记录包含三个主要组件:
本文来自无奈人生安全网