.. | ||
ext.md | ||
file-data-carving-recovery-tools.md | ||
file-data-carving-tools.md | ||
ntfs.md | ||
README.md |
パーティション/ファイルシステム/カービング
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦で@hacktricks_liveをフォローする
- HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
パーティション
ハードドライブまたはSSDディスクには、物理的にデータを分離するための異なるパーティションが含まれている可能性があります。
ディスクの最小単位はセクタです(通常、512Bで構成されています)。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。
MBR(Master Boot Record)
これは、ブートコードの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) | 第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
コマンドを使用できます)
その後、次のコードを使用します。
#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(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フォーマットされたディスク上のデータの整合性を保護します。
ハイブリッドMBR(LBA 0 + GPT)
BIOSサービスを介してGPTベースのブートをサポートするオペレーティングシステムでは、最初のセクタはブートローダーコードの最初のステージを格納するために引き続き使用される場合がありますが、GPTパーティションを認識するように変更されます。 MBR内のブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。
パーティションテーブルヘッダー(LBA 1)
パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズを定義します(テーブル内のオフセット80と84)。
パーティションエントリ(LBA 2–33)
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を使用して最初のセクタを検査できます。次の画像では、セクタ0にMBRが検出され、解釈されています:
もし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やMetadiverなどのツールを使用できます。
削除されたファイルの回復
ログされた削除されたファイル
以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録(MFTなど)を調査し、削除されたファイルを見つけることが可能です。
また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルを回復したり可能な限り多くの情報を取得するためにそれらを使用することができます。
{% content-ref url="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 {% endcontent-ref %}
データストリームカービング
データストリームカービングは、ファイルカービングと似ていますが、完全なファイルを探すのではなく、興味深い情報の断片を探します。
たとえば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
安全な削除
明らかに、ファイルを**「安全に」削除し、それに関するログの一部を削除する方法があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する$MFTおよび$LOGFILE**からのログを削除し、ボリュームシャドウコピーを削除することが可能です。
この操作を実行しても、ファイルの存在がまだログされている他の部分があるかもしれないことに注意してください。これは、フォレンジック専門家の仕事の一部です。
参考文献
- https://en.wikipedia.org/wiki/GUID_Partition_Table
- http://ntfs.com/ntfs-permissions.htm
- 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
- iHackLabs Certified Digital Forensics Windows