Sikov - stock.adobe.com
Pentest mit Hydra: Passwortsicherheit von SSH-Zugängen prüfen
Ob SSH-Zugänge der eigenen Geräte sicher vor Angriffen sind, lässt sich mit einem Penetrationstest überprüfen. Dabei hilft das Tool Hydra. Wir zeigen, wie das funktioniert.
Wir zeigen in diesem Beitrag, wie sich SSH-Zugänge mit Hydra (auch THC-Hydra genannt) angreifen lassen. Wichtig ist dabei, dass solche Tests nur für eigene Server erlaubt sind und im Unternehmen eine Gemehmigung des Arbeitgebers vorliegen muss. Es ist nicht gestattet, fremde Cloud-Zugänge oder sogar Server auf diese Weise zu attackieren. Der Fokus dieses Artikels liegt darauf, dass Admins ihre eigenen Server auf offene oder schlecht gesicherte SSH-Zugänge testen können. Dabei kann es sich um Windows-, Linux- oder andere Server und Netzwerkgeräte handeln.
Beachten Sie dazu bitte auch unseren Artikel zur rechtlichen Lage bei Penetrationstests.
Die Linux-Software Hydra kann nicht nur SSH angreifen, sondern auch FTP und andere Netzwerkprotokolle. Die Verwendung erfolgt analog zu SSH. Im Folgenden gehen wir davon aus, dass wir die Server mit SSH testen.
Brute Force auf SSH: So funktioniert es
Hydra arbeitet vor allem mit Brute Force, um Zugang zu SSH-Systemen zu erlangen. Dabei testet das Tool zahlreiche Kombinationen aus Benutzernamen und Kennwörtern. Dabei geht die Software sehr schnell vor. Die Einrichtung von Hydra ist schnell abgeschlossen, zum Beispiel mit sudo apt install hydra auf Ubuntu. Beim Einsatz von Kali ist Hydra ohnehin bereits auf dem System installiert. Hydra kann verschiedene Listen mit geläufigen Passwörtern nutzen. Auf dieser Webseite stehen diverse Listen mit Kennwörtern zur Verfügung. Admins können diese Listen mit eigenen Passwörtern ergänzen, nach denen Hydra dann suchen soll.
SSH-Schwachstellen mit Hydra suchen
Sobald eine Passwort-Textdatei vorliegt, die Hydra nutzen soll, kann das Tool einen ersten Test gegen einen SSH-Server ausführen. Für Testzwecke kann es sinnvoll sein, Hydra gegen einen SSH-Server zu testen, auf dem ein mit Absicht unsicheres Passwort hinterlegt ist. Dadurch lässt sich die korrekte Funktion von Hydra überprüfen. Im ersten Schritt kann dazu die SSH-Verbindung zum anderen Host getestet werden. In unserem Beispiel testen wir für den Server 10.0.4.50, ob ein unsicheres Root-Kennwort für SSH hinterlegt ist. Dazu ist in den meisten Fällen zunächst in der Datei /etc/ssh/sshd_config die Option PermitRootLogin yes zu setzen. Dadurch lässt sich schnell überprüfen, ob Hydra in dieser Konfiguration funktioniert. In produktiven Umgebungen kann Hydra natürlich ohne Vorbereitung zum Einsatz kommen, aber für erste Tests ist es sinnvoll, sich mit dem Tool vertraut zu machen.
Im ersten Schritt ist testen wir mit ssh [email protected], ob eine Kennwortanmeldung an den Host funktioniert und ob SSH aktiv ist. Gelingt die Anmeldung mit Benutzernamen root und dem unsicheren Passwort, steht dem Test mit Hydra nichts im Weg. Mit journalctl -u ssh zeigt das Terminal das SSH-Protokoll auf dem Server an. Mit journalctl -u ssh -f sind auf dem Rechner die Aktionen in Echtzeit zu sehen. Damit lässt sich auf dem PC, der mit Hydra getestet wird, überprüfen, welche Aktionen Hydra genau durchführt.
Hydra kann natürlich nicht nur den Benutzer root für die Tests nutzen, sondern beliebige Nutzer. Bei den Parameterangaben unterscheidet Hydra zwischen Groß- und Kleinschreibung, das wird am folgenden Beipiel deutlich.
Aktiven Angriff mit Hydra starten
Wir starten Hydra mit dem Parameter -l root und geben damit an, dass Hydra mit dem Benutzer root den Angriff starten soll. Mit dem Parameter -L statt -l kann eine Textdatei mit Anmeldenamen mitgegeben werden, und nicht nur ein einzelner Benutzer. Beispiel: -L Anmeldenamen.txt. Listen lassen sich entweder im Internet herunterladen (siehe oben), oder über KI-Dienste wie ChatGPT erstellen.
Das geht auch mit jedem anderen Benutzer. Mit der Option -P können Sie eine Kennwortdatei angegeben. Als Beispiel verwenden wir eine Kennwortdatei password.txtz, um den Server 10.0.4.50 per SSH zu testen. Dazu wird folgender Befehl verwendet:
hydra -l root -P password.txt 10.0.4.50 ssh
Eine Liste aller Möglichkeiten, die Hydra bietet zeigt der Befehl hydra -h.
Um die Anzahl an Threads festzulegen, die Hydra gleichzeitig durchführen soll, dient der Parameter -t gefolgt von der Thread-Anzahl. Mit dem Parameter -t 4 würde Hydra vier Threads gleichzeitig ausführen. Ohne Angabe der Threads nutzt Hydra 16 Threads für einen Angriff.
Standardmäßig verwendet Hydra die Standard-Ports für die jeweiligen Dienste, zum Beispiel Port 22 für SSH. Mit dem Parameter -s lassen sich aber auch andere Ports nutzen, zum Beispiel mit -s 5555 der TCP-Port 5555.
Sobald der Angriff startet, ist auf dem Client im Systemprotokoll zu sehen. Dazu kommt journalctl -u ssh -f zum Einsatz. Entdeckt Hydra das Kennwort, zeigt es dieses im Fenster an. Auf dem angegriffenen System ist wiederum im Systemprotokoll die erfolgreiche Anmeldung zu sehen. Um während des Tests mit Hydra ausführlichere Informationen im Hydra-Fenster zu sehen, können Sie den -V verwenden. Mit dem Parameter -M lässt sich parallel noch eine Liste mit Hosts und IP-Adressbereichen angeben, die Hydra scannen soll. Die Angabe erfolgt in einer Textdatei, wie bei der Liste von Anmeldenamen und Kennwörtern. In Verbindung mit einer Liste von Anmeldenamen (-L) und einer Kennwortliste (-P) kann Hydra umfassende Tests auf ganze IP-Adressbereiche durchführen.
Um während des Tests mit Hydra ausführlichere Informationen im Hydra-Fenster zu sehen, kommt der Parameter -V zum Einsatz. Verwenden Sie eine Liste mit bekannten Anmeldenamen in Verbindung mit einer Liste mit bekannten Kennwörtern, zeigt -V an, in welcher Kombination Hydra gerade die Tests durchführt.
Ein weitere Parameterfolge für Hydra ist -e nsr. Hier prüft Hydra, ob das Kennwort leer ist (n), identisch mit dem Benutzernamen (s) oder eine Reverse-Angabe des Benutzernamens (r).
Angriffe auf eigene Server unterbinden: CrowdSec
Viele Cyberkriminelle setzen auf Hydra, um über das Internet ganze IP-Bereiche mit Anmeldenamen- und Kennwortlisten zu scannen und Server mit Brute Force zu attackieren. Um sich selbst vor solchen Angriffen zu schützen, ist CrowdSec ein wichtiges Hilfsmittel.
Mit der Lösung lassen sich Brute Force-Angriffe erkennen und blockieren. Finden Angriffe auf andere Mitglieder der CrowdSec-Community statt, informiert das System die Teilnehmer, so dass die betroffenen IP-Adressen automatisch gesperrt werden. Sinnvolles Einsatzgebiet ist zum Beispiel die Open Source-Firewall OPNsense, die mit CrowdSec auch vor Brute Force-Angriffen schützt. Das funktioniert auf Web- und auf anderen Servern gleichermaßen.