最初の1時間が、その調査で知りうることの範囲を決めます。 メモリは電源が落ちると消えます。通信は切れます。善意の管理者が再起動し、ウイルス対策ソフトのスキャンが攻撃者のツールを隔離し、暗号化されたディスクは電源を切った瞬間に読めなくなります。どれほど分析が優れていても、後から取り戻すことはできません。
第1回では、集めたもののハッシュ値を取り、すべてを書き残し、コピーで作業することを学びました。今回はその手前の段階です。Windows機器に加える変更をできるだけ小さくしながら証拠を取り出し、何を変えたのかを示します。
この回を終えると、次のことができるようになります。
- 電源が入っている、切れている、暗号化されている機器から、何を最初に集めるかを判断する。
- メモリとトリアージ用のデータを自分のドライブに取得し、自分の足跡を小さく抑えて記録する。
- 誰かが電源を切る前に、ディスクの暗号化を確認し、回復キーを確保する。
- 書き込みを防いだ状態でディスクをE01形式のイメージにし、2つのツールで検証する。
- 原本のコピー、作業用のコピー、通用する保管記録を残す。
いま実際のインシデントの最中にいるなら、ランサムウェア対応プレイブックかアカウント侵害対応プレイブックを使い、この講座には後で戻ってきてください。全カリキュラムはDFIR講座のページにあります。
触る前に決める
動いている機器に何かをすれば、機器は変わります。ツールを実行すればメモリに読み込まれ、Prefetchファイルが書かれます。メモリ取得ツールはドライバーを読み込みます。電源を切ることさえ、ディスクへの書き込みを伴います。痕跡を残さない選択肢はなく、あるのは何を失うかの選択だけです。その選択を意図して行い、理由を書き留め、誰かが再起動して勝手に決めてしまう前に決めてください。

