Partitions/File Systems/Carving

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

パーティション

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

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

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

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

フォーマット

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

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 (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スペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐよう設計されており、それによりGPTフォーマットされたディスク上のデータの整合性を保護します。

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

Wikipediaより

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

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

Wikipediaより

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

パーティションエントリ(LBA 2–33)

パーティションタイプ

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(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座標

  • 画像情報

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

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

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

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

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

ファイルカービング

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

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

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

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

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

安全な削除

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

参考文献

Last updated