macOSTriageCollectionScript
一个用于 macOS 的取证数据收集脚本,利用 sysdiagnose 并附加少量功能来收集调查所需的取证数据。
该脚本收集哪些数据?
收集的数据包括:
- sysdiagnose,一种在多种 macOS/iOS 操作系统中可用的实用程序,用于收集“系统级诊断信息”。此处主要用于获取其收集的日志文件和实时数据。
- 文件列表,由于 APFS 不像 NTFS 那样拥有主文件表(MFT),为了了解文件系统上存在哪些内容,我们使用 stat、shasum 和 file 的组合创建多个 CSV 文件。收集的数据可与威胁情报源结合使用,通过文件哈希识别恶意文件或识别异常文件。这是一个相当耗时的过程,因此脚本提供了一个标志,可在快速模式下运行并跳过此步骤。
- 收集来自 Safari、Chrome 和 Firefox 的浏览器数据,用于排除恶意下载、网络钓鱼攻击,或识别任何可疑的浏览器扩展。
- 收集 Bash/Zsh 历史记录,以确定常规活动、识别任何异常或人工键盘操作。
- FSEvents,这是一种易失性日志源,与 Windows 机器上的 USN 日志类似。虽然已包含在 sysdiagnose 收集的“system_logs.logarchive”中,但它们可用于查看文件系统上可能尚未记录在“system_logs.logarchive”中的近期活动。
- 扩展属性收集利用 xattr 和 mdfind 定位并解析属性,保存到 Sqlite3 数据库中。确定属性的文件类型,并将数据以十六进制保存,默认情况下仅收集“kMDItemDownloadedDate”和“kMDItemWhereFroms”属性,但可以通过在 section_7 函数中追加 attributes 数组来添加其他属性。
- 还收集了多种持久化机制,包括 LaunchAgents、LaunchDaemons、LoginItems 和 Emond 规则。
- 最后,使用 lsof 收集一些实时数据,以识别任何异常文件、进程或网络连接。
使用方法
该脚本必须以 sudo 身份运行,以便通过 sysdiagnose 收集数据并访问各种文件系统位置,脚本只能以 sudo 身份运行。
终端默认无法访问其所需的多种位置,因此您需要为终端启用“完全磁盘访问权限”。这可以在系统偏好设置的“安全性与隐私”>“隐私”->“完全磁盘访问权限”中完成,要确认更改,请点击窗口左下角的锁并重启您的终端会话。
如果发生错误,错误将保存到与收集部分对应的某个 *.errors 文件中。
收集的数据保存到当前工作目录中遵循 '主机名md5'_YYYY-MM-DD_HHMMSS/ 模式的目录中。收集完成后,数据会压缩为以主机名 md5 命名的 tar.gz 文件,对主机名进行转换是为了避免特殊字符带来的问题。
脚本标志:
'''
快速模式:-q
运行脚本时包含此标志以跳过创建文件列表。
帮助:-h
打印简短帮助信息
'''
免责声明
此脚本在压缩后不会删除其收集的数据,这些数据包含敏感信息,请确保使用后安全删除。
为方便使用,该脚本要求为终端启用完全磁盘访问权限,建议在收集完成后禁用此权限。
最后,收集的数据不应被视为具有取证可靠性。
已在 macOS 10.15 上测试