図1:最初に何をするか。デジタル・フォレンジック研究会「証拠保全ガイドライン 第10版」の5-1-2、5-2-1、5-2-2、5-2-7に基づく
次の4つの問いを、この順に確かめます。
- この機器を調べる権限があるか。 理由は第1回で説明しました。なければ止めます。
- 被害はまだ広がっているか。 共有フォルダーのファイルが暗号化されている、データが目に見えて流出している、といった状況です。証拠保全ガイドライン 第10版は、電源を供給し続けることで明白な被害の拡大やそのおそれが見られる場合は速やかに電源の供給を停止し、不要な通信だけを避けたい場合は電源を入れたままネットワークから切り離すとしています(5-1-2)。EDRのネットワーク封じ込めを使えば、ケーブルに触れずに後者を行えます。
- 電源は入っているか、切れているか。 切れていれば、そのままにしてディスクのイメージを作ります。ガイドラインが電源を入れることを認めているのは、ディスク全体の暗号化などでほかに保全の方法がない場合に限られ、その場合も証拠保全作業の責任者の指揮の下で、起動による変更を受け入れて行います(5-2-1)。入っていれば、揮発性情報を取得するまで入れたままにします。揮発性情報を取得せずに電源ケーブルを抜くと、ディスク上の一部のデータを失うリスクより、事実の解明が難しくなるリスクのほうが高くなる傾向がある、とガイドラインは述べています(5-2-2)。
- ディスクは暗号化されているか。 されていれば、回復キーかライブでのイメージを手にするまで電源を切りません。ガイドラインは、ディスク全体の暗号化を、電源を切ってはならない場合の1つに挙げています(5-2-7)。
電源が入っているデスクトップ型について、ガイドラインの順序(5-2-2)は次のとおりです。
- コンピューターの種類、使っているOS、システム時計と日本標準時との差を確認し、記録する。
- ネットワーク環境を確認し、記録する。
- 画面に表示されている内容を撮影するか、書き留める。
- やむを得ない場合を除き、ファイルやアイコン、画面上の不審な動きには触れない。
- メモリダンプなどの揮発性情報を、そのOS向けに事前に準備した自動収集ツールで取得する。
- 電源を切り、ケーブル類を外し、WiFiとBluetoothを止める。外す前に、すべてのケーブルと接続口にラベルを付ける。
シャットダウンか、電源プラグを抜くか
どちらにも代償があります。ガイドラインはそれぞれのリスクを挙げています(5-2-6)。
| 方法 | ガイドラインが挙げるリスク | 補足 |
|---|---|---|
| 電源プラグを抜く(強制的に電源を切る) | ディスクの不良セクター、ファイルの破損や読み取り不能、直前の動作がレジストリやイベントログに書き込まれない、揮発性情報の喪失 | ガイドラインのPC向けチェックシートは、揮発性情報を取得した後、Windowsの場合は電源プラグを抜いて強制的に電源を切るとしています(付録資料A)。ノート型では先にバッテリーを外し、外せない場合は電源ボタンを長押しします(5-2-3) |
| 通常のシャットダウン | ディスクの不良セクター、揮発性情報の喪失 | Windowsはシャットダウンの途中でディスクに書き込みます。たとえばシステムイベント1074と6006、高速スタートアップが有効ならハイバネーションファイルです。ガイドラインは、ディスクの暗号化や起動を速くする機能が、電源を切った後の保全を難しくすることがあると注意しています(5-2-6) |
メモリ取得ツールを使う時間がない場合の最後の手段として、ガイドラインはOSのハイバネーション機能を挙げています。メモリの内容はハイバネーションファイルに残りますが、ディスク上の一部のデータを上書きします(6-3-3)。
実際の収集の順序
第1回で、RFC 3227の揮発性の順序を紹介しました。Windowsの端末では、次の手順になります。
| 手順 | 対象 | 無料のツール | 確認または予備 | 省くと失うもの |
|---|---|---|---|---|
| 1 | 時計、タイムゾーン、画面 | Get-Date、カメラ |
比べるための信頼できる時計 | タイムラインのすべての時刻の確かさ |
| 2 | 暗号化 | Magnet Encrypted Disk Detector | manage-bde -status |
場合によってはディスク全体 |
| 3 | メモリ | Magnet RESPONSEまたはMagnet DumpIt | FTK ImagerのCapture Memory | 実行中のプロセス、通信、鍵、メモリ上にしかないコード |
| 4 | 揮発性の状態 | Magnet RESPONSEの揮発性データ | Windows標準のPowerShellコマンド | その時点の通信とプロセス |
| 5 | トリアージ用のファイル | Magnet RESPONSE、KAPE、Autopsyのロジカルイメージャー | 別の収集ツール、または後で作るディスクイメージ | 速さ。ディスクには残るが、答えが出るのは数日後になる |
| 6 | 暗号化されていれば回復キー | manage-bde -protectors -get |
Microsoft Entra IDやActive Directoryに保存されたコピー | ディスクイメージを読む手段 |
| 7 | 電源の切り方の判断 | メモ | ガイドライン5-2-6 | 主導権。再起動した誰かが代わりに決めてしまう |
| 8 | ディスクイメージ | 書き込み防止のもとでFTK ImagerによりE01を作成 | FTK Imagerの検証、AutopsyのData Source Integrityモジュール | 削除されたファイル、未使用領域、トリアージで集めなかったすべて |
なぜ揮発性の情報を取るコマンドより先にメモリなのか。コマンドを1つ実行するたびにメモリは変わり、メモリイメージにはプロセスの一覧も通信もすでに含まれているからです。第9回では、それをVolatility 3で取り出します。メモリの取得には数分かかり、その間に通信が切れるため、通信を先に記録する対応者もいます。どちらの順序にも理由があり、どちらを選んだかを記録すれば問題ありません。暗号化の確認をメモリより先にするのは、数秒で終わり、計画全体を変えうるからです。
収集キット
インシデントの前に、汚染されていない機器で用意し、ラボで練習しておきます。ガイドラインも、使うツールを事前に十分にテストし、動作を確認しておくよう求めています(6-4-5)。
- 収集用ドライブ:出力の書き込み先です。新品か、ファイルの通常削除ではなくバイナリレベルで一切のデータがない状態にしたものを使います(6-1-2)。NTFSでフォーマットします。FAT32では4GBを超えるファイルを扱えず、メモリイメージを保存できません。ガイドラインもNTFSのようなジャーナリングに対応したファイルシステムを勧めています(6-1-4)。容量は、その機器のメモリとトリアージデータの合計より大きくします。
- ツール:それぞれのバージョンとSHA-256を記録しておきます。機器にインストールせず、自分のドライブから実行します。
- 対応用のアカウント:その機器だけの管理者権限を持つもの。第1回で説明したとおり、ドメイン管理者のアカウントは使いません。
- カメラ、ラベル、証拠袋と、本稿の最後にある2枚の記録シート。
- 取り外したディスクのイメージを作るためのハードウェアの書き込み防止装置と、イメージを保存する、より大きな2台目のドライブ。
- SOCへの事前連絡:メモリ取得ツールはカーネルドライバーを読み込み、すべてのプロセスのメモリを読みます。EDRから見れば、認証情報の窃取と同じ動きです。どのツール名とハッシュ値が現れるかを事前に取り決め、自分たちの収集が途中で止められたり封じ込められたりしないようにします。
最も大事なルールは、出力はすべて自分のドライブに書き、収集対象の機器には書かないことです。KAPEの文書は、出力先が対象機器のシステムドライブやそのほかのローカルディスクにあると、集めたファイルがまず対象機器に書き込まれる、と注意しています。そこに書かれる1バイト1バイトが、削除された証拠を上書きしうるのです。
暗号化:何かを切る前に確認する
BitLockerで暗号化されたディスクは、電源が切れると、誰かが鍵を入力するまで読めません。Microsoftは、Windows 11 バージョン24H2からデバイスの暗号化のハードウェア要件を2つ外し、自動で暗号化される機器が増えました(BitLockerの概要)。最近のノートパソコンは、確認するまで暗号化されているものとして扱ってください。
確認は2つの方法で、どちらも管理者として実行します。
- Magnet Encrypted Disk Detector:ガイドラインがこの用途に挙げている無料のコマンドラインツールです(4-1-3)。物理ドライブにTrueCrypt、PGP、VeraCrypt、Check Point、SafeBoot、BitLockerのボリュームがないかを調べ、見つかったものを赤で表示します。既知の暗号化製品と、マウントされた暗号化ボリュームを見分けるもので、データのランダムさは測りません。そのため、自作の暗号化コンテナーは表示されません。そうしたものは、後でイメージに対してAutopsyの暗号化検出モジュールで探します。
- Windows標準の
manage-bde:1つ目のコマンドはC:ドライブの状態を、2つ目は数字の回復パスワードを含むキー保護機能の一覧を表示します。ガイドラインは、ドライブのロックが解除されているときに回復キーを取得する方法として、2つ目のコマンドを挙げています(4-1-3)。
manage-bde -status C:
manage-bde -protectors -get C:
MicrosoftのBitLocker運用ガイドは、コントロールパネルに表示される4つの状態を定義しています。収集の観点から、それぞれの意味は次のとおりです。
| 状態 | 意味 | 電源を切る前に |
|---|---|---|
| オフ | 暗号化されていない | 追加の作業はない |
| オン | 暗号化され、通常はTPMで保護されている | 回復パスワードとその保護機能のIDを記録する。デバイスの暗号化はMicrosoft Entra IDやActive Directoryに回復キーをバックアップするので、そちらから取得してもよい |
| 中断 | 暗号化されたままだが、鍵が暗号化されずにディスクに置かれている | 状態を記録する。決められた回数の再起動で保護が自動的に再開することがある(回数を指定せずにSuspend-BitLockerを実行した場合は1回)ので、再起動しない |
| 有効化を待機中 | 鍵を暗号化しない状態で暗号化されており、保護機能がまだない。ローカルアカウントだけの機器では、デバイスの暗号化はこのような鍵が平文の状態のまま | 状態を記録する。データは暗号化されているが、まだ保護されていない |
回復キーは認証情報として扱ってください。証拠も、ディスク上のほかのすべても開けてしまう鍵です。イメージとは別に保管し、保管記録に載せ、チケットには決して貼り付けません。Autopsy 4.23は、暗号化されたイメージを追加するときにBitLockerのパスワードを尋ねます。Eric Zimmermanのbstringsには、メモリイメージやファイルから回復キーを探す組み込みのパターンbitlockerがあります。
ディスクを取り外す前には、ディスク自体に暗号化機能がある型番かどうかを確認し、取り外した後は書き込み防止装置を通して読み込めるかを確認するよう、ガイドラインのチェックシートは求めています(付録資料A)。どうしても鍵が手に入らない場合は、動いていてロックが解除されている間にイメージを作ります(後述のライブでのイメージ作成を参照)。
メモリを取得する
無料のツールが3つあります。1つを選び、失敗したりブロックされたりしたときのために、もう1つを用意しておきます。
| ツール | 動かし方 | 出力 | ライセンス |
|---|---|---|---|
| Magnet RESPONSE | 1つのプログラムを自分のドライブから管理者として実行する。事件の参照番号を入れ、集めるものにチェックを入れ、出力先を選ぶ | 集めたファイルの.zip(ハッシュ値を内部に保存)と、別ファイルの.binとしてのメモリ。.zipをプログラムにドラッグすると検証できる | 無料(Magnetの使用許諾契約による) |
| Magnet DumpIt for Windows | 自分のドライブから管理者として実行する。選択肢はバージョンで異なるので、DumpIt.exe /?で確認する |
WinDbgやVolatility 3で読めるMicrosoftの完全クラッシュダンプ | 無料(Magnetの使用許諾契約による)。Linux版はオープンソース |
| FTK Imager | File → Capture Memory。保存先のフォルダー、ファイル名(既定はmemdump.mem)、必要ならページファイルも | 生のメモリイメージ | 無料。有料版のFTK Imager Proが2025年9月に登場 |
Magnetの発表によると、Magnet RESPONSEはメモリの取得にDumpItを使い、DumpItが失敗するとMagnet RAM Captureに切り替えます。FTK ImagerはAD1ファイルの作成も選べますが、解析ツールがその形式を必要としない限りチェックは外したままにします。Exterroによれば、最近のバージョンは持ち運べるドライブから実行でき、調べる機器にインストーラーを入れずに済みます。
始める前に知っておきたいことが4つあります。
- メモリは取得している間も変わります。 取得には数分かかり、その間もシステムは動き続けるので、もう一度取得しても同じハッシュ値にはなりません。取得が終わったらすぐにファイルのハッシュ値を取ります。それが取得時のハッシュ値です。第1回で説明したとおり、原本のハッシュ値が取れない場合は、コピーのハッシュ値を取り、その理由を記録することをガイドラインは求めています(7-3)。
- イメージにはメモリ上のあらゆる秘密が入っています。 LSASSにあるものを含め、パスワード、トークン、鍵です(ATT&CK T1003.001)。その事件で最も機微な証拠として扱ってください。
- ツールも痕跡を残します。 ツール自身のPrefetchファイルに加え、ドライバーを読み込むため、通常は新しいサービス(システムイベント7045)や、ツール名の入ったEDRのドライバー読み込みの記録が残ります。何をいつ実行したかを記録し、第4回で自分の操作と攻撃者の操作を見分けられるようにします。
- メモリ上のすべてが平文とは限りません。 Windowsは、あまり使われていないメモリのページを圧縮することがあります。圧縮されたページにある文字列は、単純な文字列検索では見つかりません。この点は第9回で取り上げます。
トリアージ用のデータを集める
トリアージ用の収集では、多くの問いに答えるファイルを、ディスク全体のイメージなら何時間もかかるところを数分でコピーします。ガイドラインはこれをファスト・フォレンジックと呼び、Windowsで抽出すべき主な証拠データとして、イベントログ、プリフェッチ、レジストリ、ジャーナル、メタデータ、ブラウザーの閲覧履歴やメーラーのデータ、メモリを挙げています(7-7)。現場で手作業だけで素早く取得するのは難しいため、専用のツールを使うよう勧めています。
| ツール | 集めるもの | 動かし方 | 出力 | ライセンス |
|---|---|---|---|---|
| Magnet RESPONSE | 揮発性データ、$MFT・レジストリハイブ・Prefetchなどの重要なシステムファイル、プロセスの詳細情報、キーワードに一致するファイル | 自分のドライブから管理者として実行 | ハッシュ値を内部に保存した.zip | 無料 |
| KAPE | Targetファイルに書かれたもの。!SANS_Triageのような複合ターゲットで標準的なトリアージ一式を集め、--vssでシャドウコピーも探す |
コマンドラインかgkapeの画面。管理者権限と.NET 4.5.2以降が必要で、インストールは不要 | フォルダー、またはVHD、VHDX、zipのコンテナー | 政府機関、教育・研究目的、社内での利用は無料。2026年1月1日以降は商用利用不可 |
| Autopsyのロジカルイメージャー | 自分で決めた規則(フォルダー名、拡張子、サイズなど)に一致するファイル、ユーザーアカウント、暗号化プログラムが見つかった場合の警告 | Autopsyで設定し(Tools → Create Logical Imager)、tsk_logical_imager.exeと設定ファイルを自分のドライブに書き出して、対象機器で管理者として実行する。Windows専用で、exFAT以外のFATドライブでは使えない |
ファイルを集めたフォルダー、またはAutopsyにデータソースとして読み込めるスパースVHD | オープンソース(Apache License 2.0) |
KAPEのライセンス条件で使える場合は、収集用ドライブから実行し、同じドライブに書き出します。
& 'E:\Tools\KAPE\kape.exe' --tsource C: --target '!SANS_Triage' --tdest 'E:\DFIR-LAB-002\kape\tout' --vhdx '%m_triage'
--tdestはC:ではなく、自分のドライブであるE:にあります。KAPEは%mを機器名に置き換えるので、コンテナーには機器の名前が付きます。顧客の機器で作業する場合、KAPEの条件では使えないので、Magnet RESPONSEかロジカルイメージャーを使ってください。
ディスクのイメージを作る
ディスクイメージは、すべてのセクターを複製します。ファイル、削除されたファイル、未使用の領域、OSが隠している領域です。ガイドラインが求めているのもまさにそれです(6-2-2)。削除データ、隠しデータ、未使用領域を含めて、媒体の全領域を複製します。不良セクターがあっても複製を続け、その位置を確認して、ハッシュ値が原本と異なった場合に説明できるようにします。結果はddやEnCaseのようなイメージファイルとして保存します。
欠かせない機能が2つあります(6-2-1と表3)。
- 書き込み防止:原本にはいかなる書き込みもさせません。ハードウェアの装置でも、ソフトウェアによる措置でもかまいません。
- 同一性の検証:第1回で紹介しました。原本とコピーのハッシュ値を取り、一致することを示します。
E01か、生のイメージか
| 形式 | 中身 | 強み | 弱み |
|---|---|---|---|
| 生のイメージ(dd) | すべてのセクターだけ | どのツールでも読める | 元のディスクと同じ大きさ。ハッシュ値や事件の情報は中に入らない |
| E01(EnCase、Expert Witnessとも) | 圧縮した塊ごとのセクターと、事件の情報、取得時のハッシュ値 | 小さい。事件の情報を持ち運べる。Autopsyなどのツールが自分で検証できる | 形式に対応したツールが必要。ファイルそのものを文字列検索しても、圧縮された中身は見つからない |
FTK Imagerで作る
- ハードウェアの書き込み防止装置を通してディスクを接続します。動かし続ける必要がある機器については、後述のライブでのイメージ作成を参照してください。
- File → Create Disk Imageを選び、Physical Drive(パーティション1つではなく、ディスク全体)を選んで、ドライブを指定します。
- Addを選び、E01を選んで、証拠の情報(事件番号、証拠番号、説明、調査者、メモ)を入れます。これらはイメージの中に保存されます。
- 別のNTFSドライブにある保存先のフォルダーとファイル名を選びます。分割サイズと圧縮は、理由がない限り既定のままにします。
- Verify images after they are createdにチェックが入っていることを確かめ、Startを選びます。
複製が終わると、FTK Imagerはイメージを読み直し、ディスクから計算したMD5とSHA-1をイメージのものと比べ、不良セクターがあれば一覧にします。同じ内容は、イメージの隣のテキストファイルにも保存されます。メモに写してください。
ライブでのイメージ作成
電源を切れない機器(鍵のない暗号化ディスク、業務上止められないサーバー)は、動かしたままイメージを作ります。FTK Imagerは、動いているWindowsを通してC:のようなLogical Driveのイメージを作れます。データは復号された状態で読まれます。代償として、読んでいる間にもディスクは変わるので、そのイメージは誰にも再現できず、ハッシュ値が示せるのは、コピーがその後変わっていないことだけです。そのことと、この方法を選んだ理由を記録してください。
原本と作業用のコピー
- 原本は最初に作ったイメージです。検証してハッシュ値を記録し、別の媒体に保管し、検証するか新しいコピーを作るとき以外は開きません。
- 作業用のコピーを調べます。作業の前と後に、ハッシュ値を原本と照らし合わせます。
- 証拠ごとに番号(E001、E002など)を付け、それぞれに第1回の保管記録を残します。
- ガイドラインのチェックシートにあるとおり、原本のディスクには事件番号と原本番号のラベルを貼り、メーカーのラベルと接続部分を撮影します(付録資料A)。
両側から見る:収集を妨げる攻撃
対応を予期している攻撃者は、集める価値のあるものを残さないようにするか、収集そのものを失敗させようとします。次の操作は、どれも証拠を奪います。そして多くは、良い警報の材料になる痕跡を残します。
| 攻撃者の操作 | ATT&CK | 失うもの | 残るもの | 用意しておきたい警報 | 回 |
|---|---|---|---|---|---|
ボリュームシャドウコピーの削除(vssadmin delete shadows、またはWMIで同じ操作) |
T1490 | KAPEの--vssで集められたはずの、以前のファイルやログ |
シャドウコピーを指定したvssadmin、wmic、PowerShellのプロセス生成の記録 | バックアップソフト以外によるシャドウコピーの削除 | 8 |
| EDRやウイルス対策ソフトの停止・無効化 | T1562.001 | ディスクの代わりに使えたはずのテレメトリ | Defenderのイベント5001(リアルタイム保護の無効化)と5007、サービスの停止、EDRの接続記録の空白 | 機器はオンラインなのに報告が止まったセンサー | 6 |
| イベントログの記録停止や監査ポリシーの変更 | T1562.002 | その時点以降のログ | セキュリティイベント4719(監査ポリシーの変更)、Windows Event Logサービスの停止 | 変更申請のない4719 | 5 |
| メモリ上だけでのコード実行 | T1620 | ディスクイメージで見つかるもの | メモリ上のコード、場合によってはPowerShellのスクリプトブロックログ | 疑いがあれば、誰かが再起動する前にメモリを取得する | 9 |
空き領域の消去や完全削除(cipher /w、SDelete) |
T1070.004 | イメージから復元できたはずの削除ファイル | CIPHER.EXEやSDELETEのPrefetch、変更ジャーナルの記録 | 利用者の端末での消去ツールの実行 | 8 |
| 遠隔での再起動や電源断 | T1529 | メモリ | システムイベント1074と6006 | 調査中の機器の予定外の再起動 | 5 |
守る側にとっての教訓は第1回と同じで、テレメトリを書かれたそばから機器の外に転送しておくことです。ただし、メモリは例外です。メモリを転送する仕組みはないので、最後の2つの操作への備えは、早めに取得することだけです。
演習2:電源とともに消える証拠
第1回では、自分がしたことをディスクの上で見つけました。今回は、メモリにだけ存在するはずの証拠を作り、対応者として収集し、ガイドラインのとおりに電源を切り、書き込みを防いだ状態でディスクのイメージを作ります。そして2つのことを示します。メモリにはディスクにないものがあること、そしてイメージの作成でディスクが変わっていないことです。今回も、自分のメモが答えです。

