Hash-Knacken und die SAP-Landschaft

Zuletzt aktualisiert: 19.12 .2025
Einführung in das Knacken von Hash-Werten
Fazit: SAP-Systeme legen häufig großen Wert auf Abwärtskompatibilität, was dazu führt, dass neben stärkeren, modernen Standards auch schwache, leicht zu knackende Passwort-Hashes (wie beispielsweise das MD5-basierte CODVN B) gespeichert werden. Angreifer nutzen dies aus, indem sie diese veralteten Hashes aus Datenbanktabellen wie USR02 und USH02 die Zugangsdaten von Benutzern zu kompromittieren – selbst wenn der Benutzer glaubt, ein sicheres Passwort zu haben.
Die Lösung: Um dieser Bedrohung entgegenzuwirken, dürfen sich Sicherheitsteams nicht nur auf sichere Passwörter verlassen, sondern müssen ihre Datenbank aktiv bereinigen. Dazu muss der Profilparameter login/password_downwards_compatibility um die Erzeugung schwacher Hashwerte zu deaktivieren und bereits vorhandene veraltete Hashwerte aus dem System zu entfernen.
Passwortspeicherung in SAP NetWeaver ABAP
SAP-Systeme erzeugen und speichern je nach Konfiguration verschiedene Arten und Versionen von Hash-Werten. Darüber hinaus können veraltete und unsichere Werte aus Gründen der Abwärtskompatibilität beibehalten werden. Dies ist wichtig, da je nach Konfigurationsparametern schwache Hash-Werte in der SAP-Systemdatenbank gespeichert sein können, die es einem Angreifer erleichtern, an äußerst kritische Informationen über die Anmeldedaten des Benutzers zu gelangen.
Datenbanktabellen
SAP NetWeaver ABAP speichert Passwörter hauptsächlich in der Datenbanktabelle USR02 und bewahrt zudem historische Benutzerdaten in den Tabellen USH02, USH02_ARC_TMP und nicht zuletzt in der Tabelle USRPWDHISTORY auf.
Obwohl USR02 die aktiven Passwörter enthält, kann die Analyse aller Hash-Werte Hinweise oder Teilpasswörter liefern, die dazu beitragen können, Testdaten zu variieren oder ein bestehendes Wörterbuch zu verbessern.
Hash-Funktionen und Formate
SAP-Systeme verfügen über verschiedene Mechanismen zur Erzeugung von Hash-Werten, und je nach Konfiguration der Profilparameter können mehrere Werte gespeichert werden.
Das Feld CODVN (Code Version of Password Hash Algorithm) in der Tabelle USR02 gibt den für einen bestimmten Eintrag aktiven Algorithmus an. Die möglichen Werte und Hash-Verfahren sind:
| CODVN-Wert | Beschreibung |
| B | MD5-basierte Funktion, begrenzt auf 8 Großbuchstaben in ASCII-Kodierung |
| D | MD5-basierte Funktion, begrenzt auf 8 Großbuchstaben, UTF-8-kodiert |
| F | SHA1-basierte Funktion mit festem SALT, 40 Zeichen, UTF-8-kodiert |
| H | SHA1-basierte Funktion mit zufälligem SALT, 40 Zeichen, UTF-8-kodiert |
Jeder einzelne Hash-Wert verfügt in den oben genannten Tabellen über eine eigene Spalte, und je nach Konfiguration des SAP-Systems können mehrere Hashes nebeneinander existieren und validiert werden.
Für jede Tabelle wird der CODVN-Wert „B“/„D“ in der Spalte „BCODE“ gespeichert, der CODVN-Wert „F“ in der Spalte „PASSCODE“ und der CODVN-Wert „H“ in der Spalte „PWDSALTEDHASH“.
Zwei weitere mögliche CODVN-Werte sind „G“ und „I“, was im Wesentlichen bedeutet, dass mehrere Hashes generiert und gespeichert werden. CODVN „G“ erzeugt die Hashes „F“ und „B“, während CODVN „I“ die Hashes „H“, „F“ und „B“ erzeugt.
Die Passwort-Hashes, die bei der Anmeldung des Benutzers generiert, gespeichert und überprüft werden, werden über den Profilparameter „login/password_downwards_compatibility“ gesteuert (siehe https://help.sap.com/doc/saphelp_nw74/7.4.16/en-us/4a/c3f18f8c352470e10000000a42189c/frameset.htm für weitere Informationen zu diesem Parameter).
Passwort-Cracking in SAP-Systemen
Um Passwörter knacken zu können, müssen wir zunächst an die Passwort-Hashes gelangen. Wenn wir direkten Zugriff auf die Datenbank haben, ist dies ein Kinderspiel, doch in SAP-Systemen stehen uns andere Möglichkeiten zur Verfügung.
Ermittlung von Hashes in SAP-Systemen
Wenn wir keinen direkten Zugriff auf die Datenbank haben, ist es möglich, die Passwort-Hashes über bestimmte Transaktionen oder Remote-Funktionsaufrufe (RFC) abzurufen.
Nützliche Transaktionscodes zum Exportieren von Datenbankdatensätzen sind SE16 und DBACOCKPIT; beide Transaktionen ermöglichen es, Datenbanktabellen zu durchsuchen und vollständige Werte zu extrahieren.

Falls diese Transaktionen nicht verfügbar sind, kann die RFC-Funktion RFC_READ_TABLE Teil-Hashes bereitstellen. Diese Methode liefert zwar nicht die vollständigen Hash-Werte, doch einige Tools können diese unvollständigen Werte nutzen, um gewisse Ergebnisse zu erzielen. Es ist außerdem wichtig zu betonen, dass diese RFC-Funktion remote-fähig ist, was bedeutet, dass sie aus der Ferne ausgeführt werden kann.
Das folgende Bild zeigt ein Beispiel für den abgerufenen Teilwert des vorherigen Hashwerts.

Tools zum Knacken von Passwörtern und Empfehlungen
Das Knacken von Passwörtern ermöglicht die Wiederherstellung von Passwörtern, und aufgrund der Eigenschaften von Hash-Funktionen ist die einzige Möglichkeit, diese Aufgabe zu bewältigen, das Ausprobieren aller möglichen Werte. Dies kann erreicht werden, indem man reinen jede Länge und jedes Zeichen durchprobiert – was nicht die leistungsstärkste Option ist –, oder indem man eine vorab erstellte Wortliste oder Rainbow-Tabellen verwendet, bei denen es sich im Grunde (und vereinfacht ausgedrückt) um eine vorab berechnete Liste von Hash-Werten und dem dazugehörigen Klartext handelt; Rainbow-Tabellen sind jedoch keine gültige Wahl, wenn bei der Hash-Berechnung zufällige Salts verwendet werden.
Es kann eine Kombination dieser Techniken verwendet werden, indem Wortlisten mit Werten verknüpft werden oder die Wörter anhand von Regeln in neue Werte umgewandelt werden.
Es ist wichtig zu erwähnen, dass der Erfolg dieses Verfahrens hauptsächlich von der Erstellung der Wortliste und der Regelsätze abhängt. Die Kenntnis typischer Passwörter oder von Begriffen, die mit der Organisation in Verbindung stehen, kann zu einer effizienteren Lösung dieser Aufgabe führen.
Schwache oder unvollständige Hashwerte können zu ungenauen oder veralteten Ergebnissen führen. Diese Ergebnisse können Hinweise auf den Passwortbereich liefern. Um ein konkretes Beispiel dafür zu nennen: Stellen Sie sich vor, ein Benutzer hat das Passwort „Password1234“. Wenn CODVN-B-Hashes generiert werden, lässt sich das Passwort zwar viel schneller knacken, das Ergebnis ist jedoch „PASSWORD“ statt des tatsächlichen Benutzerpassworts. Dies bietet zumindest einen guten Ausgangspunkt, um mit der Erstellung des Wörterbuchs und der Regeln zu beginnen, mit denen stärkere und aktive Hashes getestet werden können.
Derzeit gibt es zwei de facto etablierte Tools, mit denen diese Passwortwiederherstellung durchgeführt werden kann; im Folgenden werden wir ihre Verwendung veranschaulichen. Diese Tools sind JohnTheRipper und Hashcat.
SAP-System-Hashes mit JohnTheRipper knacken
JohnTheRipper bietet mehrere Versionen an, wobei die Jumbo-Version die beste Wahl ist, wenn man von einem SAP-System generierte Hashes knacken möchte, da sie auch einige Skripte zur Formatierung von Eingabedateien enthält, wie beispielsweise „sap2john.pl“, das erklärt, wie man die Hashes als Tabellenkalkulationsdatei herunterlädt und in das vom John-Binärprogramm erwartete Format konvertiert.
The format required by older versions of JohnTheRipper is <username><space-padding-to-40>$<hash> for CODVN B/D/F and only the hash for CODVN H, but newer versions accept the input file without space padding up to 40.
Die folgenden Befehle müssen ausgeführt werden, um den Wiederherstellungsprozess zu starten:
| Für CODVN Bjohn–format=sapb –wordlist=wordlist_file hashes_file Für CODVN Fjohn–format=sapg –wordlist=wordlist_file hashes_file Für CODVN Hjohn–format=saph –wordlist=wordlist_file hashes_file |
SAP-System-Hashes mit Hashcat knacken
Mit Hashcat lassen sich nicht nur vollständige Hashes knacken, sondern auch Teil-Hashes, die über RFC_READ_TABLE abgerufen wurden.
For CODVN B/D/F the file format required is <username>$<hash>, for CODVN H only the hash is required.
Hashcat kann in verschiedenen Angriffsmodi ausgeführt werden. Der einfachste Modus ist der Wortlistenmodus, bei dem im Wesentlichen die aus dieser Liste generierten Hashes mit denen aus der Datenbank abgeglichen werden. Es stehen jedoch auch andere Modi zur Verfügung, wie beispielsweise die Brute-Force-Methode für jedes einzelne Zeichen oder die Kombination von Wortlisten mit Regeln.
Zur Veranschaulichung kann Hashcat wie folgt ausgeführt werden, um zu versuchen, Passwörter anhand von Wortlisten wiederherzustellen:
| Für CODVN: hashcat-a 0 -m 7700 hashes_file wordlist_file Für CODVN: hashcat-a 0 -m 7800 hashes_file wordlist_file Für CODVN B mit Teil-Hash aus RFC_READ_TABLE: hashcat-a 0 -m 7701 hashes_file wordlist_file Für CODVN F mit Teil-Hash aus RFC_READ_TABLEhashcat-a 0 -m 7801 hashes_file wordlist_file Für CODVN Hhashcat-a 0 -m 10300 hashes_file wordlist_file |
Andere Methoden wie Brute-Force-Angriffe oder regelbasierte Ansätze können sehr langsam sein, wenn ihnen genaue Definitionen fehlen, oder sie erfordern die Erstellung von Regelsätzen, die ohne Kenntnisse des Passwortkontexts suboptimal und erfolglos sein können.
Schlussfolgerungen und Empfehlungen
SAP-Systeme können je nach Konfiguration verschiedene Hash-Varianten erzeugen, von denen einige heute als schwach und leicht zu knacken gelten.
Je nach Konfiguration der Profilparameter können diese herabgestuften Passwörter bei einem Anmeldeversuch als gültig angesehen werden, sofern die Abwärtskompatibilität aktiviert ist.
Wenn schwache Hashwerte nicht überprüft werden, können die Ergebnisse Hinweise auf echte Passwörter liefern, die zur Verbesserung der Wortlisten oder Regeln beitragen könnten.
Onapsis empfiehlt dringend, die Abwärtskompatibilität zu deaktivieren und die schwachen Hash-Werte in allen oben genannten Tabellen zu entfernen.
Insgesamt ist das Hashing nicht nur aus Sicht eines Angreifers ein interessantes Verfahren, sondern es kann auch Informationssicherheitsteams dabei helfen, die Wiederverwendung von Passwörtern oder bekannte Passwörter zu erkennen und entsprechende Maßnahmen zu ergreifen.
Häufig gestellte Fragen (FAQ)
Wo speichert SAP Passwort-Hashes?
SAP NetWeaver ABAP speichert aktive Passwort-Hashes in erster Linie in der Datenbanktabelle USR02. Historische Passwortdaten – auf die Angreifer ebenfalls abzielen können – werden jedoch in USH02, USH02_ARC_TMPund USRPWDHISTORY.
Was macht bestimmte SAP-Hashes leichter zu knacken?
SAP verwendet verschiedene „Code-Versionen“ (CODVN) zur Hash-Erstellung von Passwörtern. Ältere Versionen wie CODVN B sind äußerst anfällig, da sie auf 8 Zeichen begrenzt sind, in Großbuchstaben umgewandelt werden und den MD5-Algorithmus verwenden. Ist ein System auf Abwärtskompatibilität ausgelegt, speichert es diesen schwachen Hash neben einem stärkeren (wie CODVN F oder H). Angreifer zielen gezielt auf den CODVN-B-Hash ab, da dieser mit Brute-Force-Angriffen leicht zu knacken ist.
Welches Risiko birgt die „Abwärtskompatibilität“?
Der Profilparameter login/password_downwards_compatibility Legt fest, ob SAP für ältere Mandanten Legacy-Hashes generiert. Ist diese Option aktiviert, erzeugt selbst ein komplexes Passwort wie „Password1234“ einen schwachen CODVN-B-Hash, der dem Wert „PASSWORD“ entspricht. Das Knacken dieses schwachen Hashes verschafft dem Angreifer einen gültigen Einstiegspunkt, wodurch die Stärke des ursprünglichen Passworts umgangen wird.
Kann ich Hashes knacken, ohne vollen Zugriff auf die Datenbank zu haben?
Ja. Auch ohne direkten Datenbankzugriff können Angreifer (oder Prüfer) den Remote Function Call nutzen RFC_READ_TABLE um Teil-Hashwerte zu extrahieren. Obwohl diese Werte unvollständig sind, verfügen Tools wie Hashcat über spezielle Modi (z. B. -m 7701 für den Teil-CODVN B), der darauf ausgelegt ist, diese zu knacken.
Welche Tools eignen sich am besten, um die Sicherheit von SAP-Passwörtern zu überprüfen?
Die beiden branchenüblichen Werkzeuge sind JohnTheRipper (Jumbo-Version) und Hashcat.
JohnTheRipper eignet sich hervorragend zum Formatieren von Eingabedateien mithilfe von Skripten wie sap2john.pl.
Hashcat ist äußerst effektiv beim Knacken sowohl vollständiger als auch partieller Hashes, die über RFC abgerufen wurden.
