
インシデント対応においてホストフォレンジックデータを包括的に収集するための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): メモリをダンプします;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: このオプションはブラウジング履歴とキャッシュの収集を設定します。一方で、sigcheck、density、iconsext、yara オプションによって設定される高度なツールの使用は、データタイプの収集に行われた設定とは独立しています。一方、データタイプの各メインオプションの下にあるディレクティブはそれらに結びついており、メインオプションが false に設定されている場合は無視されることを意味します。例えば、ツールにランダムアクセスメモリ (RAM) のダンプを指示するオプション memory-dump=true は、memory=false の場合は無視されます。同様に、<option>-all オプションも同様で、利便性のために特定のデータタイプのすべてのオプションを true に設定しますが、<option>-vss は除きます。スクリプトは、Windows カーネル名前空間を介してコピーへのハードリンクを作成することにより、利用可能なすべての VSS コピー からデータを取得することをサポートしており、この機能は vss=true で有効にできます。各メインオプションには独自の <option>-vss オプションがあり、その特定のデータタイプに対する VSS データの取得を有効または無効にします。malware-startup および web-(chrome|ie|mozilla) オプションによって収集されたデータもパスワードで保護されており、パスワードは引用符なしの "infected" であることに注意してください。設定ファイルに見つからない、またはコメントアウトされたすべてのオプションは、実行中に に設定されます(最終圧縮アーカイブのパスワードを含む)。
さらに、iconsext オプションは、PE アイコンを設定する珍しいフレームワーク(例:Python)でコンパイルされたバイナリを探すのに便利です。また、YARA ルールは *.yar ファイル拡張子を持ち、tools-win\yara\rules\ フォルダに配置する必要があります。すべての高度なツールの出力は、malware 結果フォルダの下に保存されます。
以下は、RAM(ライブおよび履歴ページメモリを含む)、システムレジストリ、Windows イベントログをテキスト形式で収集し、最終データフォルダをパスワード "infected"(引用符なし)で圧縮する設定の最小限の例です。この設定では、履歴システムレジストリファイルの収集はスキップされることに注意してください。```
killself=false sdelete=false zip=true zpassword=infected ascii=false
events=true memory=true registry=true
vss=true
events-all=false events-txt=true
memory-all=false memory-vss=true memory-dump=true memory-pagefile=true
registry-all=false registry-vss=false registry-system=true
# サードパーティツール一覧と参考文献
## Windows
* **Sysinternals**: [Sysinternals](https://technet.microsoft.com/en-us/sysinternals/ "Sysinternals Web Site") ツールは主に Mark Russinovich によって開発され、[Sysinternals ソフトウェアライセンス条項](https://docs.microsoft.com/en-us/sysinternals/license-terms "Sysinternals Software License Terms") に基づき無料で使用できます。*ir-rescue-win* で使用される全ツール一覧は `accesschk[64].exe`(v6.02)、`autoruns[64].exe`(v13.62)、`autorunsc[64].exe`(v13.61)、`handle[64].exe`(v4.1)、`Listdlls[64].exe`(v3.2)、`logonsessions[64].exe`(v1.4)、`ntfsinfo[64].exe`(v1.2)、`psfile[64].exe`(v1.03)、`PsGetsid[64].exe`(v1.45)、`Psinfo[64].exe`(v1.78)、`pslist[64].exe`(v1.4)、`psloggedon[64].exe`(v1.35)、`psloglist.exe`(v2.71)、`PsService[64].exe`(v2.25)、`sdelete(32|64).exe`(v2.0)、`sigcheck[64].exe`(v2.52)、`tcpvcon.exe`(v3.01)です。
* **NirSoft**: [NirSoft](http://www.nirsoft.net/ "NirSoft Web Site") ツールスイートは Nir Sofer によって開発され、フリーウェアユーティリティとして公開されています。*ir-rescue-win* で使用される全ツール一覧は `AlternateStreamView[64].exe`(v1.51)、`BrowserAddonsView[64].exe`(v1.05)、`BrowsingHistoryView[64].exe`(v1.86)、`ChromeCacheView.exe`(v1.67)、`DriverView[64].exe`(v1.47)、`iconsext.exe`(v1.47)、`IECacheView.exe`(v1.58)、`LastActivityView.exe`(v1.16)、`MozillaCacheView.exe`(v1.69)、`nircmdc[64].exe`(v2.81)、`OfficeIns[64].exe`(v1.20)、`USBDeview[64].exe`(v2.61)、`WinPrefetchView[64].exe`(v1.35)です。
* **The Sleuth Kit (TSK)**(v4.4.1): [TSK](http://www.sleuthkit.org/ "TSK Web Site") は、ファイルシステムレベルでハードドライブを解析するオープンソースのフォレンジックツールです。*ir-rescue-win* では `fls.exe` を使用した MFT の走査、`mmcat.exe` を使用したディスクブートセクタのダンプ、`mmls.exe` を使用したディスクパーティションテーブル情報の表示に利用されます。
* **winpmem_1.6.2**(v1.6.2): [Pmem](https://github.com/google/rekall "Rekall GitHub Repository") スイートはオープンソースの Rekall メモリ分析フレームワークの一部であり、*ir-rescue-win* はメモリダンプにこれを利用します。
* **md5deep[64].exe**(v4.4): [md5deep](http://md5deep.sourceforge.net/ "md5deep Web Site") ユーティリティはオープンソースであり、Jesse Kornblum によってメンテナンスされています。
* **EDD.exe**(v2.0.1): [Encrypted Disk Detector](https://www.magnetforensics.com/free-tool-encrypted-disk-detector/) は Magnet Forensics の無料ツールで、特定のディスク暗号化ソフトウェアを検出します。
* **exiftool.exe**(v10.55): [ExifTool](http://owl.phy.queensu.ca/~phil/exiftool/ "ExifTool Web Site") は Phil Harvey 作の無料メタデータパーサ兼エディタで、LNK ファイルなどのさまざまなファイル形式に対応しています。
* **JLECmd.exe**(v0.9.6.1): [JLECmd](https://github.com/EricZimmerman/JLECmd "JLECmd GitHub Repository") は、自動およびカスタムジャンプリストを解析するオープンソース(MIT ライセンス)のパーサで、Windows 7 から Windows 10 に対応しています。このユーティリティは Eric Zimmerman によって開発されており、.NET v4.6 が必要です。
* **RawCopy[64].exe**(v1.0.0.15)および**ExtractUsnJrnl[64].exe**(v1.0.0.3): [RawCopy](https://github.com/jschicht/RawCopy "RawCopy GitHub Repository")(基本的には TSK の **ifind** と **icat** を組み合わせたもの)と [ExtractUsnJrnl](https://github.com/jschicht/ExtractUsnJrnl "ExtractUsnJrnl GitHub Repository") は、Joakim Schicht が開発したデータや特殊ファイルを抽出するためのオープンソース NTFS ユーティリティです。
* **rifiuti-vista[64].exe**(v.0.6.1): [Rifiuti2](https://github.com/abelcheung/rifiuti2 "Rifiuti2 GitHub Repository") は、ごみ箱を解析する BSD ライセンスのオープンソースパーサです。
* **densityscout[64].exe**(build 45): エントロピー計算ユーティリティ [DensityScout](https://www.cert.at/downloads/software/densityscout_en.html "DensityScout Web Site") は Christian Wojner によって作成され、ISC ライセンスで公開されています。
* **YARA**(v3.5.0): [YARA](http://virustotal.github.io/yara/ "Yara Web Site") は、マルウェアの署名スキームであり、特定の指標をスキャンするために使用できるオープンソースのツールです。
* **Cygwin**: [Cygwin](http://www.cygwin.com/ "Cygwin Web Site") プロジェクトはオープンソースであり、*ir-rescue-win* では出力をフィルタリングするために GNU `tr.exe`(v8.24-3)および `grep.exe`(v2.21)のユーティリティのみを、32ビット DLL を使用して利用します。
* **7za.exe**(v9.20): [7-Zip](http://www.7-zip.org/) は Igor Pavlov によって開発されたオープンソースの圧縮ユーティリティで、GNU LGPL ライセンスで公開されています。
## Unix
* **AVML-0.21**(Acquire Volatile Memory for Linux): [AVML](https://github.com/microsoft/avml) は Rust で書かれた X86_64 ユーザーランド揮発性メモリ取得ツールで、静的バイナリとして配布されることを意図しています。AVML を使用すると、事前に対象の OS ディストリビューションやカーネルを把握しなくてもメモリを取得できます。ターゲット上でのコンパイルやフィンガープリントは不要です。AVML は Ubuntu 18.04.5 LTS VM 上で[記載の方法](https://github.com/microsoft/avml#building-on-ubuntu)でコンパイルされました。バイナリは多くの[システムとカーネルバージョン](https://github.com/microsoft/avml#tested-distributions)で動作するはずです。
# 変更履歴
* ***ir-rescue-win-v1.4.4***: `filesystem` オプションの一部を新しい `disk` オプションに移動し、さらに新しい `disk-encryption` オプションを追加して、さまざまなディスク暗号化ソフトウェアを検査できるようにしました。
* ***ir-rescue-win-v1.4.3***: プロセス引数が `malware-dlls` の出力からフィルタリングされ、別のファイルに分離されるようになりました。`filesystem-table` をより包括的なオプション(`filesystem-info`)に置き換え、ディスクとパーティション情報を取得するようにしました。LNK ファイル解析のために [LECmd.exe (v0.9.2.0)](https://github.com/EricZimmerman/LECmd "LECmd GitHub Repository") を [exiftool.exe (v10.55)](http://owl.phy.queensu.ca/~phil/exiftool/ "ExifTool Web Site") に交換し、さらにいくつかのコマンドを追加しました。
* ***ir-rescue-win-v1.4.2***: RegRipper (`registry-parse`) を削除しました(重すぎること、レジストリハイブは後処理が最適であるため)。
* ***ir-rescue-win-v1.4.1***: アプリケーションクラッシュダンプの収集(`memory-appdumps`)、レジストリハイブのテキストエクスポートと解析(`registry-text` と `registry-parse`)、ブートセクタのダンプと解析(`filesystem-boot` と `filesystem-table`)を追加し、全般的な改善を行いました。
* ***ir-rescue-win-v1.4.0***: データ収集の順序と出力を再構築し、設定可能なオプション(`outpath`、`rm-glog`、`vss-limit`、`drives-limit`)で機能を拡張し、NirSoft の `BrowserAddonsView[64].exe` と、より簡潔なグローバルログファイルを追加しました。
# 著者
[@dfernan__](https://twitter.com/dfernan__)
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: サービスを一覧表示;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 のみの番号付きスクリーンショット;falsesigcheck[64].exeWinPrefetchView[64].exe: プリフェッチファイルの内容を表示;