Ausführbare Datei in Datenstruktur

456
Mr.Robot

Letztes Jahr bin ich auf ein Problem mit meinem kali 2.0 auf VirtualBox gestoßen. Um es kurz zu machen, ich konnte nicht mehr in den Grafikmodus booten, so dass der Zugriff auf das Internet zumindest für mich praktisch unmöglich war.

Ich wollte meine Dateien auf meinem Hauptcomputer sichern und dann die virtuelle Maschine formatieren. Ich konnte keine SSH von meiner VM auf meinen Windows-PC und auch nicht umgekehrt. Also habe ich eine metasploitable "Dummy" -Maschine eingerichtet, die ich mit meinem Kali im CLI-Modus hineingehackt habe. Ich habe msfvenom verwendet, um eine einfache reverse_tcp-Meterpreter-Nutzlast zu erstellen, meine aktuelle Meterpreter-Sitzung auf dem metasploablen Rechner zu verwenden und die Nutzlast darauf hochzuladen. Ich konnte ssh (mit Putty) von meinem Windows-Rechner zu der metasploitable-VM machen, aber ich konnte keinen Weg finden, die Nutzlast vom Metasploitable auf meinen Windows-PC zu übertragen.

Also habe ich hexdump verwendet, um den Inhalt dieser Exe-Datei zu sehen, und habe sie in meine Zwischenablage in Windows kopiert (via Putty). Ich schrieb dann etwas C ++ - Code, um die Hexdump-Daten als Texteingabe zu übernehmen, zu analysieren und in ein Big-Byte-Array umzuwandeln, das ich dann in eine Datei (im Binärmodus) einfüge. Ich änderte dann die Dateierweiterung in .exe, richtete den Exploit-Handler mit meiner Kali-Maschine ein und führte die .exe auf meinem Windows-Rechner (Antivirus und Firewall aus) aus, in der Hoffnung, eine Meterpreter-Sitzung zu erhalten. Es ist jedoch nichts passiert. Ich habe gerade die Fehlermeldung "Inkompatibles Format" (oder ähnliches) erhalten, als ich versuchte, die EXE-Datei unter Windows auszuführen.

Ein paar Wochen später gelang es mir, die Kali-Maschine in einen sicheren Modus zu booten, in dem ich den Grafikmodus verwenden konnte. Alle meine Dateien waren dort, sogar die generierte Nutzlast. Anstatt ALLE Dateien über das Internet zu senden, gab ich der Nutzlast eine weitere Chance. Ich habe es auf eine kostenlose Datei-Hosting-Seite hochgeladen und auf meinen Windows-PC heruntergeladen. Der Virenschutz und die Firewall wurden deaktiviert, der Sitzungshandler wurde eingerichtet und ausgeführt. Und da war es, ich hatte endlich eine Sitzung.

Ich habe den Befehl meterpreter upload verwendet, um alle meine Kali-Dateien auf meinen Windows-PC hochzuladen und dann zu schließen. Ich war jedoch neugierig, warum die Nutzlast diesmal funktioniert hat. Deshalb habe ich mit der Windows-Version von MidnightCommander (einer Art schickem Hexdump) die Bytes der Nutzlast, die ich über die kostenlose Datei-Hosting-Seite heruntergeladen habe, und die von mir verglichen hatte aus der Hexdump-Ausgabe konvertiert. Sie waren genau das gleiche! Und doch arbeitete einer von ihnen und der andere nicht. Und ja, ich habe sie dann sowohl im CLI- als auch im Grafikmodus ausprobiert, und trotzdem war der heruntergeladene der einzige, der in BEIDEN Fällen funktionierte.

Meine einzige Theorie ist, dass es einige wichtige Metadaten gegeben haben muss, Dateiressourcen, die in Hexdump nicht sichtbar sind, da diese Daten nicht Teil der RAW-Datei selbst sind, jedoch für ihre korrekte Ausführung kritisch erschienen.

Ich weiß, dass Sie mit Programmen wie ResourceHacker auf diese Daten zugreifen können.

Wie können Sie eine ausführbare Datei in ein Programm laden, das in einer beliebigen Sprache geschrieben ist, sodass Sie es in ein Bytearray oder, falls erforderlich, in eine komplexere Datenstruktur einfügen können, die durch Text (z. B. JSON) dargestellt werden kann, und diese dann umkehren kann Rohinformationen zurück in genau dieselbe ausführbare Datei?

0

0 Antworten auf die Frage