
Ich habe die Zeichenfolge, die in einer Webanwendung mit MD5-Hashing verwendet wurde, um einen Hash zu ermitteln. Ich habe auch den Hash. Aber der MD5 der Zeichenfolge stimmt nicht mit dem Hash überein, daher gehe ich davon aus, dass ein Salt beteiligt ist. Gibt es Software, die mir bei der Ermittlung des Salts helfen kann?
Antwort1
In Standard-Hashing-Funktionen (z. B. UNIX-Passwörter in /etc/shadow) wird das Salt als Teil des Hashes gespeichert.
Übergeben Sie den gespeicherten Hash-Wert als Salt und Sie sollten das richtige Ergebnis erhalten.
Der gehashte Passwortwert in /etc/shadow ist eigentlich ein durch $ getrennter Datensatz. Wir haben beispielsweise diesen Hash des Passworts „blarg“:
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
Es gibt drei durch $'s getrennte Felder.
- Die Hash-Funktion (in diesem Fall „1“, was MD5 darstellt)
- Das Salz (das ist „KfcI/JTQ“)
- Der Hashwert (der lautet „b5VTf4i9Mnf6QFgLuVZNM0“)
Wenn Sie mkpasswd mehrmals verwenden, ändert sich der Hash.
$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/
$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1
Indem wir jedoch das Salt (also das zweite Feld) aus dem obigen Hash-Wert übergeben, können wir es mit dem ursprünglichen Hash abgleichen:
$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
Sie können auch den gesamten Passwort-Hash übergeben (unter Weglassung der Hash-Funktion).
$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
Unter Linux kann der Hash-Typ in /etc/login.defs gesteuert werden. Seien Sie sehr vorsichtig, wenn Sie dies ändern, da Sie sich sonst vollständig aus dem System aussperren können. Ich empfehle, die Manpage sorgfältig durchzulesen und insbesondere auf die Überschriften MD5_CRYPT_ENAB und ENCRYPT_METHOD zu achten.