A la recherche de la donnée perdue avec foremost
Sommaire
I. Présentation
Sur Unix, et à fortiori sur Linux, il faut se souvenir que lorsqu’un fichier est effacé, il ne l’est pas vraiment, car seul le pointeur vers son support physique est cassé. Il est donc toujours possible de retrouver le contenu de ce fichier perdu, tant que l’espace mémoire de celui-ci n’a pas été écrasé part d’autres données. L’outil magique dans ce genre de situation s’appelle foremost. Il a été développé à la fin des années 90 par la firme Defense Computer Forensics Lab.
II. Formats récupérables
Une fois le logiciel installé on peut aisément récupérer différents types de formats de fichiers :
- Pour les images : les formats jpg, gif, png, bmp
- Pour les films : les formats avi, mpg, riff, wmv, mov
- Pour les documents : les formats pdf, ole, doc, htm
- Pour la musique : les formats wav
- Pour les fichiers compressés : les formats zip, rar
Il s’agit d’un outil de la classe forensics permettant d’effectuer des analyses post-mortem de machine. Dans le cas présent, on peut se servir de l’outil foremost comme d’un moyen de récupérer des données supprimées par erreur. En effet, le système de fichiers est composé de différentes tables ou vues structurées permettant de classifier les fichiers au sein d’arborescences de répertoires numérotés sous forme d’inodes :
III. Installation de foremost
Afin d’installer ce précieux outil il suffit d’exécuter la suite de commande suivante :
# wget https://forensics.cert.org/cert-forensics-tools-release-el7.rpm
On peut alors procéder à l’installation du package cert-forensics-tools_release_el7.rpm ainsi que du package foremost.rpm :
# rpm –Uvh cert-forensics-tools-release*rpm # yum –enablerepo=forensics install foremost
Au final, on devrait alors pouvoir valider l’installation de ce dernier package :
REMARQUE : bien évidemment, sur une distribution Debian ou dérivée, on effectuera directement l’installation du package, déjà intégré aux dépôts officiels :
# apt-get install foremost
L’outil foremost permet d’effectuer un audit complet d’une partition, grâce à l’option –w, afin de connaître les fichiers pouvant être récupérés en plaçant le résultat en sortie dans le répertoire mentionné par l’option -o:
# foremost –w –i <Partition> -o <Cible>
ATTENTION : le nom du répertoire mentionné en sortie doit impérativement être vide ou non existant. Sinon, on récupère une erreur du type de celle décrite ci-dessous:
Le fichier en sortie sera alors place dans le répertoire mentionné par l’option –o et s’appellera, par défaut audit.txt. Le nom de la partition doit correspondre au périphérique physique utilisé. Sinon, le processus d’audit ne peut se déclencher. Afin de connaître la partition sur laquelle on doit effectuer cet audit, il suffit d’exécuter la commande mount sans option:
IV. Utilisation de foremost
Imaginons un instant que l’on dispose d’une image cruciale, que l’on appellera pour l’occasion FondEcran.jpg, pour boucler notre dossier urgentissime, à diffuser avant la fin de l’année. Manque de chance on vient de le supprimer par mégarde (enfin, presque!):
Avant toute chose, il faut alors modifier le fichier /etc/foremost.conf afin de décommenter le type de fichier (ou les types, s’il y en a plusieurs), à restaurer. Dans l’exemple ci-dessus, il s’agit de laisser foremost chercher les fichiers de type JPG sur la partition /dev/mapper/vg00-lv_home. On va alors interroger la partition pour savoir si l’outil foremost peut récupérer quelque chose grâce à la commande d'audit suivante:
# foremost –w –i /dev/mapper/vg00-lv_home -o /tmp/foremost
Cela déclenche un processus d’analyse des tables d’inodes des différents répertoires et sous-répertoire de la partition mentionnée par l’option –i, en tâche de fond, caractérisé par l’affichage suivant :
En sortie, on devrait avoir la liste suivante et il va falloir alors retrouver un fichier pesant approximativement 45Kio (taille de notre fichier perdu), parmi ceux proposés dans l’analyse ci-dessous :
Pour lancer la restauration on va alors exécuter l’instruction suivante (là encore, pour cette étape, le répertoire pointé par l’option –o doit être vide) :
# foremost –t jpeg –i /dev/mapper/vg00-lv_home –o /home/phil/Images/
ATTENTION : après restauration les fichiers appartiendront forcément à l’utilisateur ayant lancé la commande foremost. Si celui-ci est root, il faut alors modifier les droits et les propriétés des fichiers restaurés pour les faire appartenir à leur propriétaire d’origine. Dans le répertoire mentionné, on devrait retrouver un sous-répertoire jpg contenant l'ensemble des images récupérées (parmi lesquelles notre fichier perdu).
Ainsi, pour récupérer notre image perdue, on peut alors exécuter l’application Shotwell permettant d’importer des images depuis un dossier. Et, là miracle, on retrouve notre fond d’écran supprimé :
V. Conclusion
On peut bien sûr pratiquer ainsi pour n’importe quel type de format reconnu par l’outil. Le plus important durant la phase de récupération est de bien penser à changer les droits de propriété des fichiers ainsi restaurés. Sinon, les outils ou applications devant les manipuler ne le pourront pas car ces mêmes fichiers disposent alors des droits de l’administrateur. En clair, lorsque tout semble perdu, il faut se souvenir que sur Linux, pour plagier une célèbre réplique du “Seigneur des anneaux“, il y a toujours de l’espoir de pouvoir récupérer des fichiers supprimés malencontreusement.
Je conseille plutôt l’utilisation de testdisk pour la récupération de données.
C’est un logiciel libre en Français très efficace et il reconnais un nombre incroyable de formats 🙂
On peux le trouver ici : https://www.cgsecurity.org/wiki/TestDisk_FR
Bonsoir,
Merci pour votre commentaire. Personnellement je ne connais pas cet outil. Mais, je vais de ce pas l’explorer. C’est toujours intéressant d’avoir plusieurs solutions.