
Eigener Exploit, der zur Aufzählung von Benutzernamen gemäß CVE-2016-6210 geschrieben wurde.
Eigener Exploit (Python 2.7) geschrieben zur Aufzählung von Benutzernamen gemäß CVE-2016-6210 (OpenSSH 7.2-p2 & früher)
sollte nur auf autorisierten Systemen verwendet werden
Ich habe dieses Programm als Tool zum Ausnutzen von CVE-2016-6210 geschrieben, einer Sicherheitslücke in OpenSSH (vor Version 7.3), die von Eddie Harari veröffentlicht wurde
Nach meinem Verständnis liegt das Problem darin, dass die Arbeitsweise von OpenSSH in diesen Versionen dazu führt, dass bei der Angabe eines großen Passworts (in diesem Fall 25 KB) die Hash-Verarbeitungszeiten Rückschlüsse darauf zulassen, ob ein Benutzername existiert oder nicht, da die Zeit bei gültigen Benutzern höher ist.
Dieses Programm hilft, diese Sicherheitslücke auszunutzen, indem es dem Benutzer ermöglicht, eine Reihe von Benutzernamen (aus einer Wortliste) zu senden und die Verarbeitungszeit zu messen. Der Benutzer kann eine Alarmzeit festlegen, die ihm zusagt, und die Zeit und der Benutzername werden angezeigt, wenn die Verarbeitungszeit diesen Wert überschreitet.
Der Benutzer kann auch eine IP oder E-Mail-Adresse angeben, um sowohl das Element der Liste mit als auch ohne den E-Mail-Anhang am Ende zu testen. Standardmäßig (wenn kein Anhang angegeben wird) testet das Programm jedes Wort der Wortliste in den Formen wort und wort@IP. Wird ein Anhang angegeben, verhält es sich gleich, ersetzt aber wort@IP durch wort@anhang.
Die Anzahl der Sendewiederholungen jedes Wortes und die Zeitmessung der Antwort können angepasst werden, und das Programm generiert automatisch eine durchschnittliche Verarbeitungszeit, die dann anstelle der Einzelzeiten verwendet wird – für eine höhere Zuverlässigkeit.
Es kann auch eine Verzögerung angegeben werden, die verhindert, dass das Programm zu viele Anfragen zu schnell sendet.
Was den SSH-Request-Code selbst betrifft, so geht die Anerkennung für den Großteil des Codes in cveCode.py an Eddie Harari: Eine modifizierte Version von Hararis Code wird zum Senden und Berechnen der Zeitmessungen verwendet. Sein Advisory und Beispielcode sind hier zu finden.
Hinweis: Mein Code wurde nur auf OpenSSH-7.2p2 (Client ist Kali Linux) als Black-Box getestet und bedarf weiterer Tests. Die Ergebnisse und Parameter werden vom Benutzer gesteuert und interpretiert.
python exploit_6210.py IP_ADRESSE [-h] [-a ALARM] [-w WORTLISTE] [-e EMAIL] [-av WIEDERHOLUNGSANZAHL] [-d VERZÖGERUNG]
Wobei:
IP_ADRESSE der Host ist, gegen den Sie das Programm testen
-a ALARM (optional, Standard ist 0,1) ist die Zeit (in Sekunden), ab der ein Alarm ausgelöst werden soll, wenn die Verarbeitungszeit größer ist
-w WORTLISTE (optional, Standard ist usernamelist) ist der Dateipfad für die Liste der Benutzernamen, die Sie gegen den Host testen möchten
-e EMAIL (optional) ist die IP oder E-Mail (die wie folgt aussehen sollte: @IP_ADRESSE oder @email.com) als Anhang, den Sie an jedes Element der Wortliste anhängen möchten (beachten Sie, dass sowohl das Element als auch das Element + E-Mail getestet werden)
-av WIEDERHOLUNGSANZAHL (optional, Standard ist 1) ist die Anzahl der Abfragen des SSH-Servers für jeden angegebenen Benutzernamen, was zuverlässigere Durchschnittswerte für die Zeitmessungen ermöglicht (je höher die Zahl, desto länger dauert es, und zwar DEUTLICH)
-d VERZÖGERUNG (optional, Standard ist 0,5) ist die ungefähre Verzögerung (in Sekunden) zwischen den einzelnen Anfragen (je höher die Zahl, desto länger dauert es, und zwar DEUTLICH)