Brute-Force-Angriff
Methode um Passwörter oder Verschlüsselungskeys durch systematisches Ausprobieren aller Kombinationen zu knacken. Online-Brute-Force testet Login-Formulare, Offline-Brute-Force knackt gestohlene Hashes. Mitigation: MFA, Account-Lockout, Rate-Limiting, lange Passwörter.
Brute-Force beschreibt den Versuch, ein Passwort, eine PIN oder einen Verschlüsselungsschlüssel durch systematisches Durchprobieren aller möglichen Kombinationen zu ermitteln. Kein Wissen über den Inhalt nötig - nur Rechenleistung und Zeit.
Arten von Brute-Force-Angriffen
Online vs. Offline Brute Force
Online Brute Force:
→ Angriff gegen laufendes System (Login-Formular, RDP, SSH)
→ Begrenzt durch Netzwerklantenz, Account-Lockout, Rate-Limiting
→ Typisch: max. 1.000-10.000 Versuche/Stunde
→ Erkennbar durch Log-Einträge
Offline Brute Force:
→ Gestohlene Passwort-Hashes lokal knacken
→ Keine Verbindung zum Zielsystem nötig
→ Geschwindigkeit: Milliarden Versuche/Sekunde
→ Hashcat auf GPU: 100 Mrd MD5-Hashes/Sekunde!
→ Nicht erkennbar bis Ergebnis genutzt wird
Dictionary Attack
Statt alle Kombinationen: Wörterbuchdateien nutzen
→ RockYou2024: 10 Mrd. reale Passwörter aus Datenlecks
→ Viel effizienter als vollständiger Brute-Force
Beispiel:
bcrypt (rounds=12) mit Passwort "Sommer2023":
Reiner Brute-Force: ~Billionen Jahre
Dictionary + Mutationen (Sommer2023!): Minuten bis Stunden
Rainbow Tables
Vorberechnete Hashtabellen für schnelles Lookup:
Problem mit Rainbow Tables:
→ MD5("password") = immer 5f4dcc3b5aa765d61d8327deb882cf99
→ Tabelle: Hash → Passwort
→ Sehr schnell
Gegenmaßnahme: Salt
→ Zufälliger Salt + Passwort → Hash
→ MD5(salt + "password") = einzigartig
→ Rainbow Tables nutzlos
→ BCRYPT, PBKDF2, Argon2 haben Salt eingebaut
Geschwindigkeiten moderner Hardware
GPU-basiertes Passwort-Knacken (Hashcat, RTX 4090):
MD5 (unsicher!):
164 Milliarden Hashes/Sekunde
8-Zeichen Passwort mit Zahlen+Klein+Groß: < 1 Stunde
SHA1 (unsicher):
60 Milliarden Hashes/Sekunde
bcrypt (rounds=12) (sicher):
~12.000 Hashes/Sekunde
8-Zeichen komplexes Passwort: Milliarden Jahre
Argon2id (sicher):
~1.000 Hashes/Sekunde
Noch sicherer als bcrypt
Passwortlänge vs. Sicherheit
Zeit zum Knacken mit RTX 4090 (MD5, Brute Force):
6 Zeichen lowercase: < 1 Sekunde
8 Zeichen lowercase: ~22 Minuten
8 Zeichen + Zahlen: ~3 Stunden
10 Zeichen alles: ~800 Jahre
16 Zeichen alles: ~Billionen Jahre
Mit bcrypt rounds=12:
Alles wird um Faktor 10.000.000 sicherer
→ 8 Zeichen alles mit bcrypt: ~6.000 Jahre
→ 12+ Zeichen: astronomisch sicher
Schutzmaßnahmen
Für Applikationsentwickler
# Sicheres Password Hashing mit bcrypt:
import bcrypt
# Hashen (beim Speichern):
hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt(rounds=12))
# Verifizieren (beim Login):
is_valid = bcrypt.checkpw(password.encode('utf-8'), hashed)
# Noch besser: Argon2id (OWASP-Empfehlung 2024):
from argon2 import PasswordHasher
ph = PasswordHasher(time_cost=3, memory_cost=65536, parallelism=4)
hash = ph.hash(password)
is_valid = ph.verify(hash, password)
Rate-Limiting und Account-Lockout
Online Brute-Force verhindern:
Rate Limiting:
Max. 5 fehlgeschlagene Logins in 15 Minuten pro IP
Danach: exponentielles Backoff oder CAPTCHA
Account Lockout (Active Directory):
GPO: Account Lockout Threshold = 10 Versuche
GPO: Account Lockout Duration = 30 Minuten
GPO: Reset Account Lockout Counter = 10 Minuten
Achtung: Account Lockout kann für DoS missbraucht werden
→ Lockout benachrichtigt User, Admin Alert nach X Lockouts
MFA - effektivster Schutz
MFA macht Brute Force irrelevant:
Angreifer kennt Passwort "Summer2023!" → Login trotzdem fehlgeschlagen
→ Ohne zweiten Faktor kein Zugang
TOTP (Time-based One-Time Password):
Gültig für 30 Sekunden → Brute Force in dieser Zeit: unmöglich
Brute Force in Penetrationstests
Typische Brute-Force-Ziele beim Pentest:
→ SSH-Zugänge auf Servern
→ RDP auf Windows-Systemen
→ Web-Anwendungen (Login-Formulare)
→ Active Directory (Passwort-Spraying)
Passwort-Spraying (statt Brute Force):
Statt viele Passwörter für einen Account:
Ein Passwort gegen viele Accounts (unter Lockout-Schwelle)
"Winter2024!" gegen alle 500 Accounts → kein Lockout-Trigger