図2:演習2で、それぞれの証拠がどこへ行くか。読み込み専用の接続は、ハードウェアの書き込み防止装置の代わり
必要なもの:
- 第1回のTARGETとANALYST。
- ANALYSTのC:ドライブに約60GB、ホストに約80GBの空き。ANALYSTの空きが足りない場合は、
C:\Cases\DFIR-LAB-001\evidenceにある第1回のVHDのコピーを削除してください。ホストのC:\dfir-stagingにあるものが原本で、そのハッシュ値はメモにあります。 - 公式ページから入手するもの:Magnet RESPONSEとMagnet Encrypted Disk Detector(無料。Magnetはフォームへの記入を求めます)、FTK Imager(無料。Exterroもフォームへの記入を求めます)、Eric Zimmermanのツールのページにあるbstrings。ホストで、2つのMagnetのツールを
C:\dfir-staging\kitに展開し、FTK ImagerのインストーラーとbstringsのzipをC:\dfir-staging\toolsに置いて、各ファイルのSHA-256を記録します。
パートA:収集用ドライブを用意する
ホストで、収集用ドライブにする40GBの仮想ディスクを作ります。Windowsのホストでは次のとおりです。
& 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' createmedium disk --filename "$env:USERPROFILE\VirtualBox VMs\DFIR-COLLECT.vhd" --size 40960 --format VHDmacOSやLinuxのホストでは次のとおりです。
VBoxManage createmedium disk --filename ~/"VirtualBox VMs/DFIR-COLLECT.vhd" --size 40960 --format VHDANALYSTの電源を切った状態で、設定 → ストレージを開き、SATAコントローラーを選んでディスクを追加からハードディスクを選びます。ハードディスクの選択画面で追加を選び、
DFIR-COLLECT.vhdを指定します。ANALYSTを起動します。管理者として実行したPowerShellで、
Get-Diskにパーティションの形式がRAWのディスクがちょうど1台、追加した40GBのものだけが表示されることを確認します。そのうえで、この事件のフォルダーを作り、ディスクをラベルCOLLECTのE:としてフォーマットします。$case = 'C:\Cases\DFIR-LAB-002' 'evidence', 'working', 'exports', 'notes' | ForEach-Object { New-Item -ItemType Directory -Path (Join-Path $case $_) -Force | Out-Null } Get-Disk | Where-Object PartitionStyle -eq 'RAW' | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -DriveLetter E -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel COLLECT -Confirm:$false新しい仮想ディスクはすべてゼロとして読めます。ガイドラインが求めるバイナリレベルでの無データ状態(6-1-2)の代わりです。
キットをドライブにコピーし、ハッシュ値を記録します。
New-Item -ItemType Directory -Path 'E:\Tools' -Force | Out-Null Copy-Item -Path '\\VBoxSvr\dfir-staging\kit\*' -Destination 'E:\Tools' -Recurse Get-ChildItem -Path 'E:\Tools' -Recurse -File | Get-FileHash -Algorithm SHA256 | Select-Object Hash, Path | Export-Csv -Path 'C:\Cases\DFIR-LAB-002\notes\kit-hashes.csv' -NoTypeInformation\\VBoxSvr\dfir-staging\toolsから、ANALYSTにFTK Imagerをインストールし、bstringsを7-ZipでC:\Tools\EZToolsに展開します。第1回のPECmdと同じように、bstringsの署名を確認します。ANALYSTをシャットダウンし、そのストレージ設定から
DFIR-COLLECT.vhdを外し、同じ手順でTARGETに追加します。実際の事件では動いている機器にドライブを差し込みますが、ラボではTARGETの電源が切れている間に接続するほうが簡単です。
パートB:TARGETで、メモリにしかない証拠を作る
TARGETを起動してログオンします。各手順の時刻は、TARGETではなく、ホスト側のメモに書きます。エクスプローラーで、TARGETがCOLLECTドライブに割り当てた文字を確認してください。本稿はE:を前提にしているので、違う場合はコマンドを読み替えます。
PowerShellを(管理者としてではなく)開き、次を実行します。
$marker = 'KESTREL-' + (Get-Random -Minimum 100000 -Maximum 1000000) $listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Loopback, 47741) $listener.Start() $markerこれで、
KESTREL-482913のような、自分では一度も入力していないマーカーができます。PowerShellが乱数から組み立てるので、ディスク上の履歴ファイルに届くのはコマンドだけで、値は届きません。履歴を管理するPSReadLineは、実行したコマンドラインをその都度保存しますが、出力は保存しません。このコマンドは、ループバックアドレスで待ち受けるネットワークのポート47741も開きます。マーカーの値をホスト側のメモに書き、このウィンドウは開いたままにします。2つ目のPowerShellを管理者として開き、時計を記録して暗号化を確認します。
Get-Date -Format o Get-TimeZone | Format-List Id, BaseUtcOffset manage-bde -status C:TARGETの時刻をホストの時計と比べ、差を記録します。続いて、同じウィンドウで
E:\ToolsのEncrypted Disk Detectorを実行します。どちらかが暗号化を報告したら、先に進む前に下の「TARGETが暗号化されていた場合」を読んでください。E:\ToolsのMagnet RESPONSEを管理者として実行します。事件の参照番号にDFIR-LAB-002、出力先にE:\DFIR-LAB-002\responseを入れ、メモリ(RAM)、揮発性データ、重要なシステムファイルの選択肢にチェックを入れます(正確な名前はバージョンで異なります)。メモリが4GBなら、数分かかります。管理者のウィンドウで、Windows標準のコマンドを使い、別の方法でも揮発性の状態を記録します。
$out = 'E:\DFIR-LAB-002\volatile' New-Item -ItemType Directory -Path $out -Force | Out-Null Get-CimInstance -ClassName Win32_Process | Select-Object ProcessId, ParentProcessId, Name, CommandLine, CreationDate | Export-Csv -Path "$out\processes.csv" -NoTypeInformation Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | Export-Csv -Path "$out\tcp.csv" -NoTypeInformation Get-NetTCPConnection -LocalPort 47741 -State Listen | Format-List LocalAddress, LocalPort, OwningProcess最後のコマンドで、ポート47741が127.0.0.1で待ち受けており、その持ち主が1つ目のPowerShellのウィンドウのプロセスIDであることが表示されるはずです。そのIDを書き留めます。
集めたものすべてのハッシュ値を取り、時刻を記録します。
Get-ChildItem -Path 'E:\DFIR-LAB-002' -Recurse -File | Get-FileHash -Algorithm SHA256 | Select-Object Hash, Path | Export-Csv -Path 'E:\DFIR-LAB-002-hashes.csv' -NoTypeInformation Get-Date -Format oガイドラインのチェックシートがWindowsについて定めるとおり、電源プラグを抜いてTARGETの電源を切ります。VirtualBoxでは、TARGETのウィンドウを閉じて電源オフを選びます。VirtualBoxのマニュアルは、これを実際のコンピューターの電源プラグを抜くことに相当するとしています。シャットダウンや状態の保存は選びません。時刻を記録します。
TARGETが暗号化されていた場合。 Windows 11が、デバイスの暗号化を自動で有効にしていることがあります。manage-bdeとEncrypted Disk Detectorが示した内容を、そのまま記録してください。実際の事件なら、それこそが収集の方法を決める発見です。保護機能が表示されたら、manage-bde -protectors -get C:を実行し、回復パスワードをホスト側のメモに写します。このラボに限っては、後の回でディスクを電源を切った状態で読めるように、リセット地点を復号します。TARGET-CLEANを起動し、管理者としてmanage-bde -off C:を実行し、manage-bde -status C:がFully Decryptedになるまで待ってシャットダウンし、TARGETという名前の完全なクローンを作り直して、パートBをやり直します。実際の事件では決してしないでください。復号はディスク全体を書き換えます。
パートC:書き込みを防いだ状態でTARGETのディスクのイメージを作る
TARGETの電源が切れた状態で、ホストで、第1回と同じようにディスクをVHDに変換し、ハッシュ値を取ります。これは、コンピューターからディスクを取り外すことの代わりです。ここからはVHDが原本のディスクで、それを変えずにイメージを作ります。Windowsのホストでは次のとおりです。
& 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' clonemedium "$env:USERPROFILE\VirtualBox VMs\TARGET\TARGET.vdi" 'C:\dfir-staging\DFIR-LAB-002-target.vhd' --format VHD Get-FileHash -Path 'C:\dfir-staging\DFIR-LAB-002-target.vhd' -Algorithm SHA256 | Format-ListmacOSやLinuxのホストでは次のとおりです。
VBoxManage clonemedium ~/"VirtualBox VMs/TARGET/TARGET.vdi" ~/dfir-staging/DFIR-LAB-002-target.vhd --format VHD shasum -a 256 ~/dfir-staging/DFIR-LAB-002-target.vhdDFIR-COLLECT.vhdをTARGETからANALYSTに付け替え、ANALYSTを起動します。管理者として実行したPowerShellで、収集したものを事件フォルダーにコピーし、TARGETで取ったハッシュ値とすべてのファイルを照らし合わせます。コピー先のcollectフォルダーは、まだ存在していない必要があります。Copy-Item -Path 'E:\DFIR-LAB-002' -Destination 'C:\Cases\DFIR-LAB-002\evidence\collect' -Recurse Import-Csv -Path 'E:\DFIR-LAB-002-hashes.csv' | ForEach-Object { $copy = $_.Path -replace '^E:\\DFIR-LAB-002', 'C:\Cases\DFIR-LAB-002\evidence\collect' [pscustomobject]@{ File = $copy; Match = (Get-FileHash -Path $copy -Algorithm SHA256).Hash -eq $_.Hash } }すべての行がTrueでなければなりません。TARGETがドライブに別の文字を割り当てていた場合は、
-replaceのパターンをその文字に変えてください。保管記録で証拠に番号を付けます。メモリイメージはE001、そのほかの収集物はE002です。読み込み専用の共有からVHDをコピーしてハッシュ値を取り、読み込み専用で接続してディスク番号を確かめます。
Copy-Item -Path '\\VBoxSvr\dfir-staging\DFIR-LAB-002-target.vhd' -Destination 'C:\Cases\DFIR-LAB-002\evidence\' Get-FileHash -Path 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' -Algorithm SHA256 | Format-List Mount-DiskImage -ImagePath 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' -Access ReadOnly -NoDriveLetter Get-DiskImage -ImagePath 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' | Get-Disk | Format-List Number, FriendlyName, Size, IsReadOnlyハッシュ値はホストのものと一致しなければなりません。
IsReadOnlyはTrueになるはずです。Windowsはこのディスクへの書き込みを拒否します。ガイドラインが認めるソフトウェアによる書き込み防止の措置です(6-2-1)。ディスク番号を書き留めます。FTK Imagerを管理者として開きます。File → Create Disk Image → Physical Driveを選び、
\\.\PHYSICALDRIVEの後に書き留めた番号が続くものを選びます。E01の出力先を追加し、事件番号DFIR-LAB-002、証拠番号E003、説明「TARGETのシステムディスク(ラボで書き込み防止したディスクの代わり)」を入れます。C:\Cases\DFIR-LAB-002\evidenceにDFIR-LAB-002-E003として保存し、Verify images after they are createdにはチェックを入れたまま開始します。80GBの仮想ディスクなら、数分から1時間ほどかかります。検証が終わったら、MD5、SHA-1、不良セクターの結果を記録します。続いてVHDの接続を解除し、新しいE01と合わせてもう一度ハッシュ値を取ります。
Dismount-DiskImage -ImagePath 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' Get-FileHash -Path 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd', 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-E003.E01' -Algorithm SHA256 | Format-ListVHDのSHA-256は、接続する前と同じでなければなりません。E01のSHA-256は、FTK Imagerがディスクについて中に保存したMD5とSHA-1と並んで、保管記録でイメージファイルそのものを特定します。
パートD:メモリとディスクを比べる
bstringsで両方を検索します。1行目には自分のマーカーの値を入れます。
$marker = 'KESTREL-482913' $memory = Get-ChildItem -Path 'C:\Cases\DFIR-LAB-002\evidence\collect' -Recurse -Filter '*.bin' | Select-Object -First 1 & 'C:\Tools\EZTools\bstrings.exe' -f $memory.FullName --ls $marker --off & 'C:\Tools\EZTools\bstrings.exe' -f 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' --ls $marker & 'C:\Tools\EZTools\bstrings.exe' -f 'C:\Cases\DFIR-LAB-002\evidence\DFIR-LAB-002-target.vhd' --ls KESTREL --offbstringsは既定でASCIIとUnicodeの両方の文字列を探し、
--offは各結果がファイルのどこにあるかを表示します。E01ではなくVHDを検索するのは、E01が圧縮されていて、ファイルを文字列検索しても中身が見つからないからです。メモリのファイルが.binでなければ、フィルターを変えてください。別のツールで確かめます。Autopsyで、ベースフォルダーを
C:\Cases\DFIR-LAB-002\workingにした事件DFIR-LAB-002を作ります。- E01をDisk Image or VM Fileとして追加し、Data Source Integrity、File Type Identification、Keyword Searchのモジュールを選びます。第1回と同じくAdd text to Solr Indexにチェックを入れます。E01は自分のハッシュ値を持っているので、ハッシュ値の入力は不要です。
- メモリのファイルを、2つ目のデータソースとしてUnallocated Space Image Fileの種類で追加します。塊への分割はしません。Autopsyのガイドは、塊の境界をまたぐキーワードを見落とすことがあると注意しています。
- 取り込みが終わったら、マーカーの値を検索し、続いて
KESTRELだけを検索します。
答え合わせ
| 問い | メモリイメージ | ディスクイメージ | 理由 |
|---|---|---|---|
| 1. マーカーの値全体はどこにあるか | bstringsでもAutopsyでも、Unicodeの文字列として見つかる | どちらのツールでも見つからない | 値はPowerShellのプロセスとそのコンソールのメモリにしか存在しなかった |
| 2. KESTRELという語だけなら、どこにあるか | 見つかる | AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLineのConsoleHost_history.txtで見つかる |
PSReadLineはコマンドライン'KESTREL-' + (Get-Random …)を保存したが、それが生んだ値は保存していない |
| 3. ポート47741は開いていたか。持ち主は誰か | Magnet RESPONSEの揮発性データと自分のtcp.csvに、127.0.0.1で待ち受け、書き留めたPIDが持ち主として記録されている |
痕跡なし | 通信の状態はメモリにある。第9回で、Volatility 3を使ってメモリイメージから取り出す |
| 4. イメージの作成でディスクは変わったか | — | FTK Imagerの検証が一致し、Autopsyの受信トレイが保存されたハッシュ値の検証成功を伝え、VHDのSHA-256も変わらない | 読み込み専用の接続が守られ、イメージがディスクと一致することを2つのツールが確かめた |
マーカーの値全体がディスクで見つかった場合は、場所を確かめてください。pagefile.sysなら、Windowsがディスクに書き出したメモリです。それ自体が発見であり、第9回でメモリと合わせてページファイルを分析する理由でもあります。メモリイメージでbstringsが何も見つけない場合は、そのページをWindowsが圧縮したのかもしれません。パートBをやり直し、マーカーを作ったらすぐにMagnet RESPONSEを実行してください。
Autopsyが検証の失敗を報告した場合、イメージはFTK Imagerがディスクから読んだものと一致していません。原本からE01をコピーし直すか、イメージを作り直し、失敗したことを記録してください。報告した失敗は記録の一部になりますが、隠した失敗はそうなりません。
プロが加えること
- できるときは遠隔で集める。 何百台もの機器があれば、対応者は1台ずつ席を回るのではなく、EDRのライブレスポンス機能や遠隔収集の仕組みを使います。KAPEの文書は、収集用のシステムにだけ書き込みながら遠隔の機器から集める方法を示しています。何を実行し、出力がどこへ行き、そのハッシュ値が何かを記録するという本稿のルールは、そのまま当てはまります。
- ハイパーバイザーを使う。 調べる機器自体が仮想マシンなら、ハイパーバイザーはゲストの中で何も実行せずにメモリとディスクを保存できます。たとえばVirtualBoxの状態の保存は、マシンの状態全体をホストのディスクに書き出します。誰かがシャットダウンする前に、基盤の担当チームに相談してください。
- 使う前に複製先を確かめる。 ガイドラインは、複製先の媒体を事前にチェックし、一切のデータがない状態にするよう求めています(6-1-1、6-1-2)。SSDを含むフラッシュ系の媒体は、代替領域などの隠し領域があるため、無データ状態であることを確かめるのが難しいとも注意しています。
- テストされたツールを選ぶ。 ガイドラインは、NISTのコンピュータ・フォレンジック・ツール・テスト(CFTT)でテストされたツールを勧めています(6-3-2)。次善の策は、この演習のような自分での既知解テストです。ツールが更新されるたびに繰り返してください。
- 作業しながら記録する。 次のライブレスポンス記録は、後から思い出して書くのではなく、機器の前で書き込むためのものです。
テンプレート
ライブレスポンス記録:機器1台につき1枚。作業しながら書き込みます。
ライブレスポンス記録
事件番号: DFIR-LAB-002
機器: (名前、メーカー、型式、製造番号、資産番号)
場所:
対応者 / 立会人:
許可した人: (氏名、役職、日付、範囲)
到着時の状態: [ ] 電源オン [ ] 電源オフ [ ] スリープ [ ] ロック中
画面の撮影: [ ] 済み ファイル:
機器の時計: (Get-Date -Format o)
基準の時計: (何を基準にしたか、その時刻) 差:
タイムゾーン:
ネットワーク: [ ] 有線 [ ] WiFi [ ] EDRで隔離(時刻)
暗号化: EDDの結果: manage-bdeの状態:
回復キー: [ ] 記録済み(保管場所、記録者) [ ] 入手できない(理由)
時刻(UTC) | ツールとバージョン | 実行権限 | 出力先 | SHA-256
---------------------|---------------------------|----------|------------------------------|--------
| | | |
電源の扱い: [ ] プラグを抜いた [ ] シャットダウン [ ] 動かしたまま 時刻(UTC):
その方法を選んだ理由:
ケーブルと接続口のラベル付けと撮影: [ ] 済み
証拠一覧:証拠1点につき1行。各証拠には、第1回の保管記録が続きます。
証拠一覧
事件番号: DFIR-LAB-002
番号 | 内容 | 取得元の機器 | 取得日時(UTC) | ツールとバージョン | 取得時のハッシュ値 | 原本の保管場所 | 作業用コピーの場所
-----|------------------------------------|----------------|-----------------|----------------------|--------------------------------|------------------|-------------------
E001 | メモリイメージ | TARGET | | Magnet RESPONSE | SHA-256: | |
E002 | トリアージ収集物と揮発性情報のCSV | TARGET | | Magnet RESPONSE、PS | SHA-256の一覧: hashes.csv | |
E003 | ディスクイメージ(E01) | TARGET | | FTK Imager | MD5: / SHA-1:(E01の中) | |
次回予告
第3回:Autopsyで最初の事件を開き、Magnet Axiomでも同じ事件を見る。 Autopsyで証拠を読み込み、解析、検索、タグ付け、簡単なタイムライン、報告書の出力を行い、続いて同じ証拠をMagnet Axiomで開いて、2つのツールが見つけるもの、そして食い違うところを比べます。DFIR-LAB-002の事件フォルダーとホスト上の原本は残しておいてください。第9回で、今回のメモリイメージに戻ります。
出典
- デジタル・フォレンジック研究会「証拠保全ガイドライン 第10版」(2025年3月15日)の4-1-3、5-1-2、5-2-1〜5-2-8、6-1、6-2、6-3、6-4-5、7-7、付録資料A(PCの場合のチェックシート)
- IETF RFC 3227「Guidelines for Evidence Collection and Archiving」
- Microsoft Learn:BitLockerの概要(デバイスの暗号化とWindows 11 24H2)、BitLocker運用ガイド、manage-bde、Suspend-BitLocker、Mount-DiskImage、Get-DiskImage、Get-NetTCPConnection、about_PSReadLine
- Eric ZimmermanによるKAPEの文書:使い始め方、使い方、遠隔収集、ライセンス条件についてはよくある質問
- Eric Zimmerman bstrings(バージョン1.5.1.0のREADME)
- Autopsy 4.23.0の利用者ガイド:Logical Imager、Data Sources、Data Source Integrity Module、Encryption Detection Module
- Oracle「VirtualBox User Guide for Release 7.2」:仮想マシンの終了(状態の保存、シャットダウン、電源オフ)、ストレージの設定、
VBoxManage createmedium - Magnet Forensics:Magnet RESPONSE、Magnet DumpIt for Windows、Encrypted Disk Detector。Exterro:FTK Imager
- MITRE ATT&CK:T1490、T1562.001、T1562.002、T1620、T1070.004、T1529、T1003.001
2026年10月19日公開。当サイトのリポジトリに収集した一次資料(デジタル・フォレンジック研究会「証拠保全ガイドライン 第10版」、Autopsy 4.23.0の利用者ガイド、VirtualBox 7.2の利用者ガイド、KAPEの文書、bstringsのREADME)と、WindowsのコマンドについてはMicrosoft Learnと照らし合わせました。当サイトの調査環境から直接開けていないもの:Magnet ForensicsとExterro自身のページ、MITRE ATT&CK、RFC Editor、NISTです。Magnet RESPONSE、Magnet DumpIt、Encrypted Disk Detector、FTK Imagerについては、提供元のページや利用者ガイドを引用した検索結果に頼ったため、メニューや選択肢の名前がお使いのバージョンと異なる場合があります。メモリ取得ツールのドライバーによるシステムイベント7045は、よくある例であって必ず記録されるとは限りません。実際に何が残るかはラボで確かめてください。手順どおりに動かない場合は、各ツールの文書が優先します。お知らせいただければ、本稿を修正します。
