Write-up zu Password Spraying #
Aufgabenstellung #
Das Passwort ist bekannt aber nicht der Username. Das ist eine realistische Aufgabe, wenn man davon ausgeht, dass viele ein zu schwaches Passwort verwenden.
Die Aufgabe gibt mir ein Passwort, eine Bandbreite von gültigen Usernamen (500 Stück) und ich soll das Passwort finden. Erschwerend kommt hinzu, dass das Passwort alle 60 Minuten wechselt. Ausserdem sind nur 10 ungültige Login Versuche möglich, da man sonst für 10min von fail2ban gesperrt ist.
Vorgehen #
- Tool suchen, dass username iteriert und password konstant hält.
- Fail2Ban Dokumentation lesen, um herauszufinden ob es wie ein ReverseProxy funktioniert oder aber Log-Dateien liest und so verzögert reagiert.
- Tool suchen, dass IP Adressen wechseln kann (Tor?). Der Fail2ban Service blockt Absender-IPs.
- Vulnerability Datenbank durchsuchen, um Möglichkeiten gegen fail2ban zu finden. Möglicherweise sind Abstürze vom Tool für unsere Zwecke sinnvoll (siehe Punkt 2).
Tools #
- Zu Punkt 1 im Vorgehen bieten sich Hydra oder Medusa an. Ein Tutorial dazu ist unter redteamtutorials.com zu finden. Hydra hat auch ein UI, das verwendet werden kann.
- Gemäss Dokumentation scannt es die Log
Files, was allenfalls eine Attacke durch schnelle Iteration erlaubt.
It scans log files and detects patterns which correspond to possible breakin attempts and then performs actions. Most of the time, it consists of adding a new rule in a firewall chain and sending an e-mail notification to the system administrator.
- Hydra kann eine Proxy Liste entgegennehmen. Bei 500 Versuchen / 10 werden ca. 50 Proxies benötigt. Es gibt viele Proxy Listen im Internet, die für unsere Zwecke genügen.
- Ausserdem gibt es ein Tool Proxychain, dass die Netzwerkfunktionen von den Tools übersteuert und verwendet werden kann.
- Mit Excel / LibreOffice kann eine Liste von Benutzernamen erstellt werden (Autoincrement Funktion).
Umsetzung #
Ich verwende proxychain. Teilweise kann er die DNS nicht auflösen und diese kann aber auf Kosten von
Privacy mit dem Auskommentieren des proxy_dns
Parameters in den /etc/proxychains4.conf deaktiviert
werden.
- Tor starten - Keine spezielle Konfiguration nötig
- Proxychain Config in /etc/proxychains4.conf prüfen, ob in der [ProxyList] socks4 127.0.0.1 9050 eingetragen ist.
- Eine Liste von Username erstellen und speichern (z.B. als usernames.txt). Kann mit Excel/libreOffice erstellt werden.
- Hydra Befehl via UI konfigurieren und für Konsole dann kopieren (http)
proxychains4 -f proxychains4_2.conf hydra -t 64 -s 80 -v -V -I -L /root/usernames.txt -p password -f -m / pwspray.vm.vuln.land http-get
- Hydra Befehl via UI konfigurieren und für Konsole dann kopieren (ftp)
torsocks hydra -t 4 -s 21 -v -V -w 360 -I -L /root/usernames_ftp.txt -p password -f -m / pwspray.vm.vuln.land ftp
. Zu Beachten ist-t 4
wodurch nur 4 Verbindungen gleichzeig geöffnet werden. - Hydra Befehl via UI konfigurieren und für Konsole dann kopieren (ssh)
torsocks hydra -t 2 -s 22 -v -V -w 360 -I -L /root/usernames.txt -p password -f -m / pwspray.vm.vuln.land ssh
. Zu Beachten ist-t 2
wodurch nur 2 Verbindungen gleichzeig geöffnet werden. - Ergebnis einreichen
Schlussfolgerung #
Der ganze Proxy Setup ist ziemlich mühsam und fehleranfällig. Empfohlen wird da generelle eher nicht der Tor Service sondern der Tor Browser mit integriertem Tor.