.. | ||
ext.md | ||
file-data-carving-recovery-tools.md | ||
file-data-carving-tools.md | ||
ntfs.md | ||
README.md |
パーティション/ファイルシステム/カービング
パーティション/ファイルシステム/カービング
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
パーティション
ハードドライブまたは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をマウントするには、まず開始オフセットを取得する必要があります(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) (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、以降のブロックは順に増加します。
GPT(GUIDパーティションテーブル)
GPT(GUIDパーティションテーブル)とは、ドライブ上の各パーティションにグローバルに一意の識別子があるため、この名前が付けられています。
MBRと同様に、GPTもセクター0から始まります。MBRは32ビットを占有しているのに対し、GPTは64ビットを使用します。
GPTでは、Windowsでは最大128のパーティションを作成でき、最大9.4ZBまでサポートされています。
また、パーティションには36文字のUnicode名を付けることができます。
MBRディスクでは、パーティショニングとブートデータは1か所に格納されます。このデータが上書きされたり破損したりすると、問題が発生します。一方、GPTはディスク全体に複数のコピーを保存するため、より堅牢で、データが破損した場合でも回復することができます。
GPTはまた、データが破損しているかどうかを確認するために巡回冗長検査(CRC)値を保存します。データが破損している場合、GPTは問題に気付き、ディスク上の別の場所から破損したデータを回復しようとします。
保護MBR(LBA0)
互換性のために、GPT仕様では従来のMBRの領域が予約されていますが、これはMBRベースのディスクユーティリティがGPTディスクを誤認識して上書きすることを防ぐ方法で使用されています。これは保護MBRと呼ばれます。
ハイブリッド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のファイルシステム一覧
- 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つのコピーが保持されます。さらに、ファイル割り当てテーブルとルートフォルダは、システムの起動に必要なファイルを正しく見つけるために固定位置に保存される必要があります。
このファイルシステムで使用される最小のスペース単位は、通常512Bのクラスタです(セクタの数で構成されています)。
初期のFAT12は、最大で4078のクラスタを持つ12ビットのクラスタアドレスを使用し、UNIXでは最大で4084のクラスタを許可していました。より効率的なFAT16は、最大で65,517のクラスタを許可する16ビットのクラスタアドレスを使用しています。FAT32は32ビットのクラスタアドレスを使用し、ボリュームあたり最大268,435,456のクラスタを許可します。
FATが許容する最大ファイルサイズは4GB(1バイトを引いたもの)です。これは、ファイルシステムがバイト単位でファイルサイズを格納するために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座標
- 画像情報
exiftoolやMetadiverなどのツールを使用して、ファイルのメタデータを取得することができます。
削除されたファイルの回復
削除されたファイルのログ
以前に見たように、ファイルが「削除」された後もまだいくつかの場所に保存されています。これは通常、ファイルシステムからのファイルの削除は単に削除されたとマークされるだけで、データは触れられないためです。そのため、ファイルのレジストリ(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のログを削除**し、ボリュームシャドウコピーを削除することができます。
この操作を実行しても、ファイルの存在がまだログに記録されている他の部分があるかもしれないことに注意してください。これは、フォレンジックの専門家の仕事の一部です。
参考文献
- 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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンを入手したいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう、独占的なNFTのコレクションです
- 公式のPEASS&HackTricksのグッズを手に入れましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。