# パーティション/ファイルシステム/カービング
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@hacktricks\_live**をフォローする - **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
## パーティション ハードドライブまたは**SSDディスクには、物理的にデータを分離するための異なるパーティションが含まれて**いる可能性があります。\ ディスクの**最小**単位は**セクタ**です(通常、512Bで構成されています)。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。 ### MBR(Master Boot Record) これは、**ブートコードの446Bの後のディスクの最初のセクタ**に割り当てられます。このセクタは、PCにパーティションをどこからマウントすべきかを示すために不可欠です。\ 最大で**4つのパーティション**(最大で**1つだけがアクティブ/ブート可能**)を許可します。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションだけがアクティブにマークされます。\ MBRは**最大2.2TB**を許可します。 ![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (490).png>) MBRの**バイト440から443**には、**Windowsディスクシグネチャ**(Windowsを使用している場合)が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。この署名を変更すると、Windowsの起動が阻害される可能性があります(ツール:[**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 ![](<../../../.gitbook/assets/image (493).png>) **フォーマット** | オフセット | 長さ | アイテム | | ----------- | ---------- | ------------------- | | 0 (0x00) | 446(0x1BE) | ブートコード | | 446 (0x1BE) | 16 (0x10) | 第1パーティション | | 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をマウントするには、まず開始オフセットを取得する必要があります(`fdisk`と`p`コマンドを使用できます) ![](<../../../.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) (12).png>) その後、次のコードを使用します。 ```bash #Mount MBR in Linux mount -o ro,loop,offset= #63x512 = 32256Bytes mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ ``` **LBA(Logical block addressing)** **Logical block addressing**(**LBA**)は、コンピュータの記憶装置に保存されているデータのブロックの場所を指定するために使用される一般的なスキームです。一般的にはハードディスクドライブなどの二次記憶システムで使用されます。LBAは特にシンプルな線形アドレッシングスキームで、**ブロックは整数インデックスによって特定され**、最初のブロックはLBA 0、2番目はLBA 1、というようになります。 ### GPT(GUID Partition Table) GUID Partition Table、通称GPTは、MBR(Master Boot Record)と比較して拡張機能が優れているために好まれています。GPTの特徴は以下の通りです: * **位置とサイズ**:GPTとMBRはどちらも**セクタ0**から開始します。ただし、GPTは**64ビット**で動作し、MBRの32ビットとは異なります。 * **パーティション制限**:GPTはWindowsシステムで最大**128個のパーティション**をサポートし、**9.4ZB**のデータを収容できます。 * **パーティション名**:最大36文字のUnicode文字でパーティションに名前を付ける機能を提供します。 **データの強靱性と回復**: * **冗長性**:MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。これらのデータをディスク全体に複製することで、データの整合性と強靱性が向上します。 * **巡回冗長性チェック(CRC)**:GPTはCRCを使用してデータの整合性を確保します。データの破損を積極的に監視し、検出された場合は別のディスク位置から破損したデータを回復しようとします。 **保護MBR(LBA0)**: * GPTは保護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](<../../../.gitbook/assets/image (491).png>) **ハイブリッドMBR(LBA 0 + GPT)** [Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) BIOSサービスを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを格納するために引き続き使用される場合がありますが、**GPTパーティション**を認識するように**変更**されます。 MBR内のブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。 **パーティションテーブルヘッダー(LBA 1)** [Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズを定義します(テーブル内のオフセット80と84)。 | オフセット | 長さ | 内容 | | --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 0 (0x00) | 8 バイト | シグネチャ(リトルエンディアンマシン上の "EFI PART"、45h 46h 49h 20h 50h 41h 52h 54h または 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)) | | 8 (0x08) | 4 バイト | UEFI 2.8用のリビジョン1.0(00h 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(セカンダリパーティションテーブルの最初の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 2–33)** | GUIDパーティションエントリ形式 | | | | --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | オフセット | 長さ | 内容 | | 0 (0x00) | 16 バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | | 16 (0x10) | 16 バイト | ユニークなパーティションGUID(ミックスエンディアン) | | 32 (0x20) | 8 バイト | 最初のLBA([リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian)) | | 40 (0x28) | 8 バイト | 最後のLBA(包括的、通常は奇数) | | 48 (0x30) | 8 バイト | 属性フラグ(例:ビット60は読み取り専用を示す) | | 56 (0x38) | 72 バイト | パーティション名(36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット) | **パーティションタイプ** ![](<../../../.gitbook/assets/image (492).png>) 詳細なパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)で確認できます。 ### 検査 [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクタを検査できます**。次の画像では、**セクタ0**に**MBR**が検出され、解釈されています: ![](<../../../.gitbook/assets/image (494).png>) もし**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(File Allocation Table)**ファイルシステムは、その中核部品であるファイル割り当てテーブルを中心に設計されており、ボリュームの先頭に配置されています。このシステムは、テーブルの**2つのコピー**を維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダは、システムの起動プロセスにとって重要な**固定された場所**にある必要があります。 ファイルシステムの基本的な記憶単位は、通常512Bの**クラスタ**で、複数のセクタから構成されています。FATは次のバージョンを経て進化してきました: * **FAT12**は、12ビットのクラスタアドレスをサポートし、最大4078クラスタ(UNIXを含めると4084クラスタ)を処理します。 * **FAT16**は、16ビットのアドレスに拡張され、最大65,517クラスタを収容します。 * **FAT32**は、32ビットのアドレスをさらに進化させ、1つのボリュームあたり最大268,435,456クラスタを可能にします。 FATバージョン全般にわたる重要な制限事項は、ファイルサイズの格納に使用される32ビットフィールドによる**4GBの最大ファイルサイズ**です。 特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには、次のものが含まれます: * **ファイル/フォルダ名**(最大8文字) * **属性** * **作成、変更、最終アクセス日時** * **FATテーブルアドレス**(ファイルの開始クラスタを示す) * **ファイルサイズ** ### EXT **Ext2**は、ブートパーティションのような**ジャーナリングされていない**パーティション(**あまり変更されないパーティション**)に最も一般的なファイルシステムです。**Ext3/4**は**ジャーナリング**されており、通常は**残りのパーティション**に使用されます。 ## **メタデータ** 一部のファイルにはメタデータが含まれています。この情報はファイルの内容についてのもので、ファイルタイプによっては興味深い情報が含まれることがあります: * タイトル * 使用されたMS Officeバージョン * 作成および最終変更日時 * カメラのモデル * GPS座標 * 画像情報 ファイルのメタデータを取得するために[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用できます。 ## **削除されたファイルの回復** ### ログされた削除されたファイル 以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録(MFTなど)を調査し、削除されたファイルを見つけることが可能です。 また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルを回復したり可能な限り多くの情報を取得するためにそれらを使用することができます。 {% content-ref url="file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} ### **ファイルカービング** **ファイルカービング**は、データの塊からファイルを見つけようとする技術です。このようなツールが機能する主な方法には、**ファイルタイプのヘッダーとフッター**に基づく方法、ファイルタイプの**構造**に基づく方法、および**コンテンツ**自体に基づく方法があります。 この技術は、**断片化されたファイルを取得することはできません**。ファイルが**連続したセクタに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。 ファイルカービングには、検索したいファイルタイプを示すために使用できるいくつかのツールがあります。 {% content-ref url="file-data-carving-recovery-tools.md" %} [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](file-data-carving-recovery-tools.md) {% endcontent-ref %} ### 安全な削除 明らかに、ファイルを**「安全に」削除し、それに関するログの一部を削除する方法**があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する**$MFT**および**$LOGFILE**からのログを削除し、**ボリュームシャドウコピー**を削除することが可能です。\ この操作を実行しても、ファイルの存在がまだログされている他の部分があるかもしれないことに注意してください。これは、フォレンジック専門家の仕事の一部です。 ## 参考文献 * [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) * [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html) * [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service) * **iHackLabs Certified Digital Forensics Windows**