padlocks chained to a fence
セキュリティ運用

暗号化された仮想ディスクからデータを取り出す 6 つの方法

インシデント対応者向けの、暗号化された VM からデータを修復するためのさまざまな技術

** 本記事は、Extracting data from encrypted virtual disks: six methods の翻訳です。最新の情報は英語記事をご覧ください。**

本記事では、暗号化された仮想ディスクからデータを抽出するためのさまざまなテクニックと、すぐに利用できるツールについて説明します。仮想ディスク全体が暗号化されたインシデントに対応する際、調査チームはこれらのツールや技術を用いることで暗号化されたシステムからデータを取り出せるかもしれません。

暗号化された仮想ディスクからデータの抽出を試みることで、標準的な方法では修復不可能なお客様データの修復、侵害された仮想インフラの再構築支援、インシデント調査のタイムライン充実など、複数の好ましい結果が得られる可能性があります。これまでのところ、LockBit、Faust / Phobos、Rhysida、および Akira ランサムウェアグループが関与する DFIR (デジタルフォレンジックインシデント対応) 調査において、本記事でご紹介するテクニックの使用に成功しています。

ただし、成功は保証できないことは、予め申し上げておきますし、記事の最後でも再度申し上げます。既存のデータ抽出手法の中で、暗号化された VM から完全なデータを確実に抽出できるものはありません。また、これらの方法は、調査にとって価値のあるフォレンジックデータ (イベントログ、レジストリフォレンジックなど) の抽出では高い成功率を示していますが、データベースなど、実際のシステムのリカバリプロセスの一部として使用可能なデータの抽出成功率はかなり低いことも強調しておきます。

リカバリを試みる際は、オリジナルではなく「ワーキングコピー」で行うことを強く推奨します。これは、リカバリの試みがデバイスにさらなるダメージを与えないようにするためです。

次の項目では、どのような状況で、どの程度まで修復が可能かについて説明します。その後、どの方法を試すかを選択する際に考慮すべきいくつかの項目を挙げます。最後に、それぞれの方法に焦点を当てながら、前提条件 (その方法を試すのに必須のツール) や、その他の注意点を挙げていきます。最も手間のかかる方法については、そのプロセスの詳細を説明します。本記事では、「仮想ディスク」、「VM」、「ディスクイメージ」はすべて同じものを指しており、VHD、VHDX、VMDK、RAW など、あらゆるディスクのイメージを指すことがあります。今回ご紹介する 6 つのテクニックはすべて Windows を想定しています。いくつかのテクニックは Linux でも可能であるため、それぞれの場合で言及しています。

ファイル/ディスクの暗号化とは

ランサムウェアが仮想ディスク (または任意のファイル) を暗号化すると、データは基本的にランダム化され、ファイルは OS からは読み取れなくなります。ファイルを復号 (元の読み取り可能な状態に戻す) する最も有名な方法は、復号ツール (暗号化のプロセスを逆行させ、暗号化されたファイルを再び読み取り可能にするソフトウェアツールまたはプログラム) を使用することです。

ランサムウェア攻撃では、攻撃者が復号ツールを作成し、コントロールします。このような場合、身代金が支払われるか、復号ツールが一般公開されない限り、他のデータ修復方法を検討する必要があります。

ランサムウェアのバイナリは徹底的な暗号化よりもスピードを優先します。ファイル全体を暗号化するのには時間がかかりすぎるため、攻撃者は最大のダメージを迅速に与えることに焦点を当て、攻撃が妨害される機会を最小化しています。その結果、ドキュメントのような小さなファイルは通常すべて暗号化されますが、仮想ディスクのような大きなファイルは、かなりの部分が暗号化されないまま残されることがあります。そのため、調査者はさまざまなテクニックを用いて、これらの仮想ディスクから情報を抽出することができます。

使用する方法の検討

暗号化された Windows VM からデータを取り出すには、複数の方法が考えられます。(これらのテクニックのいくつかは Linux マシンにおけるデータ修復の試みにも適用できるため、個別に言及します。)本記事では 6 つの方法を取り上げます。

  • 方法 1: ドライブをマウントする
  • 方法 2: RecuperaBit
  • 方法 3: bulk_extractor
  • 方法 4: EVTXparser
  • 方法 5: Scalpel、Foremost などのファイル復元ツール
  • 方法 6: NTFS パーティションの手動切り出し

