
Aftermath 是一个基于 Swift 的开源事件响应框架。
防御者可以利用 Aftermath 从受感染主机收集并随后分析数据。Aftermath 可以通过 MDM 部署(理想情况),但也可以从受感染用户的命令行独立运行。
Aftermath 首先运行一系列模块进行收集。收集的输出将写入您通过 -o 或 --output 选项指定的位置,或者默认情况下写入 /tmp 目录。
收集完成后,最终的压缩文件可以从最终用户的磁盘中拉取。然后可以使用 --analyze 参数指向该压缩文件进行分析。分析结果将写入 /tmp 目录。管理员随后可以解压该分析目录,查看本地收集数据库的解析视图、包含文件创建、最后访问和最后修改日期(如果可用)的文件时间线,以及包含文件元数据、数据库更改和浏览器信息的故事线,从而可能追踪感染向量。
要在本地构建 Aftermath,请从仓库克隆
git clone https://github.com/jamf/aftermath.git
进入 Aftermath 目录
cd <path_to_aftermath_directory>
使用 Xcode 构建
xcodebuild -scheme "aftermath"
进入 Release 文件夹
cd build/Release
运行 aftermath
sudo ./aftermath
Aftermath 需要 root 权限以及完全磁盘访问权限 (FDA) 才能运行。可以将 FDA 授予运行 Aftermath 的 Terminal 应用程序。
默认用法:
sudo ./aftermath
指定某些选项:
sudo ./aftermath [option1] [option2]
示例:
sudo ./aftermath -o /Users/user/Desktop --deep
sudo ./aftermath --analyze <path_to_collection_zip>
用户可以使用 --logs 或 -l 参数向 Aftermath 传递一个包含统一日志谓词的文本文件。传递给 Aftermath 的文件必须是文本文件,每个谓词需以换行符分隔。此外,每个条目将是一个字典对象。字典中的键是用户希望为该谓词命名的名称。例如,如果您想查看所有登录事件,可以创建一个谓词并命名为 login_events。
login_events: processImagePath contains "loginwindow" and eventMessage contains "com.apple.sessionDidLogin
tcc: process == "tccd"
由于 eslogger 和 tcpdump 在额外的线程上运行,并且目标是尽可能多地从中收集数据,它们会在 aftermath 退出时退出。因此,由 eslogger 生成的 JSON 文件或由 tcpdump 生成的 pcap 文件的最后一行可能被截断。
Releases 下有 Aftermath.pkg 可用。此 pkg 已签名并公证。它将 aftermath 二进制文件安装到 /usr/local/bin/。这是通过 MDM 部署的理想方式。由于它安装在 bin 中,您可以像这样运行 aftermath:
sudo aftermath [option1] [option2]
要卸载 aftermath 二进制文件,请从 Releases 运行 AftermathUninstaller.pkg。这将卸载二进制文件,并运行 aftermath --cleanup 以移除 aftermath 目录。如果其他位置存在 aftermath 目录(例如通过 --output 命令创建),则由用户/管理员负责删除这些目录。
--analyze -> 分析 Aftermath 结果
用法:--analyze <path_to_aftermath_collection_file>
--collect-dirs -> 指定要转储原始文件的(空格分隔的)目录位置
用法:--collect-dirs <path_to_dir> <path_to_another_dir>
--deep 或 -d -> 对文件系统执行深度扫描,获取修改和访问时间戳元数据
警告:这将是一个耗时且消耗内存的扫描。
--disable -> 禁用 Aftermath 中可能收集个人用户数据的某些功能
可用禁用的功能:browsers -> 收集浏览器信息 | browser-killswitch -> 强制关闭浏览器 | databases -> TCC 和 LSQuarantine 数据库 | filesystem -> 遍历文件系统获取时间戳 | proc-info -> 通过 TrueTree 和 eslogger 收集进程信息 | slack -> Slack 数据 | ul -> 统一日志模块 | all -> 以上所有选项
用法:--disable browsers browser-killswitch databases filesystem proc-info slack
--disable all
--es-logs -> 指定要收集的 Endpoint Security 事件(空格分隔)(默认值为:create exec mmap)。要禁用,请参见 --disable es-logs
用法:--es-logs setuid unmount write
--logs -> 指定包含统一日志谓词(作为字典对象)的外部文本文件以进行解析
用法:--logs /Users/<USER>/Desktop/myPredicates.txt
-o 或 --output -> 指定 Aftermath 收集结果的输出位置(默认为 /tmp)
用法:-o Users/user/Desktop
--pretty -> 在终端输出中启用颜色
--cleanup -> 从默认位置("/tmp"、"/var/folders/zz/")移除 Aftermath 文件夹