.. | ||
ext.md | ||
file-data-carving-recovery-tools.md | ||
file-data-carving-tools.md | ||
ntfs.md | ||
README.md |
Partitions/Systèmes de fichiers/Carving
Partitions/Systèmes de fichiers/Carving
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
Partitions
Un disque dur ou un SSD peut contenir différentes partitions dans le but de séparer physiquement les données.
L'unité minimale d'un disque est le secteur (généralement composé de 512 octets). Ainsi, la taille de chaque partition doit être un multiple de cette taille.
MBR (Master Boot Record)
Il est alloué dans le premier secteur du disque après les 446 octets du code de démarrage. Ce secteur est essentiel pour indiquer à l'ordinateur ce qu'est une partition et d'où elle doit être montée.
Il permet jusqu'à 4 partitions (au plus 1 seule peut être active/amorçable). Cependant, si vous avez besoin de plus de partitions, vous pouvez utiliser des partitions étendues. Le dernier octet de ce premier secteur est la signature de l'enregistrement d'amorçage 0x55AA. Une seule partition peut être marquée comme active.
MBR autorise max 2,2 To.
Des octets 440 à 443 du MBR, vous pouvez trouver la signature de disque Windows (si Windows est utilisé). La lettre de lecteur logique du disque dur dépend de la signature de disque Windows. Changer cette signature pourrait empêcher Windows de démarrer (outil : Active Disk Editor).
Format
Décalage | Longueur | Élément |
---|---|---|
0 (0x00) | 446 (0x1BE) | Code de démarrage |
446 (0x1BE) | 16 (0x10) | Première partition |
462 (0x1CE) | 16 (0x10) | Deuxième partition |
478 (0x1DE) | 16 (0x10) | Troisième partition |
494 (0x1EE) | 16 (0x10) | Quatrième partition |
510 (0x1FE) | 2 (0x2) | Signature 0x55 0xAA |
Format de l'enregistrement de partition
Décalage | Longueur | Élément |
---|---|---|
0 (0x00) | 1 (0x01) | Drapeau actif (0x80 = amorçable) |
1 (0x01) | 1 (0x01) | Tête de départ |
2 (0x02) | 1 (0x01) | Secteur de départ (bits 0-5); bits supérieurs du cylindre (6- 7) |
3 (0x03) | 1 (0x01) | Bits les plus faibles du cylindre de départ |
4 (0x04) | 1 (0x01) | Code de type de partition (0x83 = Linux) |
5 (0x05) | 1 (0x01) | Tête de fin |
6 (0x06) | 1 (0x01) | Secteur de fin (bits 0-5); bits supérieurs du cylindre (6- 7) |
7 (0x07) | 1 (0x01) | Bits les plus faibles du cylindre de fin |
8 (0x08) | 4 (0x04) | Secteurs précédant la partition (petit boutiste) |
12 (0x0C) | 4 (0x04) | Secteurs dans la partition |
Pour monter un MBR sous Linux, vous devez d'abord obtenir le décalage de départ (vous pouvez utiliser fdisk
et la commande p
)
Ensuite, utilisez le code suivant
#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 (Adressage de bloc logique)
L'adressage de bloc logique (LBA) est un schéma couramment utilisé pour spécifier l'emplacement des blocs de données stockés sur des dispositifs de stockage informatique, généralement des systèmes de stockage secondaire tels que les disques durs. LBA est un schéma d'adressage linéaire particulièrement simple; les blocs sont localisés par un index entier, le premier bloc étant LBA 0, le deuxième LBA 1, et ainsi de suite.
GPT (Table de partition GUID)
La Table de Partition GUID, connue sous le nom de GPT, est préférée pour ses capacités améliorées par rapport à MBR (Master Boot Record). Distinctive pour son identifiant unique mondial pour les partitions, la GPT se distingue de plusieurs manières :
- Emplacement et Taille : Tant la GPT que la MBR commencent à l'octet 0. Cependant, la GPT fonctionne sur 64 bits, contrairement aux 32 bits de la MBR.
- Limites de Partition : La GPT prend en charge jusqu'à 128 partitions sur les systèmes Windows et peut accueillir jusqu'à 9,4 ZB de données.
- Noms de Partition : Offre la possibilité de nommer les partitions avec jusqu'à 36 caractères Unicode.
Résilience et Récupération des Données :
- Redondance : Contrairement à la MBR, la GPT ne limite pas le partitionnement et les données de démarrage à un seul endroit. Elle réplique ces données sur le disque, améliorant l'intégrité et la résilience des données.
- Contrôle de Redondance Cyclique (CRC) : La GPT utilise le CRC pour garantir l'intégrité des données. Elle surveille activement la corruption des données et, lorsqu'elle est détectée, la GPT tente de récupérer les données corrompues à partir d'un autre emplacement du disque.
MBR Protecteur (LBA0) :
- La GPT maintient la compatibilité ascendante grâce à un MBR protecteur. Cette fonctionnalité réside dans l'espace MBR hérité mais est conçue pour empêcher les anciens utilitaires basés sur la MBR d'écraser par erreur les disques GPT, protégeant ainsi l'intégrité des données sur les disques formatés en GPT.
MBR Hybride (LBA 0 + GPT)
Dans les systèmes d'exploitation prenant en charge le démarrage basé sur GPT via les services BIOS plutôt que l'EFI, le premier secteur peut également être utilisé pour stocker la première étape du code de chargeur de démarrage, mais modifié pour reconnaître les partitions GPT. Le chargeur de démarrage dans le MBR ne doit pas supposer une taille de secteur de 512 octets.
En-tête de table de partition (LBA 1)
L'en-tête de la table de partition définit les blocs utilisables sur le disque. Il définit également le nombre et la taille des entrées de partition qui composent la table de partition (décalages 80 et 84 dans le tableau).
Décalage | Longueur | Contenu |
---|---|---|
0 (0x00) | 8 octets | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ou 0x5452415020494645ULL sur les machines little-endian) |
8 (0x08) | 4 octets | Révision 1.0 (00h 00h 01h 00h) pour UEFI 2.8 |
12 (0x0C) | 4 octets | Taille de l'en-tête en little-endian (en octets, généralement 5Ch 00h 00h 00h ou 92 octets) |
16 (0x10) | 4 octets | CRC32 de l'en-tête (décalage +0 jusqu'à la taille de l'en-tête) en little-endian, ce champ étant mis à zéro pendant le calcul |
20 (0x14) | 4 octets | Réservé; doit être zéro |
24 (0x18) | 8 octets | LBA actuel (emplacement de cette copie d'en-tête) |
32 (0x20) | 8 octets | LBA de sauvegarde (emplacement de l'autre copie d'en-tête) |
40 (0x28) | 8 octets | Premier LBA utilisable pour les partitions (dernier LBA de la table de partition primaire + 1) |
48 (0x30) | 8 octets | Dernier LBA utilisable (premier LBA de la table de partition secondaire - 1) |
56 (0x38) | 16 octets | GUID du disque en endian mixte |
72 (0x48) | 8 octets | LBA de départ d'un tableau d'entrées de partition (toujours 2 dans la copie primaire) |
80 (0x50) | 4 octets | Nombre d'entrées de partition dans le tableau |
84 (0x54) | 4 octets | Taille d'une seule entrée de partition (généralement 80h ou 128) |
88 (0x58) | 4 octets | CRC32 du tableau d'entrées de partition en little-endian |
92 (0x5C) | * | Réservé; doit être des zéros pour le reste du bloc (420 octets pour une taille de secteur de 512 octets; mais peut être plus avec des tailles de secteur plus grandes) |
Entrées de partition (LBA 2–33)
Format d'entrée de partition GUID | ||
---|---|---|
Décalage | Longueur | Contenu |
0 (0x00) | 16 octets | GUID de type de partition (endian mixte) |
16 (0x10) | 16 octets | GUID de partition unique (endian mixte) |
32 (0x20) | 8 octets | Premier LBA (little endian) |
40 (0x28) | 8 octets | Dernier LBA (inclusif, généralement impair) |
48 (0x30) | 8 octets | Drapeaux d'attribut (par ex. le bit 60 indique lecture seule) |
56 (0x38) | 72 octets | Nom de la partition (36 unités de code UTF-16LE) |
Types de Partitions
Plus de types de partitions sur https://en.wikipedia.org/wiki/GUID_Partition_Table
Inspection
Après avoir monté l'image de la scène de crime avec ArsenalImageMounter, vous pouvez inspecter le premier secteur en utilisant l'outil Windows Active Disk Editor. Dans l'image suivante, un MBR a été détecté sur le secteur 0 et interprété :
S'il s'agissait d'une table GPT au lieu d'un MBR, la signature EFI PART devrait apparaître dans le secteur 1 (qui est vide dans l'image précédente).
Systèmes de Fichiers
Liste des systèmes de fichiers 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
Le système de fichiers FAT (File Allocation Table) est conçu autour de son composant principal, la table d'allocation de fichiers, positionnée au début du volume. Ce système protège les données en maintenant deux copies de la table, garantissant l'intégrité des données même si l'une est corrompue. La table, ainsi que le dossier racine, doivent être à un emplacement fixe, crucial pour le processus de démarrage du système.
L'unité de stockage de base du système de fichiers est un cluster, généralement de 512 octets, comprenant plusieurs secteurs. FAT a évolué à travers les versions :
- FAT12, prenant en charge les adresses de cluster sur 12 bits et gérant jusqu'à 4078 clusters (4084 avec UNIX).
- FAT16, évoluant vers des adresses sur 16 bits, permettant ainsi d'accueillir jusqu'à 65 517 clusters.
- FAT32, progressant davantage avec des adresses sur 32 bits, autorisant un impressionnant 268 435 456 clusters par volume.
Une limitation significative à travers les versions de FAT est la taille maximale du fichier de 4 Go, imposée par le champ de 32 bits utilisé pour le stockage de la taille du fichier.
Les composants clés du répertoire racine, en particulier pour FAT12 et FAT16, comprennent :
- Nom de Fichier/Dossier (jusqu'à 8 caractères)
- Attributs
- Dates de Création, Modification et Dernier Accès
- Adresse de la Table FAT (indiquant le cluster de départ du fichier)
- Taille du Fichier
EXT
Ext2 est le système de fichiers le plus courant pour les partitions sans journalisation (partitions qui ne changent pas beaucoup) comme la partition de démarrage. Ext3/4 sont journalisés et sont utilisés généralement pour les autres partitions.
Métadonnées
Certains fichiers contiennent des métadonnées. Ces informations concernent le contenu du fichier qui peut parfois être intéressant pour un analyste car en fonction du type de fichier, il peut contenir des informations telles que :
- Titre
- Version de MS Office utilisée
- Auteur
- Dates de création et de dernière modification
- Modèle de l'appareil photo
- Coordonnées GPS
- Informations sur l'image
Vous pouvez utiliser des outils comme exiftool et Metadiver pour obtenir les métadonnées d'un fichier.
Récupération de Fichiers Supprimés
Fichiers Supprimés Enregistrés
Comme mentionné précédemment, il existe plusieurs endroits où le fichier est toujours enregistré après avoir été "supprimé". Cela est dû au fait que la suppression d'un fichier d'un système de fichiers le marque simplement comme supprimé mais les données ne sont pas touchées. Ainsi, il est possible d'inspecter les registres des fichiers (comme le MFT) et de trouver les fichiers supprimés.
De plus, le système d'exploitation sauvegarde généralement de nombreuses informations sur les modifications du système de fichiers et les sauvegardes, il est donc possible d'essayer de les utiliser pour récupérer le fichier ou autant d'informations que possible.
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
Carving de Fichiers
Le carving de fichiers est une technique qui tente de trouver des fichiers dans une masse de données. Les outils de ce type fonctionnent principalement de 3 manières : Basés sur les en-têtes et pieds de page des types de fichiers, basés sur les structures des types de fichiers et basés sur le contenu lui-même.
Notez que cette technique ne fonctionne pas pour récupérer des fichiers fragmentés. Si un fichier n'est pas stocké dans des secteurs contigus, alors cette technique ne pourra pas le trouver ou du moins une partie de celui-ci.
Il existe plusieurs outils que vous pouvez utiliser pour le Carving de Fichiers en indiquant les types de fichiers que vous souhaitez rechercher.
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
Carving de Flux de Données
Le Carving de Flux de Données est similaire au Carving de Fichiers mais au lieu de rechercher des fichiers complets, il recherche des fragments d'informations intéressants.
Par exemple, au lieu de rechercher un fichier complet contenant des URL enregistrées, cette technique recherchera des URL.
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
Suppression Sécurisée
Évidemment, il existe des moyens de supprimer "sécuritairement" des fichiers et une partie des journaux à leur sujet. Par exemple, il est possible de écraser le contenu d'un fichier avec des données inutiles plusieurs fois, puis de supprimer les journaux du $MFT et du $LOGFILE concernant le fichier, et de supprimer les Copies d'Ombre du Volume.
Vous remarquerez peut-être que même en effectuant cette action, il peut y avoir d'autres parties où l'existence du fichier est toujours enregistrée, et c'est vrai, une partie du travail d'un professionnel de la criminalistique est de les trouver.
Références
- 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