从LogArchive提取iOS Airborne漏洞日志工件的工具 CVE-2025-24252
该脚本旨在通过查询来自 .logarchive 包的 iOS 系统日志,帮助识别 "Airborne" 漏洞集(主要影响 Apple 的 AirPlay 协议)的潜在痕迹。它自动执行多个定制的 log show 命令,以发现可能与此类漏洞相关的异常。
免责声明: 本工具仅供信息调查目的。存在匹配这些查询的日志条目并不明确确认已被入侵。日志条目应结合上下文分析。未发现结果并不保证设备安全。请始终确保您的设备已更新到最新的操作系统版本。
该脚本由 Anton Shustikov ([email protected], 现任 cakescats CEO) 开发,作为 CakesCats 项目的一部分。
CakesCats 是一个专注于以下方面的倡议:
Anton Shustikov 是一位信息安全与金融科技顾问,拥有创建安全系统的丰富经验。他是非商业教育项目 CakesCats 的创始人,并为 Forbes 和《Xakep》杂志等出版物撰稿。他的工作常涉及调查数字威胁和推广数字卫生。
"Airborne" 是赋予一组漏洞的名称(由 Oligo Security 在其原始研究中发现),这些漏洞影响 Apple 的 AirPlay 协议和 AirPlay 软件开发套件 (SDK)。这些漏洞可能影响广泛的 Apple 设备(iPhone、iPad、Mac、Apple TV 等)以及使用 AirPlay SDK 的第三方设备(例如智能音箱、接收器)。
"Airborne" 类型漏洞的关键方面:
rapportd 等相关服务。该脚本使用精心构造的谓词执行一系列 log show 命令。这些谓词旨在过滤 iOS 系统日志中的海量信息,以精确定位可能与此类 "Airborne" 漏洞相关的潜在入侵指标或异常活动。
该脚本查找:
mediaserverd、AirPlayXPCHelper、rapportd、mDNSResponder)。每个查询的输出被保存到一个带有时间戳的结果目录中,分别命名为描述性文本文件,以便有针对性地分析不同类型的潜在人工产物。
log show 工具和此脚本旨在 macOS 上运行。.logarchive): 你需要来自待分析设备的 iOS 系统日志归档(一个包,技术上讲是一个目录)。通常可以通过以下方式获取:
sysdiagnose: 在 iPhone 上触发 sysdiagnose(通常同时按下音量加、音量减和侧边按钮,但组合键可能因型号和 iOS 版本而异)。生成 sysdiagnose 后(可能需要几分钟),可将其 AirDrop 到 Mac,或在将 iPhone 与 Mac 同步时访问(通常在 Finder 中 iPhone 的同步位置,位于 .tar.gz 文件中)。.logarchive 将在提取的 sysdiagnose 内容中。bash 编写的。保存脚本:
将脚本代码(见上文)保存为 airborne_artifact_extractor.sh(或任何其他带有 .sh 扩展名的名称)。
赋予可执行权限: 打开终端,导航到保存脚本的目录,运行以下命令:
chmod +x airborne_artifact_extractor.sh
检查 macOS 隔离属性(对于下载的脚本很重要): 如果你从互联网下载了此脚本,macOS 可能将其隔离,这可能导致其无法正常运行或根本无法运行。
xattr airborne_artifact_extractor.sh
com.apple.quarantine,通过运行以下命令移除该属性:
xattr -d com.apple.quarantine airborne_artifact_extractor.sh
如果你仍然遇到运行脚本的问题,特别是如果它位于像 ~/Downloads 这样的目录中,请确保你的终端应用具有必要的权限(例如,在系统设置 -> 隐私与安全中授予"完全磁盘访问权限"),以访问脚本的位置和日志归档。
^M 错误(例如 /bin/bash^M: bad interpreter: No such file or directory)如果在尝试执行脚本时遇到类似 bash: ./your_script_name.sh: /bin/bash^M: bad interpreter: No such file or directory、/usr/bin/env: 'bash\r': No such file or directory 或涉及 \r 或 ^M 字符的消息,很可能是由于 Windows 风格的行尾(CRLF - 回车换行)而非 Unix 风格的行尾(LF - 换行)导致的。
这通常发生在脚本文件在 Windows 系统上创建或编辑,然后未经转换行尾就传输到 macOS 或 Linux 的情况下。Unix 系统只期望 LF 作为行终止符,额外的 CR 字符(\r 或 ^M)会被误解为解释器路径或命令的一部分。
解决方案:使用 dos2unix 转换行尾
最简单的修复方法是使用 dos2unix 工具。
安装 dos2unix:
在 macOS 上(使用 Homebrew): 如果你没有 Homebrew,请先从 brew.sh 安装。然后运行:
brew install dos2unix
在基于 Debian/Ubuntu 的 Linux 发行版上:
sudo apt update
sudo apt install dos2unix
在基于 Fedora/RHEL 的 Linux 发行版上:
sudo dnf install dos2unix # (或旧版本使用 yum)
转换脚本文件:
导航到包含 airborne_artifact_extractor.sh 的目录并运行:
dos2unix airborne_artifact_extractor.sh
此命令将在原处转换行尾。
替代方案(如果 dos2unix 不可用或不喜欢):
使用 sed:
sed -i.bak 's/\r$//' airborne_artifact_extractor.sh
(此命令在原处修改文件并创建备份 airborne_artifact_extractor.sh.bak。在某些 sed 版本上,尤其是在 macOS 上,-i 选项需要为备份文件提供扩展名,例如 -i '.bak' 或如果支持则使用 -i '' 不备份。对于 macOS,你可能需要 sed -i '' 's/\r//g' airborne_artifact_extractor.sh)
使用 tr:
tr -d '\r' < airborne_artifact_extractor.sh > airborne_artifact_extractor_unix.sh
chmod +x airborne_artifact_extractor_unix.sh
# 然后使用 airborne_artifact_extractor_unix.sh
文本编辑器: 大多数现代文本编辑器(如 VS Code、Sublime Text、Atom、Notepad++)允许你更改行尾。打开脚本文件,找到行尾设置(通常在状态栏或文件/编辑菜单中),将其从 "CRLF" 或 "Windows" 更改为 "LF" 或 "Unix"。然后重新保存文件。
转换行尾后,再次尝试运行脚本。记得还要确保它具有执行权限(chmod +x airborne_artifact_extractor.sh)。
从终端执行脚本,提供 .logarchive 包的路径和可选的时间范围参数:
./airborne_artifact_extractor.sh /path/to/your/iphone_logs.logarchive [time_range_parameters]
参数:
R1 (必需): .logarchive 文件/包的完整或相对路径。
[time_range_parameters] (可选): 标准的 log show 时间范围参数。如果省略,脚本将默认分析 --last 7d(最近 7 天)的日志。
示例:
--last 24h(最近 24 小时)
--last 3d(最近 3 天)
--start "YYYY-MM-DD HH:MM:SS" --end "YYYY-MM-DD HH:MM:SS"(特定时间范围)。重要提示:确保日期时间字符串用引号括起来。
时区配置:
脚本顶部包含时区设置,你可以修改它们:
* TZ_SETTING: 定义用于解释你提供的 --start 和 --end 参数的时区。例如,如果设置为 "Etc/GMT-7"(对应于 UTC+7),并且你使用 --start "2025-04-10 00:00:00",这将在 UTC+7 时区中被视为 4 月 10 日午夜。如果你希望脚本使用 Mac 当前的本地时区来解释这些参数,可以将 TZ_SETTING="" 或注释掉该行。
* TIMEZONE_DISPLAY: 指定通过 log show --timezone 选项格式化输出日志文件中的时间戳的时区。示例:"Asia/Bangkok" 对应 UTC+7。选择一个你的系统能识别的时区名称。
命令示例:
分析最近 7 天的日志(默认行为): Bash ./airborne_artifact_extractor.sh /Volumes/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
分析最近 48 小时的日志: Bash ./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
分析特定日期和时间范围的日志(时间将根据 TZ_SETTING 解释): Bash ./airborne_artifact_extractor.sh ../Log_Archives/device_XYZ.logarchive --start "2025-04-05 00:00:00" --end "2025-04-06 23:59:59"
脚本将在与脚本相同的目录中(如果脚本目录不可写,则在当前工作目录)创建一个名为 airborne_traces_YYYYMMDD_HHMMSS 的新目录(其中 YYYYMMDD_HHMMSS 是当前日期和时间)。在此文件夹内,您将找到多个 .txt 文件,每个文件包含特定查询的输出。文件名带有数字前缀以便排序:
01_critical_process_errors.txt: 关键进程的故障和错误。02_process_termination_exceptions.txt: 关键进程的意外终止或异常。03_kernel_panics.txt: 内核恐慌事件。04_airplay_subsystem_errors.txt: AirPlay 子系统的错误和故障。05_mdns_errors.txt: mDNSResponder (Bonjour) 的错误和故障。06_airplay_pairing_auth_failures.txt: AirPlay/rapportd 配对、认证或连接问题。07_network_connection_errors.txt: 来自相关进程的网络连接错误。08_networkd_errors.txt: 系统 networkd 服务中的错误。09_sandbox_violations.txt: 与沙盒违规相关的消息。10_profile_activity.txt: 与配置描述文件相关的活动。欢迎 fork 此仓库、提出改进建议、报告问题,或添加有助于识别此类漏洞痕迹的更具体查询。