
インシデント対応においてホストフォレンジックデータを包括的に収集するためのWindowsバッチスクリプトとUnix Bashスクリプト。
ir-rescue は、32ビットおよび64ビットの Windows システムから多種多様な フォレンジックデータ を収集する ir-rescue-win と、Unix システムから収集する ir-rescue-nix の2つの姉妹スクリプトで構成されています。これらのスクリプトは、揮発性の順序と実行によって変更されるアーティファクト(例:Windows のプリフェッチファイル)を尊重し、分析および調査プロセスのさまざまな段階での インシデントレスポンス での使用を目的としています。それぞれ以下に説明します。
ir-rescue-win は完全に Batch で記述されており、特定の種類の ライブデータ と、利用可能なボリュームシャドウコピー(VSS)から取得可能な 履歴データ を包括的かつカスタマイズして取得するように設定できます。ir-rescue-win は、Windows 組み込みコマンドと、Sysinternals や NirSoft などのよく知られたサードパーティユーティリティ(一部はオープンソース)を利用します。PowerShell と Windows Management Instrumentation (WMI) は、ir-rescue-win を横断的に互換性のあるものにするために使用されていません。
ir-rescue-nix は Bash (v4+) で記述されており、組み込みの Unix コマンドを利用します。使用される一部のコマンドは POSIX 準拠ではない可能性があり、その結果、一部の Unix 系システムや派生システム(特に古いオペレーティングシステム)では利用できない場合があります。
ir-rescue は、データ収集をデータタイプごとにグループ化するように設計されています。たとえば、ネットワーク関連のデータ(開いているファイル共有や TCP 接続など)はグループ化され、実行中のプロセス、サービス、タスクはマルウェアの下にまとめられます。データタイプの取得とその他の一般オプションは、シンプルな 設定ファイル で指定します。スクリプトは多数のコマンドとツールを起動するため、システムにかなりの フットプリント(例:メモリ内の文字列、プリフェッチファイル、プログラム実行キャッシュ)を残すことに注意してください。実行時間は、計算能力、ディスク書き込みスループット、設定によって異なります。安全な削除が設定されている場合や、64ビットメモリ(通常 8 GB)をダンプする場合、ディスクのパフォーマンスは特に重要であり、かなりの時間がかかる可能性があります。
ir-rescue は、インシデントレスポンス担当者やフォレンジックアナリスト、およびセキュリティ実務者向けに作成されており、Cisco、PepsiCo、SaskTel、Praetorian、Counteractive Security などの企業で使用されています。これは、調査のニーズに関係なく、ホストデータ収集を効率化し、リモートアクセスやライブ分析が利用できない場合にオンサイトサポートへの依存度を低くするための取り組みを表しています。したがって、フォレンジック活動中に既にバンドルされているツールやコマンドを活用するために使用できます。
ir-rescue は、ホストから特定のデータを収集するために、いくつかの サードパーティユーティリティ に依存しています。ツールのバージョンは最後のセクションに記載されており、そのままパッケージとして提供されます。そのため、ir-rescue を実行する前に、それらのライセンスとユーザー契約に同意する必要があります。なお、Sysinternals ユーティリティは、Sysinternals ソフトウェアライセンス条項 に従って、他者がコピーするために再配布することはできません。このため、ir-rescue は Sysinternals ユーティリティと共に公開されなくなりました。したがって、「サードパーティツールリストと参考文献」のセクションに列挙されているすべてのエントリを Sysinternals ライブリポジトリ からダウンロードし、スクリプトが実行されるように適切なフォルダに移動する必要があります。
ツールセットの説明と構成は以下に示します。該当する場合、Windows ツールの32ビット版と64ビット版が隣接して含まれます。
tools-nix/: ir-rescue-nix 用のサードパーティツールフォルダ:
ascii/: *.txt 形式のテキスト ASCII アートファイル;cfg/: 設定ファイル:
ir-rescue-nix.conf: ir-rescue-nix のメイン設定ファイル;nonrecursive-(hidden|md5sum).txt: 隠しファイルと md5sum の非再帰的な場所;nonrecursive.txt: 複数のツールの非再帰的な場所;recursive-(exec|hidden|md5sum).txt: 実行ファイル、隠しファイル、md5sum の再帰的な場所;recursive.txt: 複数のツールの再帰的な場所;mem/: メモリツール:
AVML-0.21 (64ビット ELF): メモリをダンプします;tools-win\: ir-rescue-win 用のサードパーティツールフォルダ:
activ\: ユーザーおよびシステムアクティビティのアーティファクトを解析するためのツール;
exiftool.exe: リンク (LNK) ファイルを解析します;JLECmd.exe: 自動およびカスタムジャンプリストを解析します;LastActivityView.exe: ログオンやログオフなどのユーザーおよびシステムアクティビティのミニタイムラインを表示します;rifiuti-vista[64].exe: ごみ箱ファイルを解析します;USBDeview[64].exe: 以前および現在接続されている USB デバイスを一覧表示します;ascii\: *.txt 形式のテキスト ASCII アートファイル;cfg\: 設定ファイル:
ir-rescue-win.conf: ir-rescue-win のメイン設定ファイル;nonrecursive-(acl|iconsext|md5deep).txt: accesschk[64].exe、iconsext.exe、md5deep[64].exe の非再帰的な場所;nonrecursive.txt: 複数のツールの非再帰的な場所;recursive-(acl|iconsext|md5deep).txt: accesschk[64].exe、iconsext.exe、md5deep[64].exe の再帰的な場所;recursive.txt: 複数のツールの再帰的な場所;cygwin\: Cygwin ツールとダイナミックリンクライブラリ (DLL):
tr.exe: 印刷不可能な文字を削除するために使用;grep.exe: 正規表現で日付をフィルタリングするために使用;disk\: ディスクツール:
EDD.exe: ディスク暗号化ソフトウェアのテスト;evt\: Windows イベントツール:
psloglist.exe: Windows イベントログを抽出;fs\: ファイルシステムツール:
tsk\: The Sleuth Kit (TSK) ツールと DLL:
fls.exe: マスターファイルテーブル (MFT) をウォーク;mcat.exe: パーティションの内容を出力;mmls.exe: ディスクパーティションテーブル (DOS, GPT) に関する情報を表示;AlternateStreamView[64].exe: 代替データストリーム (ADS) を一覧表示;ExtractUsnJrnl[64].exe: C:\$Extend\$UsnJrnl (NTFS ジャーナル) ファイルをスパースゼロなしで抽出;md5deep[64].exe: メッセージダイジェスト5 (MD5) ハッシュ値を計算;ntfsinfo[64].exe: NTFS に関する情報を表示;RawCopy[64].exe: NTFS レベルでデータを抽出;mal\: マルウェアツール:
autoruns[64].exe: 自動実行場所を autoruns バイナリ形式でダンプ;autorunsc[64].exe: 自動実行場所を一覧表示;BrowserAddonsView[64].exe: 複数のブラウザからプラグインとアドオンを一覧表示;densityscout[64].exe: パッカーや暗号化ツールを検出するためのエントロピーベースの指標を計算;DriverView[64].exe: ロードされたカーネルドライバを一覧表示;handle[64].exe: オブジェクトハンドルを一覧表示;iconsext.exe: ポータブル実行可能ファイル (PE) からアイコンを抽出;Listdlls[64].exe: ロードされた DLL を一覧表示;OfficeIns[64].exe: インストールされている Microsoft Office アドインを一覧表示;pslist[64].exe: 実行中のプロセスを一覧表示;PsService[64].exe: サービスを一覧表示;sigcheck[64].exe: PE 内のデジタル署名をチェック;WinPrefetchView[64].exe: プリフェッチファイルの内容を表示;mem\: メモリツール:
winpmem_1.6.2.exe: メモリをダンプ;net\: ネットワークツール:
psfile[64].exe: リモートで開かれているファイルを一覧表示;tcpvcon.exe: TCP 接続とポート、UDP ポートを一覧表示;sys\: システムツール:
accesschk[64].exe: 指定された場所のユーザー権限を一覧表示;logonsessions[64].exe: 現在アクティブなログオンセッションを一覧表示;PsGetsid[64].exe: セキュリティ識別子 (SID) とユーザー名の相互変換;Psinfo[64].exe: システムのソフトウェアおよびハードウェア情報を表示;psloggedon[64].exe: レジストリにプロファイルを持つローカルログオンユーザーを一覧表示;web\: Web ツール:
BrowsingHistoryView[64].exe: 複数のブラウザの閲覧履歴を一覧表示;ChromeCacheView.exe: Google Chrome のキャッシュを表示;IECacheView.exe: Internet Explorer のキャッシュを表示;MozillaCacheView.exe: Mozilla Firefox のキャッシュを表示;yara\: YARA ツールとシグネチャ:
rules\: *.yar ルールフォルダ;yara(32|64).exe: YARA メイン実行ファイル;yarac(32|64).exe: YARA ルールコンパイラ;7za.exe: ファイルとフォルダを圧縮;nircmdc[64].exe: スクリーンショットの撮影など、広範な機能を備えています;sdelete(32|64).exe: ファイルとフォルダを安全に削除;data\: 実行中に作成されるデータフォルダで、収集されたデータを格納:
<HOSTNAME>-<DATE>\: <DATE> は YYYYMMDD 形式:
ir-rescue-win: ir-rescue 関連データのフォルダ
ir-rescue-win.log: ステータスメッセージの詳細ログファイル;ir-rescue-win-global.log: 過去に実行された ir-rescue-win コマンドのグローバルログファイル;screenshot-#: ir-rescue-win のみの番号付きスクリーンショット;ir-rescue-win は 管理者権限 を持つコマンドラインコンソールで実行する必要があり、ir-rescue-nix は root 権限 を持つコマンドラインウィンドウで実行する必要があります。どちらも引数は不要で、それぞれの設定ファイルを使用して希望するオプションを設定します。そのため、スクリプトの実行は単に次のようにファイルを発行するだけです。
ir-rescue-win-v1.w.x.bat、または./ir-rescue-nix-v1.y.z.sh。再帰的な検索やスキャンを実行する一部のツールは、特定のフォルダのみを再帰的に検索するように設定されています。これにより、指定されたフォルダはマルウェアによる広範な使用のため分析対象となる可能性が高い場所であるため、実行時間のパフォーマンスを考慮しつつ、データ収集をよりターゲットに絞ることができます。Windows および Unix システムの 再帰的検索 と 非再帰的検索 の場所は、設定フォルダ内のそれぞれのテキストファイルで自由に変更できます。一部のツールには、再帰する場所としない場所を指定した専用のファイルがあります。これらは recursive-<tool>.txt および nonrecursive-<tool>.txt と名付けられ、<tool> はツール名に置き換えられます。各ファイルには、末尾のバックスラッシュやスラッシュなしで、1行に1つの 完全パスとしての場所 が必要です。
実行中、標準出力 (STDOUT) および標準エラー (STDERR) チャネルに出力されたすべての文字は、UTF-8 エンコードされたテキストファイルに記録されます。つまり、ツールの出力は対応するフォルダとテキストファイルに保存されます。ステータス ASCII メッセージは、実行の進行状況を確認するために引き続きコンソールに出力されます。%TEMP%\ir-rescue-win または /tmp/ir-rescue-nix の下に作成された一時フォルダは、実行時データ(例:メモリダンプドライバや VSS コピーへのリンク)の保存に使用され、完了時に削除されます。データフォルダは初期化中にプレースホルダとして作成されます。収集後、データが収集されなかった場合(例:空のブラウザキャッシュ)は、空のフォルダが削除されることがあります。最後に、データはパスワードで保護されたアーカイブに圧縮され、設定に応じてその後適宜削除されます。
ir-rescue-win と ir-rescue-nix の各設定ファイルは、主にスクリプトの一般的な動作、収集するデータタイプ、実行する高度なツールのための単純なバイナリディレクティブ (true または false) で構成されています。ハッシュ記号 (#) で始まる行はコメントと見なされます。これらは、各オプションの簡単な説明、いくつかのコンテキストを提供するためのフォルダ、ファイル、レジストリキーの列挙、および関連ツールのリストに使用されます。以下の説明は ir-rescue-win にのみ適用されますが、全体的なアプローチと ir-rescue-nix の設定ファイルを理解するための例として役立ちます。
ir-rescue-win の場合、データは次のディレクティブによって指定されるタイプにグループ化されます。
activity: このオプションはユーザーアクティビティデータの収集を設定します;disk: このオプションはディスクデータの収集を設定します;events: このオプションは Windows イベントログの収集を設定します;filesystem: このオプションは NTFS およびファイルに関連するデータの収集を設定します;malware: このオプションはマルウェアの検出に使用できるシステムデータの収集を設定します;memory: このオプションはメモリの収集を設定します;network: このオプションはネットワークデータの収集を設定します;registry: このオプションはシステムおよびユーザーレジストリの収集を設定します;system: このオプションはシステム関連情報の収集を設定します;web: このオプションはブラウジング履歴とキャッシュの収集を設定します。