Passwort eines Programms mit ltrace herausfinden?
Hallo, ich versuche mit ltrace das Passwort eines Programms herauszufinden, die das Passwort als Parameter bekommt. Leider wird mir direkt der Zugriff auf das Programm verwährt. Angeblich soll es aber mit ltrace möglich sein. Ich habe auch schon mittels des gdb(?) versucht bestimmte Register auszulesen, da ich im Assembler Code eine Stringcmp Funktion gefunden habe. Zu finden war aber leider nichts, da ich in dieser Hinsicht nicht wirklich bewandert bin.
2 Antworten
Ich hatte Dir bereits erklärt, daß wenn Du ltrace nutzen möchtest, das Executeable auf der richtigen uARCH auszuführen ist.
Dir wird auch nicht der Zugriff verwehrt, vielmehr kann Dein OS das Executeable nicht ausführen, gemäß Fehlermeldung.
Ein executeable-Packer verschlüsselt erstmal gar nicht, der komprimiert letztlich nur das Executeable.
Und das kann man natürlich entpacken, bzw. sich auch im entpackten Zustand ansehen.
Ist das Executeable aber wirklich verschlüsselt und der Entschlüsselungsalgo fragt nach einem Passwort, das eigentlich der Schlüssel ist, dann wirds natürlich dreckig und Du mußt bruteforcen, da bin ich ganz bei Dir.
Aber aufgrund der ursächlichen Frage (ltrace sei eine Vorgabe), gehe ich von einem zu akademischen Zwecken entsprechend gestalteten Eecuteable aus.
Vergiss Dein vorhaben. Bei Executable Verschlüsselung/Kompression wird kein Passwort gespeichert.
Eine Verschlüsselte Ausführbare Datei besteht (egal unter welchem Betriebssystem) aus einem Loader und dem verschlüsselten Programm. Der Loader entschlüsselt basierend auf dem Passwort den Angehängten Programmcode und prüft den entschlüsselten Code auf einen validen Header.
- unter Linux: https://linux-audit.com/elf-binaries-on-linux-understanding-and-analysis/#the-anatomy-of-an-elf-file
- unter Window: https://de.wikipedia.org/wiki/MZ-Datei#MZ-Header
In der Regel genügt bereits die Überprüfung der "magic"-Kennung.
Entspricht der jeweilige Header nicht den dem erwarteten Format, War die Entschlüsselung wohl nicht erfolgreich und es gibt eine Fehlermeldung.
Die einzige Methode um ein derartiges Passwort zu ermitteln ist "BruteForce" mögliche in Frage kommende Passwörter auszuprobieren.
Kein vernünftige Verschüsselungsprogramm schreibt das Passwort in die Verschlüsselte Datei😏
Wenn das Executable ohnehin verschlüsselt ist kann er es vergessen.
UPX oder andere executable-Packer speichern keine Passwörter. Auch wenn ein solches Programm im Debugger startet, wird dieses lediglich versuchen es mit dem Passwort zu entschlüsseln/dekomprimieren und anschließend den Erfolg prüfen...