Partitions/File Systems/Carving
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Жорсткий диск або SSD диск можуть містити різні розділи з метою фізичного розділення даних. Мінімальна одиниця диска - це сектор (зазвичай складається з 512B). Отже, розмір кожного розділу повинен бути кратним цьому розміру.
Він розміщується в першому секторі диска після 446B завантажувального коду. Цей сектор є важливим для вказівки ПК, що і звідки має бути змонтовано розділ. Він дозволяє до 4 розділів (максимум лише 1 може бути активним/завантажувальним). Однак, якщо вам потрібно більше розділів, ви можете використовувати розширені розділи. Останній байт цього першого сектора - це підпис завантаження 0x55AA. Лише один розділ може бути позначений як активний. MBR дозволяє макс 2.2TB.
З байтів 440 до 443 MBR ви можете знайти Windows Disk Signature (якщо використовується Windows). Логічна буква диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може завадити Windows завантажитися (інструмент: Active Disk Editor).
Format
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
Partition Record Format
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)
Сектори перед розділом (little endian)
12 (0x0C)
4 (0x04)
Сектори в розділі
Щоб змонтувати MBR в Linux, спочатку потрібно отримати початковий зсув (можна використовувати fdisk
і команду p
)
А потім використовуйте наступний код
LBA (Логічне блочне адресування)
Логічне блочне адресування (LBA) є поширеною схемою, що використовується для вказівки місця розташування блоків даних, збережених на комп'ютерних носіях, зазвичай на вторинних системах зберігання, таких як жорсткі диски. LBA є особливо простим лінійним адресним методом; блоки розташовані за цілим індексом, при цьому перший блок має LBA 0, другий LBA 1 і так далі.
GUID Таблиця Розділів, відома як GPT, віддається перевага за її розширені можливості в порівнянні з MBR (Основний Завантажувальний Запис). Вона відрізняється своїм глобально унікальним ідентифікатором для розділів, 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 старими утилітами на основі MBR, тим самим захищаючи цілісність даних на дисках формату GPT.
Гібридний MBR (LBA 0 + GPT)
В операційних системах, які підтримують завантаження на основі GPT через BIOS замість EFI, перший сектор також може використовуватися для зберігання першої стадії коду завантажувача, але модифікований для розпізнавання GPT розділів. Завантажувач у MBR не повинен припускати розмір сектора 512 байт.
Заголовок таблиці розділів (LBA 1)
Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість і розмір записів розділів, які складають таблицю розділів (зсуви 80 і 84 в таблиці).
0 (0x00)
8 байт
8 (0x08)
4 байти
Версія 1.0 (00h 00h 01h 00h) для UEFI 2.8
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)
*
Зарезервовано; має бути нулями для решти блоку (420 байт для розміру сектора 512 байт; але може бути більше з більшими розмірами секторів)
Записи розділів (LBA 2–33)
Зсув
Довжина
Зміст
16 (0x10)
16 байт
Унікальний GUID розділу (змішаний порядок байтів)
40 (0x28)
8 байт
Останнє LBA (включно, зазвичай непарне)
48 (0x30)
8 байт
Атрибути (наприклад, біт 60 позначає тільки для читання)
Типи Розділів
Більше типів розділів на https://en.wikipedia.org/wiki/GUID_Partition_Table
Після монтування образу дляensics за допомогою ArsenalImageMounter, ви можете перевірити перший сектор за допомогою інструменту Windows Active Disk Editor. На наступному зображенні було виявлено MBR на секторі 0 та інтерпретовано:
Якщо це була таблиця GPT замість MBR, то підпис EFI PART має з'явитися в секторі 1 (який на попередньому зображенні порожній).
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 (Таблиця Розподілу Файлів) спроектована навколо свого основного компонента, таблиці розподілу файлів, розташованої на початку тому. Ця система захищає дані, зберігаючи дві копії таблиці, забезпечуючи цілісність даних, навіть якщо одна з них пошкоджена. Таблиця, разом з кореневою папкою, повинна бути в фіксованому місці, що є критично важливим для процесу запуску системи.
Основною одиницею зберігання файлової системи є кластер, зазвичай 512B, що складається з кількох секторів. FAT еволюціонувала через версії:
FAT12, що підтримує 12-бітні адреси кластерів і обробляє до 4078 кластерів (4084 з UNIX).
FAT16, що покращує до 16-бітних адрес, тим самим вміщуючи до 65,517 кластерів.
FAT32, що далі розвивається з 32-бітними адресами, дозволяючи вражаючі 268,435,456 кластерів на том.
Значним обмеженням для всіх версій FAT є максимальний розмір файлу 4 ГБ, накладений 32-бітним полем, що використовується для зберігання розміру файлу.
Ключові компоненти кореневої директорії, особливо для FAT12 і FAT16, включають:
Ім'я Файлу/Папки (до 8 символів)
Атрибути
Дати створення, модифікації та останнього доступу
Адреса FAT таблиці (що вказує на початковий кластер файлу)
Розмір Файлу
Ext2 є найпоширенішою файловою системою для нежурнальних розділів (розділів, які не змінюються часто) таких як розділ завантаження. Ext3/4 є журнальними і зазвичай використовуються для інших розділів.
Деякі файли містять метадані. Ця інформація стосується вмісту файлу, що іноді може бути цікаво аналітику, оскільки в залежності від типу файлу, вона може містити інформацію, таку як:
Заголовок
Версія MS Office, що використовується
Автор
Дати створення та останньої модифікації
Модель камери
GPS координати
Інформація про зображення
Ви можете використовувати інструменти, такі як exiftool та Metadiver, щоб отримати метадані файлу.
Як було видно раніше, є кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Тоді можливо перевірити реєстри файлів (такі як MFT) і знайти видалені файли.
Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можливо спробувати використовувати їх для відновлення файлу або якомога більшої кількості інформації.
File/Data Carving & Recovery ToolsФайлове вирізання - це техніка, яка намагається знайти файли в обсязі даних. Є 3 основні способи, якими працюють такі інструменти: На основі заголовків і футерів типів файлів, на основі структур типів файлів і на основі вмісту самого файлу.
Зверніть увагу, що ця техніка не працює для відновлення фрагментованих файлів. Якщо файл не зберігається в сусідніх секторах, тоді ця техніка не зможе його знайти або, принаймні, частину його.
Існує кілька інструментів, які ви можете використовувати для файлового вирізання, вказуючи типи файлів, які ви хочете шукати.
File/Data Carving & Recovery ToolsВирізання потоку даних подібне до файлового вирізання, але замість того, щоб шукати цілі файли, воно шукає цікаві фрагменти інформації. Наприклад, замість того, щоб шукати повний файл, що містить зафіксовані URL-адреси, ця техніка шукатиме URL-адреси.
File/Data Carving & Recovery ToolsОчевидно, що існують способи "надійно" видалити файли та частину журналів про них. Наприклад, можливо перезаписати вміст файлу сміттєвими даними кілька разів, а потім видалити журнали з $MFT та $LOGFILE про файл, і видалити Копії Тіней Томів. Ви можете помітити, що навіть виконуючи цю дію, можуть бути інші частини, де існування файлу все ще зафіксовано, і це правда, і частина роботи професіонала з судової експертизи полягає в тому, щоб їх знайти.
iHackLabs Сертифікований Цифровий Судовий Експерт Windows
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)