Recherche de site Web

Comment récupérer des fichiers supprimés avec foremost sur Linux


Dans cet article, nous parlerons avant tout d’un utilitaire d’investigation open source très utile qui est capable de récupérer des fichiers supprimés en utilisant la technique appelée sculpture de données. L’utilitaire a été développé à l’origine par l’Office of Special Investigations de l’armée de l’air des États-Unis, et est capable de récupérer plusieurs types de fichiers (la prise en charge de types de fichiers spécifiques peut être ajoutée par l’utilisateur, via le fichier de configuration). Le programme peut également fonctionner sur des images de partition produites par dd ou des outils similaires.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer foremost
  • Comment utiliser foremost pour récupérer des fichiers supprimés
  • Comment ajouter la prise en charge d’un type de fichier spécifique

Foremost est un programme de récupération de données médico-légales pour Linux utilisé pour récupérer des fichiers à l’aide de leurs en-têtes, pieds de page et structures de données par le biais d’un processus connu sous le nom de découpe de fichiers.

Configuration logicielle requise et conventions utilisées

Installation

Étant donné que foremost est déjà présent dans tous les principaux dépôts de distributions Linux, son installation est une tâche très facile. Tout ce que nous avons à faire est d’utiliser notre gestionnaire de paquets de distribution préféré. Sur Debian et Ubuntu, on peut utiliser apt :

sudo apt install foremost

Dans les versions récentes de Fedora, nous utilisons le gestionnaire de paquets dnf pour installer les paquets, le dnf est un successeur de yum. Le nom du paquet est le même :

sudo dnf install foremost

Si nous utilisons ArchLinux, nous pouvons utiliser pacman pour l’installation principalement. Le programme se trouve dans le dépôt « community » de la distribution :

sudo pacman -S foremost

Utilisation de base

ATTENTION
Quel que soit l’outil ou le processus de récupération de fichiers que vous allez utiliser pour récupérer vos fichiers, avant de commencer, il est recommandé d’effectuer une sauvegarde de disque dur ou de partition de bas niveau, évitant ainsi un écrasement accidentel des données !! Dans ce cas, vous pouvez réessayer de récupérer vos fichiers même après une tentative de récupération infructueuse. Consultez le guide de commande dd suivant pour savoir comment effectuer une sauvegarde de bas niveau de disque dur ou de partition.

L’utilitaire premier essaie de récupérer et de reconstruire les fichiers sur la base de leurs en-têtes, pieds de page et structures de données, sans s’appuyer sur le système de fichiers metadata. Cette technique d’investigation est connue sous le nom de découpage de fichiers. Le programme prend en charge différents types de fichiers, comme par exemple :

  • jpg
  • gif
  • png
  • bmp
  • avi
  • exe
  • mpg
  • wav
  • riff
  • wmv
  • déplacer
  • pdf
  • ole
  • médecin
  • fermeture éclair
  • rare
  • htm
  • Rpc

La façon la plus basique de l’utiliser est de fournir une source pour rechercher les fichiers supprimés (il peut s’agir d’une partition ou d’un fichier image, comme ceux générés avec dd). Voyons un exemple. Imaginons que nous voulions analyser la partition /dev/sdb1 :  avant de commencer, une chose très importante à retenir est de ne jamais stocker les données récupérées sur la même partition que celle à partir de laquelle nous récupérons les données, pour éviter d’écraser les fichiers supprimés toujours présents sur le périphérique bloc. La commande que nous exécuterions est la suivante :

sudo foremost -i /dev/sdb1

Par défaut, le programme crée un répertoire appelé output à l’intérieur du répertoire à partir duquel nous l’avons lancé et l’utilise comme destination. À l’intérieur de ce répertoire, un sous-répertoire est créé pour chaque type de fichier pris en charge que nous tentons de récupérer. Chaque répertoire contiendra le type de fichier correspondant obtenu à partir du processus de gravure des données :

output
├── audit.txt
├── avi
├── bmp
├── dll
├── doc
├── docx
├── exe
├── gif
├── htm
├── jar
├── jpg
├── mbd
├── mov
├── mp4
├── mpg
├── ole
├── pdf
├── png  
├── ppt
├── pptx
├── rar
├── rif
├── sdw
├── sx
├── sxc
├── sxi
├── sxw
├── vis
├── wav
├── wmv
├── xls
├── xlsx
└── zip

