it-swarm.com.de

Passwörter mit PHP gehackt?

Ist dies der richtige Weg, um ein mit PHP gehashtes Passwort zu knacken?

  • Ich habe die Funktion password_hash verwendet, um ein Passwort zu hashen (PHP Version 7.3).

  • Dann habe ich eine Word-Liste mit einem Python -Skript) erstellt. Es ist ungefähr 1 GB groß.

  • Dann habe ich ein PHP Skript erstellt, um diese Word-Liste zu lesen und das Passwort mit password_hash Zu überprüfen.

  • Schließlich habe ich das Skript PHP) mit dem Terminal ausgeführt.

Es funktioniert gut, braucht aber zu viel Zeit, um das Passwort zu knacken. Als Student schreibe ich gerne meine eigenen Skripte und Werkzeuge. Hat jemand eine Idee, wie dies mit besserer Leistung und Effizienz erreicht werden kann?

Ich habe auch nach der Verwendung von Clustern und GPUs zum Knacken von Passwörtern gesucht und bin mir nicht sicher, ob dies helfen könnte.

6
Chamath Viranga

Überblick

Moderne Hashing-Methoden (die password_hash Verwendungen) sind absichtlich langsam, um es unmöglich zu machen, genau das zu tun, was Sie versuchen. Die meisten sind sogar gegen Parallelisierung mit einer GPU beständig.

Wenn Sie also das Durchlaufen einer 1-GB-Kennwortliste mit einem modernen Kennwortalgorithmus beschleunigen möchten, gibt es nur eine Antwort: Es gibt keine Möglichkeit, dies zu tun, ohne das Ganze auf einem gigantischen Computercluster auszuführen. Selbst dann kann ein ausreichend langes Passwort buchstäblich nicht geknackt werden.

Sie können nicht erreichen, was Sie versuchen zu tun.

Die Zahlen

"Sie können das nicht tun" ist die Art von Aussage, die einige harte Zahlen verwenden könnte!

Hashing Rate

Um ein Passwort zu knacken, müssen wir zuerst wissen, wie schnell wir Hashes testen können. Ich leihe mir großzügig ein Beispiel aus dem wirklichen Leben aus, als jemand versuchte, die Passwörter im Ashley Madison Data Dump mit einem Cracking-Rig mit 4 GPUs zu knacken. Dies ist eine weitaus bessere Hardware, als Ihr typischer Heimanwender Zugriff haben wird. In diesem Fall wurde bcrypt so konfiguriert, dass ein Kostenfaktor von 12 (auch bekannt als 4069 Hashing-Runden) verwendet wird, und das 4-GPU-Rig konnte nur 156 Hashes pro Sekunde verwalten. Für einen niedrigeren Kostenfaktor steigt die Hash-Rate schnell an. PHP verwendet standardmäßig 10, was naiv zu einer 4-mal höheren Hash-Rate führen würde. Wir werden zum Spaß aufrunden und so tun, als ob wir es schaffen, 750 Hashes/Sekunde zu erreichen.

Hashes

Als nächstes müssen wir wissen, wie viele Passwörter wir knacken wollen. Verwenden wir einige Beispiele: alle möglichen 4-Zeichen-Passwörter (Zahlen, Buchstaben, 10 Sonderzeichen), alle möglichen 6-Zeichen-Passwörter, alle möglichen 8-Zeichen-Passwörter oder eine mit Passwörtern gefüllte 1-GByte-Datei. So viele Passwörter enthält jede Liste:

  1. Alle 4-stelligen Passwörter: 72^4 = ~27,000,000 Kombinationen
  2. Alle 6-stelligen Passwörter: 72^6 = ~74,000,000,000 Kombinationen
  3. Alle 8-stelligen Passwörter: 72^8 = ~700 trillion Kombinationen
  4. Eine 1-GByte-Datei: ~ 100.000.000 Passwörter (durchschnittlich 10 Byte pro Passwort)

Hashing-Zeit

Wir wissen, wie viele Passwörter wir hashen möchten und wie hoch unsere Hashing-Rate ist (750/s). Jetzt sagt uns die einfache Mathematik, wie lange es dauern wird, diese Listen mit einem erstklassigen Hashing-Algorithmus zu durchlaufen:

  1. Alle 4-stelligen Passwörter: ~ 10 Stunden
  2. Alle 6-stelligen Passwörter: ~ 6 Jahre
  3. Alle 8-stelligen Passwörter: ~ 30.000 Jahre
  4. Eine 1-GB-Datei: ~ 1,5 Tage

Für realistischere Zahlen habe ich die Hash-Rate mit einer der CPUs meines eigenen Computers grob geschätzt und ungefähr 10 Hashes pro Sekunde verwaltet. Verwenden von dieser Hash-Rate:

  1. Alle 4-stelligen Passwörter: ~ 30 Tage
  2. Alle 6-stelligen Passwörter: ~ 450 Jahre
  3. Alle 8-stelligen Passwörter: ~ 2 Millionen Jahre
  4. Eine 1-GB-Datei: ~ 115 Tage

Zusammenfassung

Kaufen Sie sich ein halbes Dutzend hochwertige GPUs, und wenn Sie den Standardkostenfaktor verwenden, können Sie alle möglichen 4-stelligen Passwörter in etwa einem Tag knacken. Versuchen Sie, nur die 6-stelligen Passwörter zu verwenden, und es wird noch Jahre dauern. Ihre 1-GB-Datei, die mit Passwörtern gefüllt ist, ist schwerer zu erraten, aber realistisch gesehen dauert es noch einige Tage, bis sie fertig ist, selbst wenn Ihnen eine Reihe von GPUs helfen.

9
Conor Mancone

Ich mag die Antwort von Conor Mancone sehr. Das einzige, was ich hinzufügen möchte, ist, dass Sie die Effizienz verbessern können, indem Sie zuerst die wahrscheinlichsten Passwörter überprüfen, möglicherweise indem Sie Listen zuvor durchgesickerter Passwörter oder Dinge verwenden, die Sie über das Ziel wissen (z. B. lokale Sportmannschaften).

2
Gethin LW