最初に試すべき方法はどれでしょうか。適切な方法を決定する際には、以下の 6 件の事項を検討するのが良いでしょう。

ファイルサイズ
これまでの経験から、仮想ディスクのサイズが大きければ大きいほど、修復に成功する可能性が高いことが分かっています。これは主に、Windows マシンでは大半の VM に複数のパーティション、すなわちリカバリ、ブート、および C: (ユーザーから確認できる) パーティションがあるためです。(本記事では、ドライブが通常通り C: にマッピングされていると仮定します。)最初の 2 つのパーティションには、インシデント調査にはほとんど役に立たないデータが格納されていますが、攻撃者は一般的に VM の最初の数バイトを暗号化するため、暗号化されるのは主にこれらのパーティションだけです。

そのため、お客様のデータやフォレンジックデータが保存されている C: パーティションはしばしばそのまま残されています。この事実は、調査員が侵害された仮想デバイスを再構築し、インシデント調査を充実させるのに役立ちます。

逆に、VM ファイルが比較的小さい場合は、データ修復の可能性は低くなります。しかしそれでも、イベントログやレジストリハイブを抽出できる可能性はあります。

ツール
インシデント対応における他の問題と同様に、同じ問題であっても取り組む方法やツールは複数存在します。暗号化の種類によっては、他のツールよりも優れた性能を発揮するものもあります。最初の試みが失敗したり、部分的にしか機能しなかったりした場合、必要な結果を得るために複数のツールを試してみる価値はあります。

また、ツールの更新やサポートが終了することもあるため、本記事に記載されていないツールを探すことも検討してください。ソフォスが使用しているのはサードパーティのツールや、(Windows Subsystem for Linux [WSL] など) Windows や Linux に予め搭載されているツールです。本記事を通して、そして日常的な調査において、特にツールがファイルの暗号化を念頭に置いて設計されていない事例においても、これらのツールの作成者がサイバーセキュリティ強化の取り組みに多大な貢献をしていることを実感しています。

時間
タスクを完了するために費やせる時間を考慮する必要があります。その際には、利用可能なハードウェア/機器が重要になります。たとえば、パーティションの手動切り分け (方法 6) は選択肢の 1 つですが、タスクの完了には長い時間を要します。さらには、多くのプロセッサパワーを必要とするため、処理中にデバイスの動作が遅くなる可能性があります。そのため、プロセスが完了するまでの間、フォレンジック検査に使用しているデバイスを他の業務に使用できなくなる可能性があります。(したがって、一刻を争うものでない場合は、手動でのパーティションの切り出しは終業時に開始して、デバイスを一晩稼働させたままにすることを推奨します。)必要な時間は方法によって異なることは考慮する必要があります。

ストレージ
利用可能なストレージ容量も検討すべき事項の 1 つです。たとえば、手動でパーティション分割を行うと、ファイルのコピーが再度作成されるため、かなりのストレージ容量が必要になります。言い換えると、1TB の仮想ハードディスクを復旧するためには、少なくとももう 1TB の容量が必要になる可能性があります。同様の現象は一部のファイル復旧ツール (手法 5) でも生じます。特にマスターファイルテーブル (MFT) が破損している場合、このツールは実際には存在しない巨大なファイルを「復旧」してしまう可能性があるためです。

ファイルの種類と優先順位
お客様から、とりわけ重要だと考えられるファイル (特に Word ドキュメントや PDF) の修復を依頼されることがあります。そのような場合にはすべての TTP が提供されているため、調査のためにそれ以上のデータが必要ない場合は、ディスク全体の完全なリカバリを実行するよりも、VM 上で自動メディアファイルリカバリツールを実行する方が便利な場合があります。

必要性
上述の事項とも関連しますが、データ復旧の必要性についても、復旧を決定する際に考慮すべきです。たとえば、企業がデバイスの再構築を計画している一方、データのバックアップがあるため、データ復旧が調査にとって重要でない場合、そのデバイスからデータを復旧することで得られるものはあるでしょうか。そもそも、その必要はあるのでしょうか。(おそらくありません。)特定の VM について、復旧することのビジネスニーズを明確に理解することで、貴重なインシデント対応リソースをより適切に割り当てられます。