Lorsque foremost a terminé son travail, les répertoires vides sont supprimés. Seuls ceux contenant des fichiers sont laissés sur le système de fichiers : cela nous permet de savoir immédiatement quel type de fichiers a été récupéré avec succès. Par défaut, le programme essaie de récupérer tous les types de fichiers pris en charge ; Pour restreindre notre recherche, nous pouvons cependant utiliser l’option -t et fournir une liste des types de fichiers que nous voulons récupérer, séparés par une virgule. Dans l’exemple ci-dessous, nous limitons la recherche aux fichiers gif et pdf :

sudo foremost -t gif,pdf -i /dev/sdb1

Dans cette vidéo, nous allons tester le programme de récupération de données médico-légales Foremost pour récupérer un seul fichier png à partir d’une partition /dev/sdb1 formatée avec le système de fichiers EXT4.

Spécification d’une destination alternative

Comme nous l’avons déjà dit, si une destination n’est pas explicitement déclarée, foremost crée un répertoire de sortie à l’intérieur de notre cwd. Que se passe-t-il si nous voulons spécifier un chemin alternatif ? Tout ce que nous avons à faire est d’utiliser l’option -o et de fournir ledit chemin comme argument. Si le répertoire spécifié n’existe pas, il est créé ; S’il existe mais qu’il n’est pas vide, le programme lance une plainte :

ERROR: /home/egdoc/data is not empty
 	Please specify another directory or run with -T.

Pour résoudre le problème, comme le suggère le programme lui-même, nous pouvons soit utiliser un autre répertoire, soit relancer la commande avec l’option -T. Si nous utilisons l’option -T, le répertoire de sortie spécifié avec l’option -o est horodaté. Cela permet d’exécuter le programme plusieurs fois avec la même destination. Dans notre cas, le répertoire qui serait utilisé pour stocker les fichiers récupérés serait :

/home/egdoc/data_Thu_Sep_12_16_32_38_2019

Le fichier de configuration

Le fichier de configuration principal peut être utilisé pour spécifier des formats de fichiers qui ne sont pas pris en charge nativement par le programme. À l’intérieur du fichier, nous pouvons trouver plusieurs exemples commentés montrant la syntaxe qui doit être utilisée pour accomplir la tâche. Voici un exemple impliquant le type png (les lignes sont commentées puisque le type de fichier est pris en charge par défaut) :

PNG   (used in web pages)
#	(NOTE THIS FORMAT HAS A BUILTIN EXTRACTION FUNCTION)
 	png	y	200000	\x50\x4e\x47?	\xff\xfc\xfd\xfe

Les informations à fournir afin d’ajouter la prise en charge d’un type de fichier sont, de gauche à droite, séparées par un caractère de tabulation : l’extension du fichier (png dans ce cas), si l’en-tête et le pied de page sont sensibles à la casse (y), la taille maximale du fichier en octets (200000), l’en-tête (\x50\x4e\x47 ?) et le pied de page (\xff\xfc\xfd\xfe). Seule cette dernière est facultative et peut être omise.

Si le chemin du fichier de configuration n’est pas explicitement fourni avec l’option -c, un fichier nommé foremost.conf est recherché et utilisé, s’il est présent, dans le répertoire de travail actuel. S’il n’est pas trouvé, le fichier de configuration par défaut, /etc/foremost.conf est utilisé à la place.

Ajout de la prise en charge d’un type de fichier

En lisant les exemples fournis dans le fichier de configuration, nous pouvons facilement ajouter la prise en charge d’un nouveau type de fichier. Dans cet exemple, nous allons ajouter la prise en charge des fichiers audio flac. Flac (Free Lossless Audio Coded) est un format audio sans perte non propriétaire qui est capable de fournir de l’audio compressé sans perte de qualité. Tout d’abord, nous savons que l’en-tête de ce type de fichier sous forme hexadécimale est 66 4C 61 43 00 00 00 22 (fLaC en ASCII), et nous pouvons le vérifier en utilisant un programme comme hexdump sur un fichier flac :

