hacktricks/forensics/basic-forensic-methodology/partitions-file-systems-carving
2024-09-04 13:37:26 +00:00
..
ext.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-02-05 02:58:30 +00:00
file-data-carving-recovery-tools.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:37:26 +00:00
file-data-carving-tools.md Translated ['1911-pentesting-fox.md', '6881-udp-pentesting-bittorrent.md 2024-07-18 18:32:09 +00:00
ntfs.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-02-05 02:58:30 +00:00
README.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:18:08 +00:00

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

{% hint style="success" %} AWSハッキングを学び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}

パーティション

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

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

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

MBRのバイト440から443の間には、Windowsディスク署名が見つかりますWindowsが使用されている場合。ハードディスクの論理ドライブレターはWindowsディスク署名に依存します。この署名を変更すると、Windowsがブートできなくなる可能性がありますツールActive Disk Editor

フォーマット

オフセット 長さ アイテム
0 (0x00) 446(0x1BE) ブートコード
446 (0x1BE) 16 (0x10) 最初のパーティション
462 (0x1CE) 16 (0x10) 2番目のパーティション
478 (0x1DE) 16 (0x10) 3番目のパーティション
494 (0x1EE) 16 (0x10) 4番目のパーティション
510 (0x1FE) 2 (0x2) 署名 0x55 0xAA

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

オフセット 長さ アイテム
0 (0x00) 1 (0x01) アクティブフラグ (0x80 = ブート可能)
1 (0x01) 1 (0x01) 開始ヘッド
2 (0x02) 1 (0x01) 開始セクター (ビット0-5); シリンダの上位ビット (6-7)
3 (0x03) 1 (0x01) 開始シリンダの最下位8ビット
4 (0x04) 1 (0x01) パーティションタイプコード (0x83 = Linux)
5 (0x05) 1 (0x01) 終了ヘッド
6 (0x06) 1 (0x01) 終了セクター (ビット0-5); シリンダの上位ビット (6-7)
7 (0x07) 1 (0x01) 終了シリンダの最下位8ビット
8 (0x08) 4 (0x04) パーティション前のセクター (リトルエンディアン)
12 (0x0C) 4 (0x04) パーティション内のセクター

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

次に、次のコードを使用します。

#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、というように続きます。

GPT (GUIDパーティションテーブル)

GUIDパーティションテーブル、通称GPTは、MBRマスターブートレコードに比べてその強化された機能のために好まれています。GPTは、パーティションのためのグローバルにユニークな識別子を持つことで、いくつかの点で際立っています:

  • 位置とサイズ: GPTとMBRは両方ともセクター0から始まります。しかし、GPTは64ビットで動作し、MBRの32ビットとは対照的です。
  • パーティション制限: GPTはWindowsシステムで最大128パーティションをサポートし、最大9.4ZBのデータを収容できます。
  • パーティション名: 最大36のUnicode文字でパーティションに名前を付けることができます。

データの耐障害性と回復:

  • 冗長性: MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。ディスク全体にこのデータを複製し、データの整合性と耐障害性を向上させます。
  • 循環冗長検査 (CRC): GPTはデータの整合性を確保するためにCRCを使用します。データの破損を積極的に監視し、検出された場合、GPTは別のディスク位置から破損したデータを回復しようとします。

保護MBR (LBA0):

  • GPTは保護MBRを通じて後方互換性を維持します。この機能はレガシーMBRスペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐように設計されており、したがってGPTフォーマットのディスク上のデータの整合性を保護します。

https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png

ハイブリッドMBR (LBA 0 + GPT)

ウィキペディアから

EFIではなく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バイト バージョン 1.0 (00h 00h 01h 00h) UEFI 2.8
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セカンダリパーティションテーブルの最初のLBA 1
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ツールActive Disk Editorを使用して最初のセクターを検査できます。 次の画像では、セクター0MBRが検出され、解釈されました:

それがMBRの代わりにGPTテーブルであった場合、セクター1に_EFI PART_というシグネチャが表示されるはずです前の画像では空です

ファイルシステム

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

FAT (ファイルアロケーションテーブル)ファイルシステムは、そのコアコンポーネントであるファイルアロケーションテーブルをボリュームの開始位置に配置するように設計されています。このシステムは、2つのコピーのテーブルを維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダーは固定位置に存在する必要があり、これはシステムの起動プロセスにとって重要です。

ファイルシステムの基本的なストレージ単位はクラスター、通常は512Bであり、複数のセクターで構成されています。FATはバージョンを通じて進化してきました

  • FAT12は、12ビットのクラスターアドレスをサポートし、最大4078クラスターUNIXでは4084を処理します。
  • FAT16は、16ビットアドレスに拡張され、最大65,517クラスターを収容します。
  • FAT32は、32ビットアドレスでさらに進化し、ボリュームごとに驚異的な268,435,456クラスターを許可します。

FATバージョン全体にわたる重要な制限は、4GBの最大ファイルサイズであり、これはファイルサイズストレージに使用される32ビットフィールドによって課せられています。

特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには以下が含まれます

  • ファイル/フォルダー名最大8文字
  • 属性
  • 作成、変更、最終アクセス日
  • FATテーブルアドレス(ファイルの開始クラスターを示す)
  • ファイルサイズ

EXT

Ext2は、ジャーナリングしないパーティション(あまり変更されないパーティション)に最も一般的なファイルシステムです。Ext3/4ジャーナリングを行い、通常は残りのパーティションに使用されます。

メタデータ

一部のファイルにはメタデータが含まれています。この情報はファイルの内容に関するものであり、ファイルタイプによってはアナリストにとって興味深い情報を持っている場合があります。例えば、以下のような情報が含まれることがあります:

  • タイトル
  • 使用された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 %}

データストリームCarving

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

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

セキュア削除

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

参考文献

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}