データの抽出方法: 6 つのテクニック

以下では、仮想マシンからデータを抽出するための手法をいくつかご紹介しています。新しい手法やツールは常に開発されているため、このリストはすべてを網羅したものではありません。新しいテクニックやツールを研究するのは常に奨励されることであり、私たち自身もレパートリーにテクニックを加えるたびに、本記事を更新していく予定です。さまざまな選択肢がある中で、それぞれの基本を熟知し、その知識を上述の検討事項に当てはめることが、おそらく最良のアプローチです。経験や練習を積めば、その手順はより簡単になるはずです。

以下のリストは厳密な順序ではありませんが、どのような場合でもまずは方法 1 を試してみることを推奨します。理由は後述します。

方法 1: ドライブをマウントする

A callout box with the following text: Prerequisites for mounting the drive A Windows OS version that has the native Windows mounting tool Third-party mounting tools Imaging tools such as FTK Archiving tool such as 7-Zip Applicability: Windows, LinuxVM が暗号化されていると言われたからといって、本当にそうだとは限りません。(サイバー犯罪者は時々嘘をつきます。)ソフォスは、実際には攻撃者がファイルの拡張子を変更しただけのファイルを、暗号化されたものだと勘違いしていたお客様の対応をしたことがあります。さらに、攻撃者の暗号化プロセスが失敗し、実際にはファイル名が変更されただけだったという事例も見てきました。

常にこの手法を最初に試してみてください。うまくいけば、多くの時間を節約できます。効果が見られなくとも時間のロスはほとんどなく、他の修復手法の妨げには一切なりません。一方、この方法が成功し、ドライブがマウントされれば、ファイルへのアクセスやコピー&ペーストが自由にできるようになります。さらに、ただ VM をマウントしているだけなので、エンドポイント保護 (マルウェア/ウイルス対策パッケージ) が悪意のあるファイルを検出したり削除したりすることはないはずです。研究用に提出するサンプルを収集する予定がある場合に役立ちます。この方法を成功させるためのヒント:

  • GUI アーカイバー 7-Zip を試してみてください。ソフォスは、7-Zip が有効な場面を何度も見ました。
  • ドライブをマウントする
  • 7-Zip ではうまくいかない場合は、FTK などのサードパーティ製マウントツールを試してみてください

方法 2: RecuperaBit

A callout box with the following text: Prerequisites for using RecuperaBit RecupraBit downloaded from GitHub Python installed on OS of choice Available storage that is equivalent in size to the VM A ‘sandboxed’ environment / separate device / VM working environment, to avoid potential endpoint-protection detections Applicability: Windows, LinuxAndrea Lazzarotto 氏によって作成された RecuperaBit は、暗号化された VM で発見した NTFS パーティションを再構築する自動化ツールです。NTFS パーティションを発見すると、そのパーティションのフォルダ構造を調査に使用するデバイス上に再作成します。成功すれば、新しく作成されたディレクトリ/フォルダ構造から、ファイルへアクセスし、コピー&ペーストできます。

RecuperaBit は Python スクリプトであるため、Python3 をサポートしている OS であれば動作します。使い方は簡単で、暗号化された VM の再構築に必要なオプションはほんのわずかです。経験上、平均して約 20 分以内に、使用する VM を再構築できるかどうか、明確な回答を得られるはずです。その後、再構築が可能であれば、さらに約 20 分かけてパーティションが再作成されます。

ransom.exe やその他の悪意のあるファイルが存在する場合、RecuperaBit を実行するとエンドポイント保護の検出が作動する可能性が高いことを知っておく必要があります。そのため、実行ファイルを復旧し、復旧したファイルをさらに分析するために RecuperaBit を使用する場合は、エンドポイント保護を安全に無効化できる環境、つまりサンドボックスで実行する必要があります。

本記事執筆時点では、RecuperaBit は GitHub からダウンロードが可能です。ツールの GitHub ページにユーザーガイドが掲載されています。

方法 3: bulk_extractor

Callout box with following text: Prerequisites for using bulk_extractor bulk_extractor downloaded for Windows or Linux A Linux device / WSL/ working VM, if the Linux binary is to be used A ‘sandboxed’ environment / separate device / VM working environment, to avoid potential endpoint-protection detections Applicability: Windows, LinuxBulk_extractor (kali.org では bulk-extractor と呼ばれていますが、どちらも同じプログラム) は、Windows または Linux 上で動作する無料のツールです。Simson Garfinkel 氏によって作成されました。Bulk_extractor は Windows のイベントログ (.EVTX) やメディアファイルなどのシステムファイルを復旧できます。このツールは自動化されているため、調査者は起動して実行し、数時間待つだけです。

設定ファイルを変更することで、特定のファイルタイプやその他のアーティファクトに特化させられます。パーティション全体ではなく、たとえば EVTX ファイルのみを復旧する場合など、素早く集中的に、特定の結果を得たい場合に、調査をスピードアップさせるのに非常に役立ちます。

方法 2 の RecuperaBit と同様に、ransom.exe やその他の悪意のあるファイルが存在する場合、bulk_extractor を実行するとエンドポイント保護の検出が作動する可能性が高くなります。そのため、研究や分析などのために実行ファイルを復旧することを目的として bulk_extractor を使用する場合は、エンドポイント保護を安全に無効化できる環境で実行する必要があります。すなわち、サンドボックスです。

本記事執筆時点では、Linux 用の bulk_extractor は GitHub からダウンロードが可能です。ツールの GitHub ページにユーザーガイドが掲載されています。

方法 4: EVTXtract

Callout box with following text: Prerequisites for using EVTXtract EVTXtract downloaded from GitHub (click here for link) A Linux device / WSL / working VM Applicability: Windowsこのツールはデータブロック (この場合は暗号化された VM) から完全または部分的な .evtx ファイルを検索するのに特化されています。EVTX ファイルが発見された場合、このツールはそれらを元の構造 (XML) に戻します。EVTXtract は Linux のみで動作するように構築された自動化ツールです。

XML ファイルは扱いが難しいことで知られています。さらにこの場合、出力されるファイルは不正確に埋め込まれた EVTX の断片で構成されるため、少し扱いにくいものになることが予想されます。このファイルを確認しやすくするためには、データを整形する必要があります。以下でご紹介するのはデータの整形を効果的に行うためのヒントです。

  • 見やすい CSV 形式への変換を試みる
  • Grep コマンドを使用して、YYYY-DD-MM (またはその他の日付フォーマット)、イベント ID、キーワード、または特定の日付の活動を示す既知の IoCS を取得する

このツールはその名の通り、EVTX ファイルまたはフラグメントのみを復旧します。他のアーティファクトを探している場合は、別のツールを使用する必要があります。

本記事執筆時点では、EVTXtract は GitHub からダウンロードできます。ツールの GitHub ページにユーザーガイドが掲載されています。

方法 5: Scalpel、Foremost、あるいはその他のファイル復旧ツール

Callout box with following text: Prerequisites for using Scalpel or Foremost Copy of Scalpel or Foremost (download links in article) A Linux device / WSL / working VM A sandboxed environment / separate device / VM working environment to avoid potential endpoint-protection detections Applicability: Windows, LinuxEVTX 復旧ツールの次は、他の種類のファイルを復旧するツールにも目を向けましょう。Scalpel と Foremost は現在利用可能な数多くの無料ファイル復旧ツールのうちの 2 つです。どちらも古いツールですが、ソフォスの IR チームの調査において、この 2 つのツールは優れた結果を出しています。

2005 年にリリースされた Scalpel のオリジナルバージョンは Foremost をベースにしており、この 2 つのパーティション切り出し/インデックス作成アプリケーションのアプローチは類似しています。どちらも主にメディアと文書ファイルを復旧するため、文書や PDF などを探している場合に便利です。どちらのツールも、特定のファイルタイプに焦点を当てるように設定ファイルを変更できます。また、(時間はかかりますが) より完全な復旧のために自動で動作させられます。

前述の通り、これらのプログラムはいずれもシステムファイルを復旧しません。システムファイルの復旧には別のツールが必要になります。さらに、悪意のあるファイル (フィッシング攻撃に用いられる悪意のある PDF など) が存在する場合、復旧されたファイルがエンドポイント保護の検出をトリガーする可能性があります。このため、調査のためにこれらのファイルを保存する必要がある場合は、エンドポイント保護を無効にできるサンドボックス環境でこれらのツールを実行することを推奨します。

上述の通り、これらのプログラムはどちらもやや古いため、これらのツールで新しい形式のファイルは復旧できない可能性があります。他のツールも存在するため、読者の皆様にはそれらについても調査されることをお勧めします。一方で、簡単に入手できるツールとして、この 2 つはどちらも確かな性能を持っています。

Foremost は GitHub からダウンロードできます。ツールの GitHub ページにユーザーガイドが掲載されています。Foremost はもともと、米国空軍特別捜査局および情報システムセキュリティ研究センターによって開発されたものです。GitHub から入手できるバージョンは活発にメンテナンスされていないようです。

同様に、本記事執筆時点では、Scalpel は GitHub からダウンロードできます。ツールの GitHub ページにユーザーガイドが掲載されています。GitHub のページにも記載されている通り、このツールも活発にはメンテナンスされていないようです。

方法 6: NTFS パーティションの手動切り出し

Callout box with following text: Prerequisites for manual carving of the NTFS partition A Linux device / WSL / working VM A hex editor such as HxD or xxd A version of the Windows OS that has the native window mounting tool Third-party mounting tools Imaging tools such as FTK Archiving tool such as 7-Zip Available storage that is equivalent in size to the VM Applicability: Windows上記のツールやテクニックとは対照的に、手動でのパーティション分割には十分な準備と利用可能なオプションについてのより詳細な理解が必要です。ここでは、どのように作業計画を立てるべきかについてのヒントをいくつかご紹介し、この作業に用いる強力な Linux ユーティリティである dd について具体的に説明します。

(簡単な背景の説明: dd はもともと「データ定義 (Data Definition)」の略であり、まさにコンピューティングの「長老」です。2024 年 6 月に誕生 50 周年を迎えます。新しく dd を使い始める方は、このユーティリティでタイプミスをすると壊滅的な打撃を受ける可能性があることに注意が必要です。dd は「ディスク破壊者」という別名を持つユーティリティであり、「全身が刃だけで柄のないスイスアーミーナイフのようだ」とも評されています。調査を進める前に、dd の基本に慣れておくことをお勧めします。また、dd コマンドをテキストエディタに入力し、誤りがないことを確認してから、コマンドラインでコマンドをコピー&ペーストすることをお勧めします。)

手動でのパーティション分割を適切に行うには、ユーティリティを実行する前に dd で 3 つの値 (bs: セクタあたりのバイト数、skip: 再作成する NTFS セクタのオフセット値、count: セクタのサイズ) を設定する必要があります。これらの算出は必ずしも難しいものではありませんが、時間がかかる上に、必須です。本項目で、3 つすべての計算手順を説明します。

加えて、処理自体にかなり時間がかかり、正しく完了するまでに何時間もかかる可能性があります。(前述の通り、一般的には終業時にパーティション分割処理を開始し、デバイスを一晩稼動させたままにすることを推奨します。)とはいえ、練習を積めば数分のうちにそれぞれの値を算出できるようになります。また、パーティションを分割しようとする前に、分割するパーティションのサイズを計算しておけば、時間と処理能力を無駄にする可能性を減らせます。値の計算に慣れておくことを推奨します。

最後に、このプロセスは容量を消費することに注意してください。VM をコピーしているため、VM と同じだけの容量を消費することになります。たとえば、100GB の VM ファイルを扱う場合、必要なファイルを抽出するためにさらに 100GB の容量が必要になります。

このプロセスには 4 つの段階があります。

  1. 暗号化された VM を分析し、利用可能な NTFS パーティションを探す
  2. 最大の NTFS パーティションを切り出し、新しいファイルにする
  3. 新しく作成したファイルが十全であれば、Windows にマウントする
  4. 必要なアーティファクトを抽出する

コピーを行うユーティリティである dd は Linux に組み込まれています。コマンドは以下の通りです。

