Partitionsforensik mit ext3grep, bless & Co.
Jan 'RedBully' Seiffert
redbully at cc.hs-owl.de
Sun Aug 16 23:44:49 CEST 2009
RalfGesellensetter wrote:
> Hallo,
>
> ich habe bereits leidlich Erfahrung mit Festplattenforensik (Backups
> sind etwas für Feiglinge ;) - und möchte hier einen Fall schildern, der
> mir neue Einblicke in das Ext3-System gibt.
>
> Ausgangssituation: Eine große ext3-Partition (Sidux-Installation incl.
> Home + Daten) wurde versehentlich "überinstalliert" - also neu
> formatiert und nochmals mit Sidux installiert.
>
> Frozen Image:
> In der (optimistischen aber weitestgehend zutreffenden) Annahme, dass
> die Formatierung nicht jeden Sektor mit Nullen überschreibt, und Sidux
> seine Dateien ungefähr an dieselbe Stelle schreibt, wie bei der letzten
> Installation,
Genau das ist das problem, er hat auch das Dateisystem an die gleiche stelle
geschrieben, Bitfields, Inode Tabelle, alles ueberschrieben...
wurde die Partition umgehende r/o gesetzt und per "dd" als
> Imagedatei eingefroren.
>
> Es gibt nun verschiedene Tools wie ext3grep, die Sektoren einzeln
> auslesen, nach inodes mit Verzeichnissen suchen usw. Diese sehen aber
> v.a. das neue System.
>
..darum findest du auch nix mehr vom alten Dateisystem.
> Mit einem reinen Grep konnte ich z.B. schon eine Textdatei aufspüren.
^^,
Ich hab einen Freund, der steht mit rm und /home auf Kriegsfuss.
Es ist doch erstaunlich was man an Hausarbeiten/Diplomarbeiten (thank god its
LaTex) und SourceCode (ASCII ftw.) mit einem grep -C xxx "catch phrase"
/dev/hda5 retten kann...
> Die meisten Hexeditoren (selbst lfhexedit) versagten allerdings bei
> einer 10GB-Datei, allein "bless" war in der Lage, das Image komfortabel
> nach Spuren zu durchsuchen und diese per C&P zu exportieren.
>
Die meisten ASCII Texte mit grep retten.
Danach foremost drauf jagen.
> Nun ist ganz offensichtlich ein Problem, dass die Dateien aus dem neuen
> (überschreibenden, gültigen) Ext3-System den Blick auf die alten Daten
> verstellen.
>
> Es wäre also vielleicht eine sinnvolle Herangehensweise, alle Dateien
> dort mit Nullen zu füllen (nur wie?).
versuchs mal hiermit, in Compiler werfen, dann z.B. "find /usr/ -type f -exec
./nullify \{\} \;":
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
static char zero_mem[4096];
int main(int argc, char *argv[])
{
int i;
if(argc < 2) {
fprintf(stderr, "%s: need filename[s]\n", argv[0]);
return EXIT_FAILURE;
}
for(i = 1; i < argc; i++) {
struct stat st;
int f = open(argv[i], O_WRONLY);
blkcnt_t j;
if(-1 == f) {
fprintf(stderr, "couldn't open \"%s\": %s\n",
argv[i], strerror(errno));
continue;
}
if(fstat(f, &st)) {
fprintf(stderr, "couldn't stat \"%s\": %s\n",
argv[i], strerror(errno));
goto next;
}
if(!S_ISREG(st.st_mode)) {
fprintf(stderr, "\"%s\" isn't a regular file\n",
argv[i]);
goto next;
}
for(j = st.st_blocks; j;) {
size_t k = (sizeof(zero_mem)/512) < j ?
sizeof(zero_mem) : j * 512;
write(f, zero_mem, k);
j -= k/512;
}
next:
close(f);
}
return EXIT_SUCCESS;
}
> Alternativ könnte man eine Imagekopie machen, die nur unbenutzte Inodes
> des neuen Filesystems enthält.
>
> Anregungen - Ideen willkommen.
> Gruß
> Ralf
Gruss
Jan
--
Nur selten nimmt der Handelsmann statt baren Geldes Stuhlgang an
More information about the Linux
mailing list