
Python3-Dienstprogramm zum Erstellen von ZIP-Dateien, die zusätzliche Daten für die spätere Extraktion einschmuggeln.
Dieses Python-Dienstprogramm erstellt Zip-Dateien, die zusätzliche Daten enthalten, die in die Dateistruktur eingebettet sind. Diese zusätzlichen Daten sind beim Untersuchen oder Entpacken der Zip-Datei nicht sichtbar bzw. werden nicht angezeigt, können aber über eine Windows-Verknüpfungsdatei (LNK) innerhalb der Zip-Datei mit PowerShell abgerufen werden.
Das Skript benötigt einen Namen für Ihre Zip-Datei / Verknüpfungsdatei / geschmuggelte Datei sowie die Datei/die Daten, die Sie einschmuggeln möchten:
python3 zip_smuggle.py important_data /home/ubuntu/zip_smuggling/testdata.txt
Dies erzeugt eine important_data.zip im Skriptordner. Übertragen Sie diese Zip-Datei auf einen Windows-Rechner, doppelklicken Sie in die Zip-Datei oder extrahieren Sie sie, und klicken Sie dann auf die darin enthaltene Verknüpfung. Die zum Einschmuggeln übergebenen Daten werden aus der Zip-Datei abgerufen, auf der Festplatte gespeichert und als Textdatei geöffnet.
Dieses Projekt nutzt ein älteres Projekt von mir, lnk_generator, mit dem Sie mithilfe einer voreingestellten Vorlage beliebige Verknüpfungsdateien erstellen können. Schauen Sie sich dieses Repository an, um weitere Details / vollständigere Skripte und Hinweise zur Erstellung von Verknüpfungsdateien zu erhalten.
Die geschmuggelten Daten werden zwischen den Daten der im Archiv enthaltenen Dateien und dem zentralen Verzeichnis des Archivs platziert, das sozusagen als Inhaltsverzeichnis der Zip-Datei dient. Dieses zentrale Verzeichnis enthält Offsets der Dateien im Archiv. Obwohl unsere injizierten Daten in der Zip-Datei vorhanden sind, werden sie vom zentralen Verzeichnis nicht verfolgt oder indexiert und können daher nicht einfach angezeigt oder extrahiert werden. Das Python-Skript findet den Offset des "End of Central Directory" in der Zip-Datei und aktualisiert ihn mit der neuen Position des zentralen Verzeichnisses, nachdem die geschmuggelten Daten injiziert wurden. Die folgende Grafik zeigt links die allgemeine Struktur einer Zip-Datei und rechts, wo unsere Daten eingefügt wurden:

Die geschmuggelten Daten werden mit einem PowerShell-Befehl extrahiert:
powershell.exe -w 1 -c "$name = \"testing\";$file = (get-childitem -Pa $Env:USERPROFILE -Re -Inc *$name.zip).fullname;$bytes=[System.IO.File]::ReadAllBytes($file);$size = (0..($bytes.Length - 4) | Where-Object {$bytes[$_] -eq 0x55 -and $bytes[$_+1] -eq 0x55 -and $bytes[$_+2] -eq 0x55 -and $bytes[$_+3] -eq 0x55 })[0] + 4;$length=12;$chunk=$bytes[$size..($size+$length-1)];$out = \"$Env:TEMP\$name.txt\";[System.IO.File]::WriteAllBytes($out,$chunk);Invoke-Item $out"
Dieser Befehl:
0x55/0x55/0x55/0x55), die den Beginn der geschmuggelten Daten markiertpayload_name.txt auf die Festplatte.txt-DateienDieser POC wurde bewusst allgemein gehalten / die Waffenisierung zur Verwendung anderer Dateitypen usw. bleibt dem Leser als Übung überlassen.