
iOS Airborne脆弱性ログアーティファクト抽出ツール(LogArchiveから)CVE-2025-24252
このスクリプトは、iOSシステムログ(.logarchiveバンドル)から、「Airborne」脆弱性群(主にAppleのAirPlayプロトコルに影響)の痕跡を特定することを目的としています。これらの脆弱性に関連する可能性のある異常を検出するために調整された、複数のlog showコマンドの実行を自動化します。
免責事項: このツールは情報提供および調査目的のみに使用されます。これらのクエリに一致するログエントリが存在しても、それが侵害を確定するものではありません。ログエントリは文脈に沿って分析されるべきです。検出結果がない場合でも、デバイスが安全であることを保証するものではありません。常にデバイスを最新のOSバージョンに更新してください。
このスクリプトは、Anton Shustikov([email protected]、現在はcakescatsのCEO)によってCakesCatsプロジェクトの一環として開発されました。
CakesCatsは以下の活動に焦点を当てたイニシアチブです:
Anton Shustikovは、セキュリティシステムの構築において豊富な経験を持つ情報セキュリティおよびフィンテックコンサルタントです。非営利教育プロジェクトCakesCatsの創設者であり、Forbesや「Xakep」誌などの出版物に記事を寄稿しています。彼の活動は、デジタル脅威の調査とデジタル衛生の促進に関わることがよくあります。
「Airborne」は、AppleのAirPlayプロトコルおよびAirPlay Software Development Kit(SDK)に影響を与える一連の脆弱性(Oligo Securityによる独自研究で発見)に付けられた名前です。これらの脆弱性は、幅広い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が生成された後(数分かかる場合があります)、MacにAirDropするか、iPhoneをMacと同期するときにアクセスできます(FinderのiPhoneの同期場所にある.tar.gzファイル内にあります)。.logarchiveは抽出されたsysdiagnoseの内容に含まれます。bash用に記述されています。スクリプトを保存する:
スクリプトコード(上記)をairborne_artifact_extractor.sh(または任意の.sh拡張子の名前)として保存します。
実行可能にする: ターミナルアプリケーションを開き、スクリプトを保存したディレクトリに移動し、次のコマンドを実行します。
chmod +x airborne_artifact_extractor.sh
macOSの検疫情報属性を確認する(ダウンロードしたスクリプトには重要): このスクリプトをインターネットからダウンロードした場合、macOSが検疫情報属性(quarantine attribute)を設定している可能性があり、正しく実行できなくなることがあります。
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日午前0時として扱われます。これらの引数にMacの現在のローカルタイムゾーンを使用したい場合は、TZ_SETTING=""に設定するか、その行をコメントアウトできます。TIMEZONE_DISPLAY:log show --timezoneオプションを介して出力ログファイルのタイムスタンプをフォーマットするためのタイムゾーンを指定します。例:UTC+7の場合は"Asia/Bangkok"。システムで認識されているタイムゾーン名を選択してください。コマンド例:
./airborne_artifact_extractor.sh /Volumes/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
TZ_SETTINGに従って解釈されます):./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ファイルがあります。ファイル名は順序付けのために数字のプレフィックスが付いています: