hacktricks/forensics/basic-forensic-methodology/partitions-file-systems-carving
2023-07-07 23:42:27 +00:00
..
ext.md Translated to Japanese 2023-07-07 23:42:27 +00:00
file-data-carving-recovery-tools.md Translated to Japanese 2023-07-07 23:42:27 +00:00
file-data-carving-tools.md Translated to Japanese 2023-07-07 23:42:27 +00:00
ntfs.md Translated to Japanese 2023-07-07 23:42:27 +00:00
README.md Translated to Japanese 2023-07-07 23:42:27 +00:00

パーティション/ファイルシステム/カービング

パーティション/ファイルシステム/カービング

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

パーティション

ハードドライブまたはSSDディスクには、データを物理的に分離するための異なるパーティションが含まれる場合があります。
ディスクの最小単位はセクタです通常は512Bで構成されています。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。

MBRマスターブートレコード

これは、ブートコードの446Bの後のディスクの最初のセクタに割り当てられます。このセクタは、PCにパーティションをどこからマウントするかを示すために必要です。
最大で4つのパーティション(最大で1つだけがアクティブ/ブート可能)を許可します。ただし、より多くのパーティションが必要な場合は、拡張パーティションを使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名0x55AAです。1つのパーティションのみがアクティブにマークされることができます。
MBRは最大2.2TBを許可します。

MBRのバイト440から443には、WindowsディスクシグネチャWindowsを使用している場合が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。このシグネチャを変更すると、Windowsの起動が阻止される可能性がありますツールActive Disk Editor

フォーマット

オフセット 長さ 項目
00x00 4460x1BE ブートコード
4460x1BE 160x10 最初のパーティション
4620x1CE 160x10 2番目のパーティション
4780x1DE 160x10 3番目のパーティション
4940x1EE 160x10 4番目のパーティション
5100x1FE 20x2 シグネチャ0x55 0xAA

パーティションレコードのフォーマット

オフセット 長さ 項目
00x00 10x01 アクティブフラグ0x80 = ブート可能)
10x01 10x01 開始ヘッド
20x02 10x01 開始セクタビット0-5シリンダの上位ビット6-7
30x03 10x01 開始シリンダの下位8ビット
40x04 10x01 パーティションタイプコード0x83 = Linux
50x05 10x01 終了ヘッド
60x06 10x01 終了セクタビット0-5シリンダの上位ビット6-7
70x07 10x01 終了シリンダの下位8ビット
80x08 40x04 パーティションの前にあるセクタ(リトルエンディアン)
120x0C 40x04 パーティション内のセクタ数

LinuxでMBRをマウントするには、まず開始オフセットを取得する必要がありますfdiskpコマンドを使用できます)

![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1

#Mount MBR in Linux
mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/

LBA論理ブロックアドレッシング

論理ブロックアドレッシングLBAは、コンピュータのストレージデバイス一般的にはハードディスクドライブなどの二次記憶装置に格納されたデータのブロックの場所を指定するために使用される一般的なスキームです。LBAは特にシンプルな線形アドレッシングスキームであり、ブロックは整数のインデックスによって特定されます。最初のブロックはLBA 0、2番目のブロックはLBA 1、以降のブロックは順に増加します。

GPTGUIDパーティションテーブル

GPTGUIDパーティションテーブルとは、ドライブ上の各パーティションにグローバルに一意の識別子があるため、この名前が付けられています。

MBRと同様に、GPTもセクター0から始まります。MBRは32ビットを占有しているのに対し、GPT64ビットを使用します。
GPTでは、Windowsでは最大128のパーティションを作成でき、最大9.4ZBまでサポートされています。
また、パーティションには36文字のUnicode名を付けることができます。

MBRディスクでは、パーティショニングとブートデータは1か所に格納されます。このデータが上書きされたり破損したりすると、問題が発生します。一方、GPTはディスク全体に複数のコピーを保存するため、より堅牢で、データが破損した場合でも回復することができます。

GPTはまた、データが破損しているかどうかを確認するために巡回冗長検査CRC値を保存します。データが破損している場合、GPTは問題に気付き、ディスク上の別の場所から破損したデータを回復しようとします

保護MBRLBA0

互換性のために、GPT仕様では従来のMBRの領域が予約されていますが、これはMBRベースのディスクユーティリティがGPTディスクを誤認識して上書きすることを防ぐ方法で使用されています。これは保護MBRと呼ばれます。

ハイブリッドMBRLBA 0 + GPT

BIOSを介してGPTベースのブートをサポートするオペレーティングシステムでは、最初のセクターはブートローダーコードの最初のステージを格納するために使用される場合がありますが、変更されてGPTパーティションを認識するようになります。MBRのブートローダーは、セクターサイズが512バイトであるとは想定しないでください。

パーティションテーブルヘッダーLBA 1

パーティションテーブルヘッダーは、ディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義しますテーブル内のオフセット80と84

オフセット 長さ 内容
0 (0x00) 8バイト シグネチャ("EFI PART"、45h 46h 49h 20h 50h 41h 52h 54hまたは0x5452415020494645ULL 、リトルエンディアンマシンでは)
8 (0x08) 4バイト UEFI 2.8用のリビジョン1.000h 00h 01h 00h
12 (0x0C) 4バイト ヘッダーサイズリトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00hまたは92バイト
16 (0x10) 4バイト ヘッダーのCRC32オフセット+0からヘッダーサイズまでのリトルエンディアンでの値。計算中にこのフィールドはゼロになります。
20 (0x14) 4バイト 予約済み;ゼロである必要があります
24 (0x18) 8バイト 現在のLBAこのヘッダーコピーの場所
32 (0x20) 8バイト バックアップLBA他のヘッダーコピーの場所
40 (0x28) 8バイト パーティションの最初の使用可能なLBAプライマリパーティションテーブルの最後のLBA + 1
48 (0x30) 8バイト 最後の使用可能なLBAセカンダリパーティションテーブルの最初のLBA1
56 (0x38) 16バイト ディスクのGUIDミックスエンディアン
72 (0x48) 8バイト パーティションエントリの配列の開始LBAプライマリコピーでは常に2
80 (0x50) 4バイト 配列内のパーティションエントリの数
84 (0x54) 4バイト 単一のパーティションエントリのサイズ通常は80hまたは128
88 (0x58) 4バイト パーティションエントリ配列のCRC32リトルエンディアン
92 (0x5C) * ブロックの残りの部分にはゼロでなければなりませんセクターサイズが512バイトの場合は420バイトですが、より大きなセクターサイズの場合はそれ以上になる場合があります

パーティションエントリLBA 233

GUIDパーティションエントリ形式
オフセット 長さ 内容
0 (0x00) 16バイト パーティションタイプGUID(ミックスエンディアン)
16 (0x10) 16バイト ユニークなパーティションGUIDミックスエンディアン
32 (0x20) 8バイト 最初のLBAリトルエンディアン
40 (0x28) 8バイト 最後のLBA包括的、通常は奇数
48 (0x30) 8バイト 属性フラグビット60は読み取り専用を示す
56 (0x38) 72バイト パーティション名36 UTF-16LEコードユニット

パーティションタイプ

詳細なパーティションタイプはhttps://en.wikipedia.org/wiki/GUID_Partition_Tableを参照してください。

検査

ArsenalImageMounterを使用してフォレンジックイメージ

ファイルシステム

Windowsのファイルシステム一覧

  • FAT12/16: MSDOS, WIN95/98/NT/200
  • FAT32: 95/2000/XP/2003/VISTA/7/8/10
  • ExFAT: 2008/2012/2016/VISTA/7/8/10
  • NTFS: XP/2003/2008/2012/VISTA/7/8/10
  • ReFS: 2012/2016

FAT

FATFile Allocation Tableファイルシステムは、その組織方法であるファイル割り当てテーブルにちなんで名付けられています。このテーブルはボリュームの先頭に存在し、ボリュームを保護するために2つのコピーが保持されます。さらに、ファイル割り当てテーブルとルートフォルダは、システムの起動に必要なファイルを正しく見つけるために固定位置に保存される必要があります。

このファイルシステムで使用される最小のスペース単位は、通常512Bのクラスタです(セクタの数で構成されています)。

初期のFAT12は、最大で4078クラスタを持つ12ビットのクラスタアドレスを使用し、UNIXでは最大で4084のクラスタを許可していました。より効率的なFAT16は、最大で65,517のクラスタを許可する16ビットのクラスタアドレスを使用しています。FAT32は32ビットのクラスタアドレスを使用し、ボリュームあたり最大268,435,456のクラスタを許可します。

FATが許容する最大ファイルサイズは4GB1バイトを引いたものです。これは、ファイルシステムがバイト単位でファイルサイズを格納するために32ビットのフィールドを使用しており、2^32バイト=4 GiBになるためです。これはFAT12、FAT16、FAT32の場合に起こります。

ルートディレクトリは、FAT12とFAT16の場合には特定の位置を占めますFAT32の場合は他のフォルダと同じ位置を占めます。各ファイル/フォルダエントリには、次の情報が含まれています。

  • ファイル/フォルダの名前最大8文字
  • 属性
  • 作成日時
  • 変更日時
  • 最終アクセス日時
  • ファイルの最初のクラスタが格納されているFATテーブルのアドレス
  • サイズ

FATファイルシステムを使用してファイルが「削除」されると、ディレクトリエントリはほとんど変更されませんファイル名の最初の文字が0xE5に変更されます。これにより、「削除」されたファイルの名前のほとんど、タイムスタンプ、ファイルの長さ、そして最も重要なことにディスク上の物理的な場所が保持されます。ただし、その後に作成または変更された他のファイルによって使用されるため、ファイルが占有するディスククラスタのリストはファイル割り当てテーブルから消去されます。FAT32の場合、ファイルの開始クラスタ値の上位16ビットを担当する消去されたフィールドが追加されます。

NTFS

{% content-ref url="ntfs.md" %} ntfs.md {% endcontent-ref %}

EXT

Ext2は、ブートパーティションなどの変更がほとんどないパーティションに対して最も一般的なジャーナリングされていないファイルシステムです。Ext3/4ジャーナリングされており、通常はその他のパーティションに使用されます。

{% content-ref url="ext.md" %} ext.md {% endcontent-ref %}

メタデータ

一部のファイルにはメタデータが含まれています。この情報はファイルの内容に関するものであり、ファイルの種類によっては、次のような情報が含まれる場合があります。

  • タイトル
  • 使用されたMS Officeのバージョン
  • 作成日時と最終変更日時
  • カメラのモデル
  • GPS座標
  • 画像情報

exiftoolMetadiverなどのツールを使用して、ファイルのメタデータを取得することができます。

削除されたファイルの回復

削除されたファイルのログ

以前に見たように、ファイルが「削除」された後もまだいくつかの場所に保存されています。これは通常、ファイルシステムからのファイルの削除は単に削除されたとマークされるだけで、データは触れられないためです。そのため、ファイルのレジストリMFTなどを調査し、削除されたファイルを見つけることが可能です。

また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルまたは可能な限り多くの情報を回復するためにそれらを使用することができます。

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

ファイルカービング

ファイルカービングは、データの一括からファイルを見つけようとする技術です。このようなツールが動作する方法は、ファイルタイプのヘッダとフッタに基づく方法、ファイルタイプの構造に基づく方法、およびコンテンツ自体に基づく方法の3つがあります。

この技術は、断片化されたファイルを回復するためには機能しません。ファイルが連続したセクタに保存されていない場合、この技術ではそれを見つけることができないか、少なくとも一部を見つけることができません。

ファイルカービングには、検索したいファイルタイプを指定して使用できるいくつかのツールがあります。

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

データストリームカービング

データストリームカービングは、ファイルカービングと似ていますが、完全なファイルではなく興味深い断片の情報を探します。
たとえば、ログに記録されたURLを含む完全なファイルを探すのではなく、この技術ではURLを検索します。

{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}

安全な削除

明らかに、ファイルを「安全に」削除し、それに関する一部のログを削除する方法があります。たとえば、ファイルの内容を複数回ジャンクデータで上書きし、その後、ファイルに関する**$MFT$LOGFILEのログを削除**し、ボリュームシャドウコピーを削除することができます。
この操作を実行しても、ファイルの存在がまだログに記録されている他の部分があるかもしれないことに注意してください。これは、フォレンジックの専門家の仕事の一部です。

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