Partitions/File Systems/Carving

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Розділи

Жорсткий диск або SSD-диск може містити різні розділи з метою фізичного розділення даних. Мінімальна одиниця диска - сектор (зазвичай складається з 512 байтів). Таким чином, розмір кожного розділу повинен бути кратним цьому розміру.

MBR (master Boot Record)

Він розміщений в першому секторі диска після 446 байтів завантажувального коду. Цей сектор є важливим для вказівки ПК, що і звідки потрібно монтувати розділ. Він дозволяє до 4 розділів (максимум лише 1 може бути активним/завантажувальним). Однак, якщо вам потрібно більше розділів, ви можете використовувати розширені розділи. Останній байт цього першого сектора - це підпис завантажувального запису 0x55AA. Тільки один розділ може бути позначений як активний. MBR дозволяє максимум 2,2 ТБ.

З байтів 440 по 443 MBR ви можете знайти Windows Disk Signature (якщо використовується Windows). Логічна літера диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може запобігти завантаженню Windows (інструмент: Active Disk Editor).

Формат

ЗсувДовжинаЕлемент

0 (0x00)

446(0x1BE)

Код завантаження

446 (0x1BE)

16 (0x10)

Перший розділ

462 (0x1CE)

16 (0x10)

Другий розділ

478 (0x1DE)

16 (0x10)

Третій розділ

494 (0x1EE)

16 (0x10)

Четвертий розділ

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)

Сектори у розділі

Для монтування MBR в Linux спочатку потрібно отримати початковий зсув (можна використовувати 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)

Логічна адресація блоків (LBA) - це загальна схема, яка використовується для вказівки місця розташування блоків даних, збережених на пристроях комп'ютерного сховища, зазвичай на системах вторинного сховища, таких як жорсткі диски. LBA - це особлива проста лінійна схема адресації; блоки розташовуються за допомогою цілочисельного індексу, при цьому перший блок має LBA 0, другий - LBA 1 і так далі.

GPT (GUID Partition Table)

GUID Partition Table, відома як GPT, відзначається своїми покращеними можливостями порівняно з MBR (Master Boot Record). Відзначається своїм глобально унікальним ідентифікатором для розділів, GPT виділяється кількома способами:

  • Місце та розмір: Як GPT, так і MBR починаються з сектора 0. Однак GPT працює на 64 бітах, що відрізняється від 32 біт MBR.

  • Обмеження розділів: GPT підтримує до 128 розділів на системах Windows та може вміщати до 9,4ZB даних.

  • Назви розділів: Надає можливість називати розділи до 36 символів Unicode.

Стійкість та відновлення даних:

  • Резервне копіювання: На відміну від MBR, GPT не обмежує розділення та дані завантаження в одне місце. Він реплікує ці дані по диску, підвищуючи цілісність та стійкість даних.

  • Циклічна перевірка на відповідність (CRC): GPT використовує CRC для забезпечення цілісності даних. Він активно контролює корупцію даних, і коли виявляється, GPT намагається відновити пошкоджені дані з іншого місця на диску.

Захисний MBR (LBA0):

  • GPT забезпечує сумісність з попередніми версіями через захисний MBR. Ця функція розташована в просторі спадщини MBR, але призначена для запобігання помилковому перезаписуванню даних на дисках, відформатованих у форматі GPT, захищаючи тим самим цілісність даних на дисках у форматі GPT.

Гібридний MBR (LBA 0 + GPT)

З Вікіпедії

У операційних системах, які підтримують завантаження на основі GPT через послуги BIOS замість EFI, перший сектор також може використовуватися для зберігання першого етапу коду завантажувача, але змінений для визнання розділів GPT. Завантажувач у MBR не повинен припускати розмір сектора 512 байтів.

Заголовок таблиці розділів (LBA 1)

З Вікіпедії

Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість та розмір записів розділів, які складають таблицю розділів (зміщення 80 та 84 у таблиці).

ЗміщенняДовжинаВміст

0 (0x00)

8 байтів

Підпис ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h або 0x5452415020494645ULL на машинах little-endian)

8 (0x08)

4 байти

Ревізія 1.0 (00h 00h 01h 00h) для UEFI 2.8

12 (0x0C)

4 байти

Розмір заголовка в little-endian (в байтах, зазвичай 5Ch 00h 00h 00h або 92 байти)

16 (0x10)

4 байти

CRC32 заголовка (зміщення +0 до розміру заголовка) в little-endian, з цим полем, яке обнуляється під час обчислення

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 масиву записів розділів в little-endian