hexdump -C
blind_guardian_war_of_wrath.flac|head
00000000  66 4c 61 43 00 00 00 22  12 00 12 00 00 00 0e 00  |fLaC..."........|
00000010  36 f2 0a c4 42 f0 00 4d  04 60 6d 0b 64 36 d7 bd  |6...B..M.`m.d6..|
00000020  3e 4c 0d 8b c1 46 b6 fe  cd 42 04 00 03 db 20 00  |>L...F...B.... .|
00000030  00 00 72 65 66 65 72 65  6e 63 65 20 6c 69 62 46  |..reference libF|
00000040  4c 41 43 20 31 2e 33 2e  31 20 32 30 31 34 31 31  |LAC 1.3.1 201411|
00000050  32 35 21 00 00 00 12 00  00 00 54 49 54 4c 45 3d  |25!.......TITLE=|
00000060  57 61 72 20 6f 66 20 57  72 61 74 68 11 00 00 00  |War of Wrath....|
00000070  52 45 4c 45 41 53 45 43  4f 55 4e 54 52 59 3d 44  |RELEASECOUNTRY=D|
00000080  45 0c 00 00 00 54 4f 54  41 4c 44 49 53 43 53 3d  |E....TOTALDISCS=|
00000090  32 0c 00 00 00 4c 41 42  45 4c 3d 56 69 72 67 69  |2....LABEL=Virgi|

Comme vous pouvez le voir, la signature du fichier est bien ce que nous attendions. Ici, nous supposerons une taille de fichier maximale de 30 Mo, ou 30000000 octets. Ajoutons l’entrée au fichier :

flac    y       30000000    \x66\x4c\x61\x43\x00\x00\x00\x22

La signature de pied de page est facultative, nous ne l’avons donc pas fournie ici. Le programme devrait maintenant être en mesure de récupérer les fichiers flac supprimés. Vérifions-le. Pour vérifier que tout fonctionne comme prévu, j’ai précédemment placé, puis supprimé, un fichier flac de la partition /dev/sdb1, puis j’ai lancé la commande :

sudo foremost -i /dev/sdb1 -o $HOME/Documents/output

Comme prévu, le programme a pu récupérer le fichier flac supprimé (c’était le seul fichier sur l’appareil, exprès), bien qu’il l’ait renommé avec une chaîne aléatoire. Le nom de fichier d’origine ne peut pas être récupéré car, comme nous le savons, les métadonnées des fichiers sont contenues dans le système de fichiers, et non dans le fichier lui-même :

/home/egdoc/Documents
└── output
    ├── audit.txt
    └── flac
        └── 00020482.flac

Le fichier audit.txt contient des informations sur les actions effectuées par le programme, dans ce cas :

Foremost version 1.5.7 by Jesse Kornblum, Kris
Kendall, and Nick Mikus
Audit File

Foremost started at Thu Sep 12 23:47:04 2019
Invocation: foremost -i /dev/sdb1 -o /home/egdoc/Documents/output
Output directory: /home/egdoc/Documents/output
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: /dev/sdb1
Start: Thu Sep 12 23:47:04 2019
Length: 200 MB (209715200 bytes)

Num	 Name (bs=512)	       Size	 File Offset	 Comment

0:	00020482.flac 	      28 MB 	   10486784
Finish: Thu Sep 12 23:47:04 2019

1 FILES EXTRACTED

flac:= 1
------------------------------------------------------------------

Foremost finished at Thu Sep 12 23:47:04 2019

Conclusion

Dans cet article, nous avons appris à utiliser Foremost, un programme d’investigation capable de récupérer des fichiers supprimés de différents types. Nous avons appris que le programme fonctionne en utilisant une technique appelée découpage de données, et qu’il s’appuie sur les signatures de fichiers pour atteindre son objectif. Nous avons vu un exemple d’utilisation du programme et nous avons également appris comment ajouter la prise en charge d’un type de fichier spécifique en utilisant la syntaxe illustrée dans le fichier de configuration. Pour plus d’informations sur l’utilisation du programme, veuillez consulter sa page de manuel.

Articles connexes: