Zum hauptinhalt springen

if empty {}

PNG Bilder aus Stream und Binärdateien extrahieren

Beim analysieren von Memory Dumps, Firmware, ISO oder Exe-Dateien kommt es vor das dort eingebettete Dateien wieder extrahier werden sollen. Das folgende GO Script sucht nach dem PNG-Header und versucht diese wieder zu dekodieren.

Vorgehen: Hierzu das script file find_png_in_dump.go runterladen und mit

go build find_png_in_dump.go

kompileren. Das Tool kann dann mit

find_png_in_dump.exe -f "c:\pfad\zum\dump.dmp"

gestartet werden. Hier gibt der Parameter -f den Pfad zum Quelle an. Das kann eine beliebige binäre Datei sein.

Beispiel 1 - Dateien aus einem Memory Dump extrahiern

Als erstes Beispiel soll uns ein Memroy Dump des Chrome-Webbrowsers dienen. Unter Windows wird das z.B. mit dem Taskmanager erstellt:

Task Manager Memory Dump erstellen
  1. Taskmanager öffnen

  2. Auf die Details liste gehen und den chorme.exe prozess suchen, hier kann es mehrere geben. Chrome legt für jeden Tab und für Hintergrunddienste einen neuen Prozess an. Am besten etwas rumprobieren oder jenen mit dem größten Speicherplatz auswählen

  3. Rechtsklick auf den Prozess und “Speicherabbild erstellen” bzw. “Create dump file” auswählen

  4. Nach wenigen Sekunden erscheint die Meldung

    Task Manager Memory Dump Meldung

  5. Jetzt diesen Pfad an das Tool übergeben

find_png_in_dump.exe -f "c:\users\espress\appdata\local\temp\chrome.dmp"

und sobald es abgeschlossen ist befinden sich alle extrahieren Bilder im aktuellen Verzeichnis

Task Manager Memory Dump Meldung

Wer sich die Ergebnisse genauer ansieht dem fällt auf das sich hier sowohl Bilder aus Chrome selbst (z.B. das sad face icon in der ersten zeile) und auch Bilder aus der aktuell geladenen Website befinden.

Beispiel 2 - TPCDump

tcpDump erlaubt es Netzwerkverbindungen mitzuschneiden und in eine Datei zu speichern. Unter Linux lässt sich tcpdump direkt über die paketverwaltung installieren, bei Windows kann Windump von WinPcap.org benutzt werden. Das Prinzip ist analog zum ersten Beispiel:

  1. Netzwerkverekh mitschneiden
windump -i 2 -s 0 -w out.pcap

Hier bedeutet:

  • “-i 2” das die 2te Netzwerkadapater benutzt werden soll. Eine Liste alles Netzwerkadapter gibt es mit windump -D .
  • “-s 0” gibt an das die Pakete vollständig geschrieben werden und
  • “-w out.pcap” schreibt die pakete direkt in die out.pcap Datei
    Windump capture
  1. Netzwerkverkehr erzeugen, z.B. mit dem Browser surfen.

  2. Den Pfad von out.pcap an das Tool übergeben

find_png_in_dump.exe -f "out.pcap"

Das Ergebnis sind alle (unverschlüsselt) übertragenen Bilder

windump captured images

Mankos

Bei veschlüsselten Verbindungen oder komprimierten Dateien kann das Tool natürlich keine PNGs finden. Wobei sich das Tool bei letzterem Punkt leicht erweitern liese, mögliche Erweiterungen:

Mögliche Verbesserungen:

  • Andere Dateitypen wie BMP, JPEG, DLL, ZIP, doc, xlsx, mp4 …
  • Komprimierungen wie gzip erkenen
  • “On the fly anlyse”. Datei offnen halten und beim hinzukommen neuer Daten diese weiter anlysieren. Praktisch bei laufenden pcap files