Solution de tacorabane pour Not so FAT

intro forensics disk

2 décembre 2023

Analyse du fichier fourni

Comme dans les challenges contenant des fichiers, commencez par le télécharger. Vous constatez que l’extension du fichier se termine par dd. Allons voir ce qu’est cette extension.

Le fichier DD est un fichier d’image de disque et une réplique d’un disque dur. Le fichier ayant une extension .dd est généralement créé avec un outil d’imagerie appelé DD. L’utilitaire fournit une interface de ligne de commande pour créer des images de disque dans un système exécutant UNIX et LINUX OS.
WhatIsFileExtension

Verifions tout de même le type de fichier avec la commande file.

$ file not-so-fat.dd
not-so-fat.dd: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 32768 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 32, sectors/track 32, heads 64, serial number 0x3be84c04, unlabeled, FAT (16 bit)

Nous observons deux éléments, mkfs.fat qui nous informent que le format de ficiher est FAT (File Allocation Table) et FAT (16 bit). Ensuite, nous avons DOS/MBR boot sector qui indique le secteur adressable du début du disque.

Montage en lecture seule

Trop bien ! Essayons de monter la partition en utilisant la commande mount et d’analyser le contenu avec ls.

mkdir mount
sudo mount -r not-so-fat.dd mount/
cd mount
ls -lsqa

Rien… Bon, il semble que nous n’arrivons pas à lire le contenu monter. Essayons autrement.

cd ..
sudo umount mount
rmdir mount/

Extraction des données supprimées

Il y a une commande qui permet de lister les fichiers/dossiers dans d’une image disque fls.

fls -r not-so-fat.dd

Voici le retour.

r/r * 4:        ziEuYrJW
r/r * 6:        flag.zip
v/v 523203:     $MBR
v/v 523204:     $FAT1
V/v 523205:     $FAT2
V/V 523206:     $OrphanFiles

Voyons ce que nous avons là.

ziEuYrJW… pourquoi pas. Ce peut ressembler à un mot de passe. Mais ne crions pas victoire trop vite.

flag.zip… je ne sais pas pourquoi, mais j’aime bien ce fichier.

$MBR… le secteur de démarrage du disque (Master Boot Record).

$FAT1 et $FAT2 doivent être des espaces système pour la gestion du format FAT16 (FAT (16 bit)).

$OrphanFiles… espace stockant les metadonnées des fichiers supprimés. (Wiki de SleuthKit).

Alors attention, vous savez que l’on vous demande de récupérer les fichiers supprimés et non les metadonnées. Donc ne perdez pas votre temps avec $OrphanFiles. Concentrons nous donc sur les deux premiers dossiers.

Pour ce faire, nous allons utiliser la commande icat.

icat not-so-fat.dd 4 > ziEuYrJW
icat not-so-fat.dd 6 > file.zip
icat not-so-fat.dd 523203 > MBR
icat not-so-fat.dd 523204 > FAT1
icat not-so-fat.dd 523205 > FAT2
icat not-so-fat.dd 523203 > OrphanFiles

Nous avons extrait tous les fichiers ou dossiers. Cela va nous permettre de vérifier les types de chacun.

$ file *
FAT1:          dBase III DBT, version number 0, next free block index 4294967288
FAT2:          dBase III DBT, version number 0, next free block index 4294967288
file.zip:      Zip archive data, at least v1.0 to extract
flag.txt:      ASCII text
MBR:           DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 32768 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 32, sectors/track 32, heads 64, serial number 0x3be84c04, unlabeled, FAT (16 bit)
not-so-fat.dd: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 32768 (volumes <=32 MB), Media descriptor Oxf8, sectors/FAT 32, sectors/track 32, heads 64, serial number 0x3be84c04, unlabeled, FAT (16 bit)
OrphanFiles:   empty
ziEuYrJW:      empty

Le fichier file.zip est bel et bien un fichier ZIP donc extrayons son contenu.

$ unzip file.zip
Archive:  file.zip
[file.zip] flag.txt password:
password incorrect-- reenter:

Essayons le mot de passe ziEuYrJW.

Mince ! Ce n’est pas le bon. Essayons de cracker le mot de passe avec la commande fcrackzip

$ fcrackzip -v -u -D -p /usr/share/wordlists/rockyou.txt flag.zip
found file 'flag.txt', (size cp/uc     59/    47, flags 9, chk 4eb7)


PASSWORD FOUND!!!!: pw == password
$ unzip flag.zip
Archive:  flag.zip
[flag.zip] flag.txt password:
 extracting: flag.txt

Yes ! Lisez le fichier extrait flag.txt et vous obtenez ECSC{eefea8cda693390c7ce0f6da6e388089dd615379}.