sudo dd if= *** of=***.img bs=*** skip=*** count=*** status=progress

繰り返しますが、dd はタイプミスをまったく許容しません。実行には注意が必要です。コマンドおよびその値は以下のように理解できます。

sudo = ユーザーはこのツールに対して最高権限が必要

dd = ユーティリティそのもの

if = 「入力ファイル (input file)」の略で、暗号化された VM のパスとファイル名

of = 「出力ファイル (output file)」の略で、暗号化された VM のパスとファイル名サジェストされるファイル拡張子は newfilename.img

です。

bs = 切り出すパーティションのセクタ当たりのバイト数。この値はバイトで入力してください

skip = 切り出す NTFS パーティションの、ディスク/VM ファイルの先頭からのオフセット値 (セクタ)

count = 切り出す NTFS パーティションのサイズ (セクタ)

status = 何バイト分が複製されたかについての進捗バーを表示するための値 (入力は任意)

上述したように、このコマンドを実行するには、bs、skip、count の 3 つの値を計算して指定する必要があります。これらの値を計算する最も簡単な方法は、Maël Hörz の HxD (Windows フリーウェア) のような GUI 16 進数エディタを使うことですが、xxd のようなコマンドラインツールでも構いません。以下のスクリーンショットは、HxD を使用した手順を示しています。

基本となる値の収集

HxD を起動し、暗号化された VM ファイルをロードします。左端にある [Offset] の列をクリックし、10 進数 (base10) で表示されるように変更します。図 1 に示すように、HxD ではこの設定変更は (d) で表されます。

Screen capture of offset values displayed as base10 numbers

図 1: 10 進数で表示されたオフセット値

次に、図 2 に示すように、[View] のドロップダウンメニューから [Data inspector] を開きます。

Screen capture showing an HxD menu

図 2: HxD 上の [View] ドロップダウンメニューで [Data inspector] を選択

次に、NTFS パーティションの候補を探します。左上のバイトをハイライトし、検索機能を使って次の 16 進数文字列を検索します。10 進数やテキスト文字列 (検索オプションがある場合に限ります) ではなく、16 進数です。

EB 52 90 4E 54 46 53 20 20 20 20

図 3 に示すように、検索ボックスでどのタブを開いているかに注意してください。

Screen capture showing a search box with the hex string given above

図 3: NTFS セクターの開始を示す 16 進数文字列を検索

上記の 16 進数文字列は NTFS パーティションの「シグネチャバイト」なので、この文字列を検索すると、切り分けられる可能性のある NTFS パーティションをすべて発見できます。図 4 に示すような一覧が表示されるでしょう。

Screen capture showing nine potential NTFS partitions that the search found

図 4: NTFS パーティションを救出できる可能性を与える、実りある検索

これらの結果のいずれかを選択すると、図 5 に示すように、16 進数ビューアウィンドウに NTFS パーティションのヘッダーが表示されます。

Screen capture showing the NTFS header, which will be discussed below

図 5: 選択した NTFS パーティションの上に表示されるヘッダー

ヘッダーには、dd コマンドで必要な bs、skip、count の値に必要な基本情報が含まれています。次に、これら 3 つの値の計算方法を説明します。これらは順番に実行します。

bs (セクタあたりのバイト数) の計算方法

選択した NTFS パーティションの先頭から作業を開始します。図 6 に示すように、オフセット 11 と 12 のバイトをハイライトします。データインスペクタに Int16 と表示されている値が必要な値です。この例では、bs 値は 512 です。(この値はほぼ常に 512 です。あくまで「ほぼ」ですが。)

Screen capture showing the Int16 value highlighted in Data Inspector

図 6: Bs 値がハイライトされたバイト。データインスペクタでの値は確かに 512 です。

skip 値の計算方法

bs 値がわかったので、ヘッダーオフセット値を bs 値で割って skip 値を算出します。この計算により、NTFS パーティションの開始セクタ値が得られます。

たとえば、図 7 でハイライトされている NTFS パーティションのヘッダーオフセットの 10 進数での値は 00576716800 です。(ご覧の通り、以下のスクリーンショットは、上に示したスクリーンショットのパーティションと同じパーティションのものではありません。しかし、上述の通り、この NTFS パーティションの bs 値 (オフセット 11 と 12 の値) も同じく 512 であることがわかります。)

