macOSTriageCollectionScript
macOS用のトリアージデータ収集スクリプトです。sysdiagnoseを利用し、いくつかの追加機能を加えて、調査に役立つトリアージデータを収集します。
このスクリプトは何を収集するのか?
収集されるデータには以下が含まれます:
- sysdiagnose:macOS/iOSオペレーティングシステムの各種バージョンに搭載されているユーティリティで、「システム全体の診断情報」を収集します。ここでは主に、収集されるログファイルとライブデータに使用されます。
- ファイル一覧:APFSにはNTFSのようなマスターファイルテーブルがないため、ファイルシステム上に何が存在するかを把握するために、stat、shasum、file を組み合わせて複数のCSVファイルを作成します。収集されたデータは、脅威インテリジェンスフィードと組み合わせて、ファイルハッシュによる悪意のあるファイルの特定や、異常なファイルの識別に使用できます。これはかなり負荷の高い処理であるため、スクリプトにはこのステップを除外するクイックモードで実行するためのフラグがあります。
- Safari、Chrome、Firefoxのブラウザデータは、悪意のあるダウンロードやフィッシング攻撃を除外するため、または不審なブラウザ拡張機能を特定するために収集されます。
- Bash/Zshの履歴は、通常のアクティビティを把握し、異常や手動でのキーボード操作を特定するために収集されます。
- FSEvents:これは揮発性のログソースであり、WindowsマシンのUSNジャーナルに似ています。sysdiagnose によって収集される 'system_logs.logarchive' に含まれていますが、まだ 'system_logs.logarchive' に記録されていないファイルシステム上の最近のアクティビティを把握するために使用できます。
- 拡張属性の収集では、xattr と mdfind を使用して属性を特定・解析し、Sqlite3データベースに保存します。属性のファイルタイプが判定され、データは16進数で保存されます。デフォルトでは収集される属性は "kMDItemDownloadedDate" と "kMDItemWhereFroms" のみですが、section_7関数内の attributes 配列に追加することで、追加の属性を収集できます。
- LaunchAgents、LaunchDaemons、LoginItems、Emondルールなど、いくつかの永続化メカニズムも収集されます。
- 最後に、lsof からのライブデータの一部を使用して、異常なファイル、プロセス、ネットワーク接続を特定します。
使用方法
このスクリプトは、sysdiagnoseおよびさまざまなファイルシステムの場所への収集を許可するために、sudoで実行する必要があります。スクリプトはsudoでのみ実行できます。
ターミナルはデフォルトでは、必要なさまざまな場所にアクセスできないため、ターミナルに対して「フルディスクアクセス」を有効にする必要があります。これは、システム環境設定の「セキュリティとプライバシー」>「プライバシー」→「フルディスクアクセス」で行えます。変更を確認するには、ウィンドウの左下にあるロックをクリックし、ターミナルセッションを再起動してください。
エラーが発生した場合、それは収集のセクションに対応する *.errors ファイルのいずれかに保存されます。
収集されたデータは、現在の作業ディレクトリに 'ホスト名のmd5'_YYYY-MM-DD_HHMMSS/ というパターンのディレクトリに保存されます。収集が完了すると、データはホスト名のmd5にちなんで名付けられたtar.gzに圧縮されます。ホスト名を変換するのは、特殊文字に関する問題を防ぐためです。
スクリプトのフラグ:
'''
クイックモード: -q
スクリプト実行時にこのフラグを含めると、ファイル一覧の作成をスキップします。
ヘルプ: -h
短いヘルプメッセージを表示します
'''
免責事項
このスクリプトは、圧縮後に収集したデータを削除しません。これには機密情報が含まれるため、使用後は必ず安全に削除してください。
このスクリプトは、使いやすさのため、ターミナルへのフルディスクアクセスの有効化を必要とします。収集後はこのアクセスを無効にすることをお勧めします。
最後に、収集されたデータはフォレンジック的に完全なものと見なされるべきではありません。
macOS 10.15でテスト済み