Die Login-Dateien im Ashley-Madison-Fundus galten bislang als sicher, weil der Anbieter eine sichere Hashfunktion verwendet haben soll. Doch jetzt haben Hacker eine Schwachstelle gefunden, um einen Teil der Passwörter zu knacken.

Hackern ist es gelungen, 11,2 Millionen Klartext-Passwörter aus den Nutzerdaten des Ashley-Madison-Leaks zu extrahieren. Nach dem Hack des Seitensprungportals Ashley Madison im August gab es viele Versuche, die verwendeten Passwörter zu knacken. Doch weil die Macher der Seite bcrypt verwendet haben sollen, gelang dies zunächst nicht.

Ein direkter Angriff auf die vorliegenden bcrypt-Hashes erschien auch der Gruppe Cynosureprime als zu kompliziert. Sie nutzten weitere Informationen aus den Git-Dumps, um ihren Angriff auszuführen. Fündig wurden sie schließlich in der Zusammensetzung der $loginkey-Variable.

Nur MD5 statt bcrypt verwendet

Im Quellcode der Datei amlib_member_create.function.php fand sich in Zeile 70 der Hinweis, dass $loginkey durch einfaches Hashen des kleingeschriebenen Login-Namens und des Passworts gebildet wurde. Verwendet wurde entgegen der Ansage in Zeile 69 des Codes eben nicht bcrypt, sondern nur MD5. Ein Blick in die Historie des Quellcodes verriet den Forschern dann, dass bcrypt erst seit dem 14. Juni 2012 verwendet wird.

Alle vor diesem Datum angelegten Passwörter konnten also durch die Anwendung einer gesalzenen MD5-Funktion geknackt werden. Da zur Umwandlung der Nutzernamen in Kleinbuchstaben das Modul strtolower() verwendet wurde, war die Zeichenkodierung auf die 26 Buchstaben des Alphabets begrenzt. Dies verkleinerte den erforderlichen Rechenaufwand weiter.

Nutzer, die ihre Daten änderten, sind angreifbar

Eine weitere Entdeckung machten die Hacker bei der Untersuchung der Datei AccountProvider.php, die für die generateLoginKey()-Funktion zuständig ist. In den Zeilen 78 und 79 wird hier beschrieben, wie der Wert zustande kommt. Neben dem Benutzernamen und dem Passwort wurden die Email-Adresse und ein gesalzener Hash verwendet. Der gesamte String wurde dann wiederum mit MD5 gehasht. Auch hier wurde bcrypt also nicht durchgehend verwendet: Nicht immer wurde das Passwort vor der Übergabe an die generateLoginKey()-Funktion tatsächlich mit bcrypt gehasht.

Auch der zweite Angriff konnte nicht auf alle Datensätze angewendet werden: Denn generateLoginKey kam nur zum Einsatz, wenn Nutzer Veränderungen an ihren Nutzerdaten vorgenommen, also etwa Passwort oder E-Mail-Adresse geändert hatten.

Daten aus SQL-Datenbank extrahiert

Um die Angriffe durchführen zu können, mussten die angreifbaren Datensätze aus den SQL-Datenbanken extrahiert werden. Um den Rechenaufwand zu reduzieren, entfernten die Hacker alle Login-Daten, die nicht in ihr Angriffsschema passten. Dies war relativ einfach, da Nutzernamen und die tatsächlich mit bcrypt gehashten Passwörter aus vorigen Untersuchungen bekannt waren.

Die durch Berechnung gelösten MD5-Tokens enthielten jedoch noch nicht die Passwörter im Klartext, sondern nur die dekapitalisierten Passwörter. In einem letzten Schritt mussten also alle Zeichen der geknackten Passwörter in Groß- und Kleinschreibung gegen den originalen bcrypt-Hash geprüft werden.

Mit dieser Methode gelang es dem Cynosureprime-Team nach eigenen Angaben, 11.2 Millionen Passwörter innerhalb weniger Tage zu knacken.

Quelle: golem.de
Original Quelle: CynoSure Prime - cynosureprime.blogspot.in