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
Offset | Length | Item |
---|---|---|
0 (0x00) | 446(0x1BE) | Boot code |
446 (0x1BE) | 16 (0x10) | First Partition |
462 (0x1CE) | 16 (0x10) | Second Partition |
478 (0x1DE) | 16 (0x10) | Third Partition |
494 (0x1EE) | 16 (0x10) | Fourth Partition |
510 (0x1FE) | 2 (0x2) | Signature 0x55 0xAA |
Partition Record Format
Offset | Length | Item |
---|---|---|
0 (0x00) | 1 (0x01) | Active flag (0x80 = bootable) |
1 (0x01) | 1 (0x01) | Start head |
2 (0x02) | 1 (0x01) | Start sector (bits 0-5); upper bits of cylinder (6- 7) |
3 (0x03) | 1 (0x01) | Start cylinder lowest 8 bits |
4 (0x04) | 1 (0x01) | Partition type code (0x83 = Linux) |
5 (0x05) | 1 (0x01) | End head |
6 (0x06) | 1 (0x01) | End sector (bits 0-5); upper bits of cylinder (6- 7) |
7 (0x07) | 1 (0x01) | End cylinder lowest 8 bits |
8 (0x08) | 4 (0x04) | Sectors preceding partition (little endian) |
12 (0x0C) | 4 (0x04) | Sectors in partition |
Щоб змонтувати MBR в Linux, спочатку потрібно отримати початковий зсув (ви можете використовувати fdisk
і команду p
)
А потім використовуйте наступний код
LBA (Логічне блочне адресування)
Логічне блочне адресування (LBA) є поширеною схемою, що використовується для вказівки місця розташування блоків даних, збережених на комп'ютерних носіях, зазвичай на вторинних системах зберігання, таких як жорсткі диски. LBA є особливо простим лінійним адресним методом; блоки розташовані за цілим індексом, де перший блок - LBA 0, другий - LBA 1 і так далі.
GUID Таблиця Розділів, відома як 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-дисків старими утилітами на основі 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)
Формат запису розділу 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
Після монтування образу для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)