Screen capture highlighting the base10 offset value to be divided by the bs value to get the skip value

図 7: 緑の四角で示されたヘッダーオフセット値

skip 値を計算するにはヘッダーオフセット値を bs 値 (512) で割ります。計算式としては、以下の通りです。

576716800 / 512 = 1126400

この場合、1126400 が skip 値です。

count 値の計算方法

NTFS ヘッダーの先頭から数えて 41 バイト目から始まる 8 バイトを探し、ハイライトします。この値を見つけるには、以下の画面でヘッダーの最初の (EB) バイトから 2 行下り、08 列に移動し、図 8 に示す通り、次の 8 バイトをハイライトします。

Screen capture showing the Int64 count value

図 8: count 値の確認 (ハイライト部)

図で示されている通り、次の 8 バイトを 15 列目まで (つまり 41~48 バイトを) ハイライトします。データインタープリタの INT64 で表示される値が count 値です。上の図では 1995745279 です。この値はセクタで表されていますが、上記のコマンドに必要なのもセクタ単位なので、変換は必要ありません。値をメモしておくだけです。

どのパーティションを選ぶべきか

上述の通り 、切り出すパーティションは、利用可能な最大のものを選ぶべきです。パーティションの大きさを表すのは count 値です。パーティションのサイズが数セクタしかない場合、切り出す価値はおそらくありません。C: ドライブの切り出しの成功率を上げるには、最初に確認する NTFS パーティションの一覧で最大のパーティションを見つけ、そのパーティションを切り出すのが最良の方法でしょう。

最大のパーティションは、VM ファイル全体とほぼ同じサイズでなければなりません。ただし、VM ファイルのサイズはバイトで表示されるのに対し、NTFS のサイズは総セクタ数で表示されます。両者を比較するには、パーティションのセクタサイズをバイトに変換して比較します。

パーティションのセクタサイズをバイトに変換するには、(データインタプリタに表示される) セクタサイズに bs 値を掛けます。つまり、上記の例で確認した数字を使用すると、以下のようになります。

1995745279 x 512 = 1021821582848 バイト (951.64 GB)

いざ実行

これで、dd ユーティリティを使うために必要な 3 つの値が揃いました。準備はすべてテキストエディタで行うようにという上述のアドバイスに従っている場合は、必要な値を dd コマンドに入力し、コマンドを dd 自体に貼り付け、Enter を押すことで、dd が選択した NTFS パーティションの切り出しを開始します。

完了したら、切り分けた新しいファイルをマウントします。この手順で、必要なファイルを復旧できるはずです。ドライブがマウントされない場合は、7-Zip (または他のアーカイブツール)、他のマウントツール、または FTK を試してみてください。

図 9 では、NTFS ヘッダーに注釈が付けられており、どこで値が確認できるかが要約されています。

Screen capture showing all the parts of the NTFS header we just covered

図 9: NTFS ヘッダーのから確認できるそれぞれの値 (count 値は「Total Sectors in file system (ファイルシステム内の総セクタ数)」と表示されています)

結論

繰り返しになりますが、成功は保証できません。 攻撃によって暗号化されたデータを取り戻す最善の方法は、影響を受けていないクリーンなバックアップからコピーを取得することです。しかし、本記事で紹介した方法は、他に選択肢がない状況において調査チームがデータを取り戻すのに役立つかもしれません。

データを諦めるタイミングはいつでしょうか。悲しいことに、データは常に完全に復旧できるとは限りません。部分的にしか復旧できなかったり、あるいはまったく復旧できないこともあります。結果はまちまちで、理由がはっきりしないこともあります。いつこのプロセスから手を引くかは、関係者と相談しながら、当事者自身が決定することです。

謝辞

執筆チームは、本記事で取り上げたソフトウェアの製作者に感謝します。編集者は、「柄のないスイスアーミーナイフ」 という表現を用いて dd の説明をしてくれた Jonathan Espenschied 氏に謝意を表します。本記事の情報の一部は、2024 年 5 月に CyberUK の一部として発表されたものです。

コメントを残す

Your email address will not be published. Required fields are marked *