92 (0x5C)

*

Зарезервовано; повинно бути нулями для решти блоку (420 байтів для розміру сектора 512 байтів; але може бути більше з більшими розмірами секторів)

Записи розділів (LBA 2–33)

Формат запису розділу GUID

Зміщення

Довжина

Вміст

0 (0x00)

16 байтів

GUID типу розділу (змішаний порядок байтів)

16 (0x10)

16 байтів

Унікальний GUID розділу (змішаний порядок байтів)

32 (0x20)

8 байтів

Перший LBA (little endian)

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. На наступному зображенні було виявлено MBR на секторі 0 та інтерпретовано:

Якщо це була таблиця GPT замість MBR, у секторі 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) розроблена навколо свого основного компонента - таблиці розподілу файлів, розташованої на початку тома. Ця система захищає дані, зберігаючи два копії таблиці, забезпечуючи цілісність даних навіть у випадку пошкодження однієї з них. Таблиця, разом з кореневою текою, повинна бути в фіксованому місці, що є важливим для процесу завантаження системи.

Основною одиницею зберігання файлової системи є кластер, зазвичай 512 байтів, який складається з кількох секторів. FAT розвивалася через версії:

  • FAT12, яка підтримує адреси кластерів 12 бітів і обробляє до 4078 кластерів (4084 з UNIX).

  • FAT16, що покращується до адрес 16 бітів, тим самим розміщуючи до 65 517 кластерів.

  • FAT32, що подальше розвивається з адресами 32 бітів, дозволяючи вражаючі 268 435 456 кластерів на том.

Значним обмеженням у всіх версіях FAT є максимальний розмір файлу 4 ГБ, який накладається 32-бітним полем, використованим для зберігання розміру файлу.

Ключові компоненти коренового каталогу, особливо для FAT12 та FAT16, включають:

  • Ім'я файлу/папки (до 8 символів)

  • Атрибути

  • Дата створення, модифікації та останнього доступу

  • Адреса таблиці FAT (вказує початковий кластер файлу)

  • Розмір файлу

EXT

Ext2 є найпоширенішою файловою системою для неведення журналу розділів (розділів, які мало змінюються), наприклад, розділ завантаження. Ext3/4 є журналюванням і зазвичай використовуються для решти розділів.

Метадані

Деякі файли містять метадані. Ця інформація стосується вмісту файлу, яка іноді може бути цікавою для аналітика, оскільки в залежності від типу файлу вона може містити інформацію, таку як:

  • Назва

  • Версія MS Office, яка використовувалася

  • Автор

  • Дати створення та останньої модифікації

  • Модель камери

  • GPS-координати

  • Інформація про зображення

Ви можете використовувати інструменти, такі як exiftool та Metadiver, щоб отримати метадані файлу.

Відновлення видалених файлів

Зареєстровані видалені файли

Як було показано раніше, існують кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Потім можна перевірити реєстри файлів (наприклад, MFT) та знайти видалені файли.

Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можна спробувати використати їх для відновлення файлу або якомога більше інформації.

pageFile/Data Carving & Recovery Tools

Вирізання файлів

Вирізання файлів - це техніка, яка намагається знайти файли в масі даних. Існують 3 основні способи роботи інструментів, як це працює: На основі заголовків та кінцівок файлів, на основі структур типів файлів та на основі вмісту самого файлу.

Зверніть увагу, що ця техніка не працює для відновлення фрагментованих файлів. Якщо файл не зберігається в сусідніх секторах, то ця техніка не зможе знайти його або принаймні його частину.

Існує кілька інструментів, які можна використовувати для вирізання файлів, вказуючи типи файлів, які ви хочете знайти

pageFile/Data Carving & Recovery Tools

Вирізання потоку даних

Вирізання потоку даних схоже на вирізання файлів, але замість пошуку повних файлів воно шукає цікаві фрагменти інформації. Наприклад, замість пошуку повного файлу, що містить зареєстровані URL-адреси, ця техніка буде шукати URL-адреси.

pageFile/Data Carving & Recovery Tools

Безпечне видалення

Очевидно, існують способи "безпечного" видалення файлів та частин журналів про них. Наприклад, можливо перезаписати вміст файлу непотрібними даними кілька разів, а потім видалити журнали з $MFT та $LOGFILE про файл, і видалити тіньові копії томів. Варто зауважити, що навіть виконуючи цю дію, можуть бути інші частини, де існує інформація про наявність файлу, і це правда, і частиною роботи професіонала з форензики є їх пошук.

Посилання

Last updated