Experten sprechen gerne darüber, dass gerade kurze Passwörter mit Hochleistungshardware wie sehr schnellen Grafikkarten errechnet werden können. Im folgenden Artikel versuchen wir mit möglichst einfachen Erklärungen das Knacken von Passwörtern zu beschreiben.
Unser Disclaimer: Passwort-Hacken und unbefugtes Eindringen in IT-Systeme ist strafbar. Unsere Anleitung verdeutlicht die Wichtigkeit von starken Passwörtern und stellt keine Anleitung für das Hacken von Passwort-Hashes darstellen.
Was ist ein Brute-Force Angriff?
Beim sogenannten Brute-Force Angriff wird mit besonders schneller Hardware eine Vielzahl an Passwörter generiert und diese mit einem existierenden Passwort verglichen. Hierbei wird jedoch nicht versucht sich mit dem Passwort beim Zielsystem anzumelden, da Anwendungen eine solche Anzahl an Anmeldeversuchen nicht zulassen würden. Brute-Force Angriffe werden daher nur gegen gestohlene Passwort-Hashes durchgeführt.
Warum speichert man Passwörter als Hash?
Moderne Anwendungen speichern Passwörter nicht in Klartext in den Datenbanken, sondern sogenannte Hashes der Passwörter. Historisch waren das MD5 Hashes, ein sehr altes Verfahren entwickelt im Jahr 1991 wo aus einem beliebig langen Passwort ein 128-Bit bzw. 16 Zeichen langer Code abgeleitet wird. Dieser Code wird in der Datenbank statt dem Klartext-Passwort gespeichert und bei der Benutzeranmeldung wird wieder aus dem Klartext-Passwort der MD5 Hash gebildet und mit dem gespeicherten Hash verglichen.
MD5 gilt schon seit vielen Jahren als unsicher, daher wurde der Passwortvergleich viele Jahr mit dem Nachfolgealgorithmus SHA‑1 berechnet. SHA‑1 erzeugt einen 160-Bit bzw. 20 Zeichen Hash-Code. Auch SHA‑1 gilt heute als nicht mehr sicher.
Als Nachfolger zu SHA‑1 gilt SHA-256 mit 256-Bit bzw. 32 Zeichen oder bcrypt ein rechenaufwendiger Hashing-Algorithmus, der typischerweise einen 480-Bit bzw. 60 Zeichen Hash-Code erzeugt.
Die Berechnungen im Folgenden basieren auf dem modernen bcrypt Passwort-Hashing.
Hier ein Beispiel in Python wie aus einem Passwort ein Hash wird.
#!/usr/bin/python3
import bcrypt
# Passwort eingeben
password = input(“Geben Sie das Passwort ein: ”).encode(‘utf‑8′)
# Salt generieren
salt = bcrypt.gensalt()
# Bcrypt-Hash erzeugen
hashed_password = bcrypt.hashpw(password, salt)
# Ausgabe
print(f“Salt: {salt}”)
print(f“Gehashter Passwort: {hashed_password}”)
# das gehashte Passwort wird üblicherweise in einer Datenbank gespeichert und bei jeder Passwortanmeldung mit dem abermals errechneten Hash verglichen
Hashing-Vergleich ist leicht, aber wie kommen Angreifer zu den Passwort-Hashes?
Eine Art wie Cyberangreifer zu den Passwörtern von Personen kommen ist Phishing. Hier geben ausgetrickste Personen ihre Benutzerkennung und das zugehörige Passwort auf einer gefälschten Webseite ein. Da Angreifer beim Phishing das Klartext-Passwort erfahren, ist natürlich kein Brute-Force Angriff erforderlich.
Typischerweise erfahren Cyberangreifer aber den Passwort-Hash aus einer gehackten Datenbank oder aus einem gestohlenen Backup. Dies muss nicht unbedingt das Zielsystem sein, dass gehackt wird, um an die Passwort-Hashes von Personen zu gelangen, oft verwenden wir Menschen dieselben Passwörter bei vielen Anwendungen und auch in der Cloud. Gelingt es dann ein großes Portal wie eine große Shopping-Plattform oder ein Soziales Netzwerk zu hacken, fallen Millionen von Passwort-Hashes in die Hände der Angreifer.
Von besonders einfachen Passwörtern wie „admin1234“ oder „passwort!“ kennen die Cyberschurken die Hashes bereits und können sofort einen Angriff auf das Zielsystem durchführen. Unbekannte Passwort-Hashes müssen zuerst über einen Brute-Force Angriff geknackt werden, wobei der Angreifer durch die Attacke das Klartext-Passwort identifiziert.
Was bedeutet die Passwort-Entropie?
Jedem ist klar, dass sehr kurze Passwörter schnell errechnet werden können und lange Passwörter lange bzw. sehr lange dauern zu errechnen. Der Schlüssel dazu lautet „Entropie“.
Je höher die Passwort-Entropie ist, desto länger dauert eine Brute-Force-Attacke. Die Entropie errechnet sich mit der folgenden Formel:
Wobei E für die Entropie steht, R für die Menge an möglichen Zeichen (A‑Z, a‑z, 0–9, Sonderzeichen) und L für die Anzahl der Zeichen des Passwortes.
Für ein 8 Zeichen langes Passwort mit einer Kombination aus 62 möglichen Zeichen (entspricht a‑z, A‑Z und 0–9) ist die Entropie:
E = log2(62^8) = 47,6
Das entspricht einer theoretischen Kombination aus 218.340.105.584.896 als 218 Billionen Passwörtern. Unmöglich zu errechnen? Nein, denn es dauert nur ein paar Monate mit 12 starken RTX 4090 Grafikkarten.
Tipp: eine Entropie von 60 gilt heute als sicher. Das ist beispielsweise ein Passwort mit 10 Zeichen bestehend aus a‑z, A‑Z und 0–9 und 2 Sonderzeichen.
Wie läuft das Passwort-Hacken ab?
An dieser Stelle einen großen Dank an Hive Systems, die seit mehreren Jahren Brute-Force Kalkulationen errechnen und auch Testsysteme kaufen um in einem kleineren Rahmen ihre Berechnungen zu verproben.
Damit die Zeiten für die Passwort-Attacke möglichst realistisch sind, basieren die Berechnungen auf handelsüblicher Hardware, die mit einem mittleren Budget angeschafft werden können:
- 12 Stk. Intel oder AMD PC
- 12 Stk. NVIDIA RTX 4090 Grafikkarte
- Kalkulierte Hardwareinvestition: rd. € 27.600
Auf dem Hacking-Cluster läuft eine spezielle Open Source Hacking-Software namens „hashcat“. Mit der Software wird sichergestellt, dass jeder der 12 PCs eine andere Passwortkombination untersucht.
Hardware-Tipp: Leider ist die RTX 4090 Grafikkarte vom Markt genommen worden, es kann sein, das in den RTX 5080 und RTX 5090 die fürs Passwort-Cracking benötigen Funktionen gedrosselt sind.
Der Faktor Energiebedarf
Kurz gespoilert: der Hack eines 8 Zeichen Passwortes mit den Zeichen a‑z und A‑Z dauert rd. 8 Monate aus einem bekannten Hash zu errechnen. Jeder der 12 beteiligten PCs verschlingt pro Monat rd. 330 kWh multipliziert mit einem günstigen Preis von 0,12€ pro kWh sind das rd. 40 € Stromkosten pro PC pro Monat. Bei 12 PCs und 8 Monaten also rd. 3.840 €.
Bei einem Ransomware-Angriff oder einem Cyber-Betrug eines größeren Unternehmens verdienen Cyberschurken oft mehrere Millionen Euro, die knapp 4000 € sind also kalkulatorisch eine sehr gute Investition für Kriminelle, leider!
Sind lange Passwörter nun sicherer gegenüber einem Brute-Force Angriff?
In der folgenden Tabelle die Hive Systems errechnet hat sieht man die Grenzen eines Brute-Force Angriffes:
Zeichenlänge L des Passwortes | nur Zahlen, R=10 | nur Kleinbuchstaben, R=26 | Kleinbuchstaben, Großbuchstaben, Zahlen, R=62 | Klein- / Großbuchstaben, Zahlen, Sonderzeichen, R=70 |
---|---|---|---|---|
6 Zeichen | Sofort | 2 Minuten | 6 Stunden | 12 Stunden |
8 Zeichen | 37 Sekunden | 22 Stunden | 3 Jahre | 7 Jahre |
10 Zeichen | 1 Stunde | 2 Jahre | 9000 Jahre | 33000 Jahre |
14 Zeichen | 1 Jahr | 766000 Jahre | 147 Mrd. Jahre | 805 Mrd. Jahre |
Bei einem 10 Zeichen Passwort klingen 33000 Jahr sicher, ABER…
Leider gelingt uns Menschen nicht perfekte Passwörter aus dem großen Zeichenvorrat zu erstellen und sich diese auch zu merken. Forscher zeigen auf, dass die Mehrzahl der Menschen dem folgendem typischen Passwortmuster folgen:
- Der erste Teil des Passwortes ist ein natürliches Wort mit dem ersten Buchstaben als Großbuchstabe oder zwei kurze Wörter
- Teilweise werden bei dem ersten Teil dem Wort einzelne Buchstaben ersetzt, in der Regel die Zeichen E auf 3, O auf 0 und S auf 5.
- Hinter den Zeichen folgen dann ein oder mehrere Zahlen
- Zum Abschluss folgt dann ein oder zwei Sonderzeichen, bevorzugt aber Sonderzeichen die leicht mit den Fingern einzugeben sind wie ! ? $ +
Ein typisches Beispiel eines gültigen Passwortes mit 9 Zeichen wäre: Ott02024!
Genau diese menschliche Vorgangsweise sich merkbare Passwörter zu erstellen, nutzen auch die Cyberangreifer und probieren zuerst Millionen von natürlichen Wörtern in Kombination mit Jahreszahlen und wenigen Sonderzeichen. Sofern ein Passwort diesen Regeln entspricht, ist dieses in wenigen Minuten anstatt von Jahren geknackt.
Ein weiterer Ansatz die Dauer für ein Passwort-Knacken zu reduzieren ist sich die Hash-Werte vieler gängiger Passwortkombinationen vorzurechnen, diese in einer indizierten Datenbank zu speichern und dann nur mehr die zu knackenden Hashes in der Datenbank zu suchen. Solche sogenannten Rainbow Tables gibt es kostenfrei zum Download und wenn man mehrere Hundert BenutzerInnen Passwort-Hashes damit vergleicht, findet man in der Regel sofort ein schwaches Passwort, dass sofort ausgenutzt werden kann.
Die dritte Methode die Anzahl der Jahre zu reduzieren ist, anstatt von 12 PCs mit starken Grafikkarten einfach ein Vielfaches an Hardware zu betreiben. Denken wir an 12 x 12 PCs also 144 PCs, dann werden aus 7 Jahren für ein komplexes 8 Zeichen Passwort nur mehr 7 Monate für einen Hack.
Noch effizienter ist, wenn man nicht eigene Rechenleistung nutzt, sondern verteilte Rechenleistung entweder über ein großes Bot-Netzwerk, über tausende Cloud-Server oder über speziell dafür entwickelte Supercomputer. Durch die massiv gesteigerte Rechenleistung sinkt die benötigte Zeit möglicherweise auf wenige Tage für den gleichen Angriff.
Passwortsicherheit — das Resümee
Passwörter werden immer eine Gefahr darstellen, minimieren kann man die Gefahr unter anderem durch:
- Schulung der MitarbeiterInnen, das betrieblich genutzte Passwörter nicht privat und in der Cloud wiederverwendet werden
- Einsatz von Passwort-Generatoren und Verzicht auf natürliche Worte innerhalb von Passwörtern
- Einsatz einer Passwort-Tresor Lösung, mit der Lösung können auch deutlich längere und komplexe, generierte Passwörter genutzt werden.
- Erhöhung der Passwortlänge auf 10 oder besser 12 Zeichen
- Verpflichtender Einsatz von Multi-Faktor-Authentifizierung
- Strategischer Wechsel von Passwort-Authentifizierung zu einer kryptographischen Authentifizierung, z.B. über FIDO2 oder Passkeys