Website-Suche

So stellen Sie gelöschte Dateien mit Foremost unter Linux wieder her


In diesem Artikel werden wir vor allem über ein sehr nützliches forensisches Open-Source-Dienstprogramm sprechen, das in der Lage ist, gelöschte Dateien mit der Technik namens Data Carving wiederherzustellen. Das Dienstprogramm wurde ursprünglich vom United States Air Force Office of Special Investigations entwickelt und ist in der Lage, mehrere Dateitypen wiederherzustellen (Unterstützung für bestimmte Dateitypen kann vom Benutzer über die Konfigurationsdatei hinzugefügt werden). Das Programm kann auch mit Partitionsabbildern arbeiten, die von dd oder ähnlichen Tools erstellt wurden.

In diesem Tutorial lernen Sie:

  • So installieren Sie foremost
  • So verwenden Sie Foremost, um gelöschte Dateien wiederherzustellen
  • Hinzufügen von Unterstützung für einen bestimmten Dateityp

Foremost ist ein forensisches Datenwiederherstellungsprogramm für Linux, das verwendet wird, um Dateien mithilfe ihrer Kopf- und Fußzeilen und Datenstrukturen durch einen Prozess wiederherzustellen, der als Datei-Carving bekannt ist.

Verwendete Softwareanforderungen und Konventionen

Installation

Da Foremost bereits in allen wichtigen Linux-Distributions-Repositories vorhanden ist, ist die Installation eine sehr einfache Aufgabe. Alles, was wir tun müssen, ist, unseren bevorzugten Distributionspaket-Manager zu verwenden. Unter Debian und Ubuntu können wir apt verwenden:

sudo apt install foremost

In den letzten Versionen von Fedora verwenden wir den dnf-Paketmanager, um Pakete zu installieren, der dnf ist ein Nachfolger von yum. Der Name des Pakets ist derselbe:

sudo dnf install foremost

Wenn wir ArchLinux verwenden, können wir pacman verwenden, um in erster Linie zu installieren. Das Programm befindet sich in der Distribution "community"-Repository:

sudo pacman -S foremost

Grundlegende Verwendung

WARNUNG
Unabhängig davon, welches Dateiwiederherstellungstool oder welchen Prozess Sie zur Wiederherstellung Ihrer Dateien verwenden werden, wird empfohlen, bevor Sie beginnen, eine niedrige Festplatten- oder Partitionssicherung durchzuführen, um ein versehentliches Überschreiben von Daten zu vermeiden!! In diesem Fall können Sie auch nach einem erfolglosen Wiederherstellungsversuch erneut versuchen, Ihre Dateien wiederherzustellen. Lesen Sie die folgende dd-Befehlsanleitung, um zu erfahren, wie Sie eine Low-Level-Sicherung auf Festplatte oder Partition durchführen.

Das Dienstprogramm foremost versucht, Dateien auf der Basis ihrer Kopf- und Fußzeilen und Datenstrukturen wiederherzustellen und zu rekonstruieren, ohne sich auf Dateisystem-Metadaten zu verlassen. Diese forensische Technik ist als file carving bekannt. Das Programm unterstützt verschiedene Arten von Dateien, wie zum Beispiel:

  • jpg
  • gif
  • png
  • bmp
  • avi
  • exe
  • mpg
  • layui
  • riff
  • wmv
  • Bewegung
  • PDF
  • Öl
  • Doktor
  • schwirren
  • selten
  • htm
  • cpp

Die grundlegendste Art, Foremost zu verwenden, besteht darin, eine Quelle bereitzustellen, um nach gelöschten Dateien zu suchen (es kann sich entweder um eine Partition oder eine Image-Datei handeln, wie sie mit dd generiert wurden). Sehen wir uns ein Beispiel an. Stellen Sie sich vor, wir möchten die /dev/sdb1-Partition scannen:  Bevor wir beginnen, ist es sehr wichtig, sich daran zu erinnern, die abgerufenen Daten niemals auf derselben Partition zu speichern, von der wir die Daten abrufen, um zu vermeiden, dass gelöschte Dateien, die noch auf dem Blockgerät vorhanden sind, überschrieben werden. Der Befehl, den wir ausführen würden, lautet:

sudo foremost -i /dev/sdb1

Standardmäßig erstellt das Programm ein Verzeichnis mit dem Namen output in dem Verzeichnis, aus dem wir es gestartet haben, und verwendet es als Ziel. In diesem Verzeichnis wird ein Unterverzeichnis für jeden unterstützten Dateityp erstellt, den wir abzurufen versuchen. Jedes Verzeichnis enthält den entsprechenden Dateityp, der aus dem Data-Carving-Prozess abgerufen wurde:

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

Wenn Foremost seine Arbeit abgeschlossen hat, werden leere Verzeichnisse entfernt. Nur diejenigen, die Dateien enthalten, verbleiben im Dateisystem: Dies informiert uns sofort darüber, welche Art von Dateien erfolgreich abgerufen wurde. Standardmäßig versucht das Programm, alle unterstützten Dateitypen abzurufen. Um unsere Suche einzuschränken, können wir jedoch die Option -t verwenden und eine Liste der Dateitypen bereitstellen, die wir abrufen möchten, getrennt durch ein Komma. Im folgenden Beispiel schränken wir die Suche nur auf GIF- und PDF-Dateien ein:

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

In diesem Video testen wir das forensische Datenwiederherstellungsprogramm Foremost, um eine einzelne PNG-Datei von einer /dev/sdb1-Partition wiederherzustellen, die mit dem EXT4-Dateisystem formatiert ist.

Angeben eines alternativen Ziels

Wie wir bereits sagten, erstellt primär, wenn ein Ziel nicht explizit deklariert ist, ein Ausgabeverzeichnis in unserem cwd. Was ist, wenn wir einen alternativen Pfad angeben möchten? Alles, was wir tun müssen, ist, die Option -o zu verwenden und den Pfad als Argument anzugeben. Wenn das angegebene Verzeichnis nicht vorhanden ist, wird es erstellt. Wenn es existiert, aber nicht leer ist, gibt das Programm eine Beschwerde aus:

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

Um das Problem zu lösen, können wir, wie vom Programm selbst vorgeschlagen, entweder ein anderes Verzeichnis verwenden oder den Befehl mit der Option -T neu starten. Wenn wir die Option -T verwenden, wird das mit der Option -o angegebene Ausgabeverzeichnis mit einem Zeitstempel versehen. Dies ermöglicht es, das Programm mehrmals mit demselben Ziel auszuführen. In unserem Fall wäre das Verzeichnis, das zum Speichern der abgerufenen Dateien verwendet wird:

/home/egdoc/data_Thu_Sep_12_16_32_38_2019

Die Konfigurationsdatei

Die wichtigste Konfigurationsdatei kann verwendet werden, um Dateiformate anzugeben, die vom Programm nicht nativ unterstützt werden. In der Datei finden wir mehrere kommentierte Beispiele, die die Syntax zeigen, die zur Ausführung der Aufgabe verwendet werden sollte. Hier ist ein Beispiel mit dem PNG-Typ (die Zeilen sind kommentiert, da der Dateityp standardmäßig unterstützt wird):

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

Die Informationen, die angegeben werden müssen, um Unterstützung für einen Dateityp hinzuzufügen, werden von links nach rechts durch ein Tabulatorzeichen getrennt: die Dateierweiterung (in diesem Fall png), ob in der Kopf- und Fußzeile zwischen Groß- und Kleinschreibung unterschieden wird (y), die maximale Dateigröße in Bytes (200000), die Kopfzeile (\x50\x4e\x47?) und die Fußzeile (\xff\xfc\xfd\xfe). Nur letzteres ist optional und kann weggelassen werden.

Wenn der Pfad der Konfigurationsdatei nicht explizit mit der Option -c angegeben wird, wird eine Datei mit dem Namen foremost.conf gesucht und verwendet, falls vorhanden, im aktuellen Arbeitsverzeichnis. Wenn sie nicht gefunden wird, wird stattdessen die Standardkonfigurationsdatei /etc/foremost.conf verwendet.

Hinzufügen der Unterstützung für einen Dateityp

Wenn wir die Beispiele in der Konfigurationsdatei lesen, können wir ganz einfach Unterstützung für einen neuen Dateityp hinzufügen. In diesem Beispiel fügen wir Unterstützung für flac-Audiodateien hinzu. Flac (Free Lossless Audio Coded) ist ein nicht-proprietäres verlustfreies Audioformat, das in der Lage ist, komprimiertes Audio ohne Qualitätsverlust bereitzustellen. Zunächst einmal wissen wir, dass der Header dieses Dateityps in hexadezimaler Form 66 4C 61 43 00 00 00 22 (fLaC in ASCII) ist, und wir können dies mit einem Programm wie hexdump auf einer flac-Datei überprüfen:

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|

Wie Sie sehen können, ist die Dateisignatur in der Tat das, was wir erwartet haben. Hier gehen wir von einer maximalen Dateigröße von 30 MB oder 30000000 Bytes aus. Fügen wir der Datei den Eintrag hinzu:

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

Die Fußzeilensignatur ist optional, daher haben wir sie hier nicht bereitgestellt. Das Programm sollte nun in der Lage sein, gelöschte FLAC-Dateien wiederherzustellen. Lassen Sie es uns überprüfen. Um zu testen, ob alles wie erwartet funktioniert, habe ich zuvor eine flac-Datei von der /dev/sdb1-Partition platziert und dann entfernt und dann mit dem Ausführen des Befehls fortgefahren:

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

Wie erwartet war das Programm in der Lage, die gelöschte flac-Datei wiederherzustellen (es war absichtlich die einzige Datei auf dem Gerät), obwohl es sie mit einer zufälligen Zeichenfolge umbenannte. Der ursprüngliche Dateiname kann nicht wiederhergestellt werden, da die Metadaten der Datei, wie wir wissen, im Dateisystem und nicht in der Datei selbst enthalten sind:

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

Die Datei audit.txt enthält Informationen über die Aktionen, die das Programm ausgeführt hat, in diesem Fall:

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

Schlussfolgerung

In diesem Artikel haben wir gelernt, wie man Foremost verwendet, ein forensisches Programm, das in der Lage ist, gelöschte Dateien verschiedener Art wiederherzustellen. Wir haben gelernt, dass das Programm mit einer Technik namens Data Carving arbeitet und auf Dateisignaturen angewiesen ist, um sein Ziel zu erreichen. Wir haben ein Beispiel für die Verwendung des Programms gesehen und auch gelernt, wie man die Unterstützung für einen bestimmten Dateityp mit der in der Konfigurationsdatei dargestellten Syntax hinzufügt. Für weitere Informationen über die Verwendung des Programms konsultieren Sie bitte die Handbuchseite.

Verwandte Artikel: