Brute-Force-Angriffe mit Kali Linux



Brute-Force (Brute-Force-Angriff) ist eine Methode zur Lösung mathematischer Probleme, deren Komplexität von der Anzahl aller möglichen Lösungen abhängt. Der Begriff Brute-Force selbst wird normalerweise im Zusammenhang mit Hackerangriffen verwendet, wenn ein Angreifer versucht, einen Benutzernamen / ein Kennwort für ein Konto oder einen Dienst abzurufen.

Betrachten Sie die Tools, mit denen Sie Brute-Force-Angriffe auf SSH- und WEB-Dienste ausführen können, die in Kali Linux (Patator, Medusa, Hydra, Metasploit) sowie in BurpSuite verfügbar sind.

Alle in diesem Artikel bereitgestellten Materialien sind nur für Bildungszwecke bestimmt. Die Verwendung von Materialien in rechtswidriger und illegaler Form ist verboten.

Brute-Force-SSH


Nehmen Sie beispielsweise den Testcomputer 192.168.60.50 und versuchen Sie, das Kennwort des Benutzertests per SSH zu ermitteln. Wir werden gängige Passwörter aus dem Standardwörterbuch rockyou.txt verwenden.



Patator
Verwenden Sie den folgenden Befehl, um ein Kennwort mit Patator auszuwählen:

patator ssh_login host=192.168.60.50 user=test password=FILE0 0=/root/wordlist -x ignore:mesg='Authentication failed'

wo:
ssh_login - erforderliches Modul
Gastgeber ist unser Ziel
Benutzer - Benutzeranmeldung , bei der ein Kennwort oder eine Datei mit Anmeldungen zur Mehrfachauswahl ausgewählt wird
Passwort - Wörterbuch mit Passwörtern
-x ignore: mesg = 'Authentifizierung fehlgeschlagen' - Der Befehl zeigt keine Zeile mit dieser Nachricht an. Der Filterparameter wird individuell ausgewählt.

Bild



Hydra
Führen Sie den folgenden Befehl aus, um mit Hydra ein Kennwort auszuwählen:

hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50

wo:
-V - Zeigt während der Iteration ein Paar Benutzername + Passwort an
-f - Stopp, sobald das Passwort für das angegebene Login gefunden wurde
-P - Pfad zum Wörterbuch mit Passwörtern
ssh: //192.168.60.50 - Dienstanzeige und IP-Adresse des Opfers

Bild



Medusa
Führen Sie den folgenden Befehl aus, um ein Kennwort mit Medusa auszuwählen:

medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6

wo:
-h - IP-Adresse des Opfers
-u - Login
-P - Wörterbuchpfad
-M - Modulauswahl
-f - Stopp, nachdem ein gültiges Paar aus Benutzername und Passwort gefunden wurde
-v - Einstellen der Anzeige von Nachrichten auf dem Bildschirm während des Auswahlprozesses

Bild



Metasploit
Wir werden nach einem Tool suchen, mit dem Brute-Force-Angriffe auf SSH durchgeführt werden können:
search ssh_login und search ssh_login die Antwort:

Bild

Wir verwenden das Modul:

use auxiliary/scanner/ssh/ssh_login

Verwenden Sie den Befehl show options , um die erforderlichen Parameter anzuzeigen. Für uns ist es:
Rhosts - IP-Adresse des Opfers
rport - port
Benutzername - SSH-Login
userpass_file - Pfad zum Wörterbuch
stop_on_success - Stopp, sobald ein Benutzername / Passwort-Paar vorhanden ist
Threads - Anzahl der Threads

Bild

Die Anzeige der notwendigen Parameter erfolgt über den Befehl " set ".

set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22


Nachdem wir die erforderlichen Parameter angegeben haben, geben wir den Befehl " run " ein und warten.

Bild

Gegenwirkung


Begrenzen Sie die Anzahl der hergestellten Verbindungen mithilfe einer Firewall. Beispiel für die Einrichtung von iptables:

-A INPUT -i eth0 -p tcp --dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset .

Eine solche Regel beschränkt den Zugriff auf SSH für jede IP-Adresse auf 1 Verbindung pro Sekunde, was die Suche erheblich erschwert. Eine effektive Lösung kann auch die Verwendung der Zwei-Faktor-Authentifizierung (z. B. mithilfe von eToken) oder die Authentifizierung mithilfe eines Schlüsselpaars sowie die Verwendung von ACLs sein, die auf IP-Adressen basieren.

Brute-Force-WordPress


Schauen wir uns ein anderes Beispiel an - die Auswahl eines Kennworts für ein Webformular-Autorisierungsfenster.

Bild

Zum Beispiel werden wir das Passwort aus dem WordPress-Administratorkonto auswählen.



Burpsuite
Zunächst müssen wir verstehen, wie der Autorisierungsprozess abläuft. Dafür verwenden wir BurpSuite. Wir müssen versuchen, uns mit einem beliebigen Passwort anzumelden und uns anzumelden, um zu sehen, welche Anforderungen über BurpSuite gesendet werden.

Bild

Nun, wir haben eine POST-Autorisierungsanfrage gesehen, wir werden damit arbeiten.
BODY gibt an, welche Anmeldung und welches Passwort überprüft wurden. Dies bedeutet, dass wir versuchen können, die benötigten Werte selbst zu ersetzen.
Wir leiten diese Anfrage an Intruder weiter und wählen dort die notwendigen Parameter für den Angriff aus. Im Element Payload Positions belassen wir den Angriffstyp als Scharfschützen, zur Überprüfung belassen wir jedoch nur den Parameter pwd. Ein Angriff ändert also nur diesen Parameter.

Bild

Wir laden das notwendige Wörterbuch und beginnen den Angriff.

Bild

Aus dem Verhalten der Webanwendung geht hervor, dass das falsche Kennwort den Antwortcode 200 zurückgibt. Nach dem Aufzählen des Wörterbuchs sehen wir, dass eines der Kennwörter die Antwort mit dem Code 302 gegeben hat - es ist korrekt.

Bild

Diese Brute-Force-Methode dauert viel länger als bei Verwendung von Patator, Hydra, Medusa usw. Obwohl wir ein kleines Wörterbuch genommen haben, hat BurpSuite das Wörterbuch etwa 40 Minuten lang durchlaufen.



Hydra
Versuchen wir, das Passwort mit Hydra zu finden.
Wie wir bereits wissen, wird bei falscher Autorisierung der Code 200 zurückgegeben, und bei Erfolg lautet der Code 302. Versuchen wir, diese Informationen zu verwenden.
Verwenden Sie zum Starten den folgenden Befehl:

hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302"

Hier geben wir die erforderlichen Parameter an:
-l - Benutzername
-P - Wörterbuch mit Passwörtern
-t - Anzahl der Threads
http-post-form - Art des Formulars, wir haben POST.
/wp-login.php ist die URL der Autorisierungsseite
^ USER ^ - zeigt an, wo der Benutzername ersetzt werden soll
^ PASS ^ - zeigt an, wo das Passwort aus dem Wörterbuch ersetzt werden soll
S = 302 - ein Hinweis darauf, welche Antwort auf Hydra zu verlassen ist. In unserem Fall lautet die Antwort nach erfolgreicher Autorisierung 302.

Bild



Patator
Wie wir bereits wissen, wird bei fehlgeschlagener Autorisierung der Code 200 zurückgegeben, und bei Erfolg wird 302 zurückgegeben. Wir verwenden dasselbe Prinzip wie bei Hydra:
Der Start wird mit dem folgenden Befehl ausgeführt:

patator http_fuzz url=http://192.168.60.50/wp-login.php method=POST body='log=admin&pwd=FILE0&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1' 0=/root/wordlist -t 4 before_urls=http://192.168.60.50/wp-login.php -x ignore:code=200 accept_cookie=1

http_fuzz - Modul für Brute-Force-HTTP-Angriffe
URL - Adresse der Seite mit Autorisierung
FILE0 - Pfad zum Wörterbuch mit Passwörtern
body - Informationen, die während der Autorisierung in der POST-Anforderung übertragen werden
-t - Anzahl der Threads
-x - In diesem Fall haben wir den Befehl angegeben, keine Nachrichtenzeilen anzuzeigen, die einen Parameter mit dem Code 200 enthalten
accept_cookie - Cookie-Parameter speichern und an die nächste Anfrage übergeben
Infolgedessen konnten wir ein Passwort finden.

Bild



Nmap
Das Dienstprogramm Nmap ermöglicht unter anderem die Auswahl von Kennwörtern für Webautorisierungsformulare, wenn Sie das Skript http-wordpress-brute mit den entsprechenden Argumenten verwenden:
--script-args - Argumente hinzufügen
user oder userdb - Login oder Datei mit Logins
pass oder passdb - Geben Sie ein Passwort oder ein Wörterbuch an
thread - Anzahl der Threads
firstonly = true - Zeigt das Ergebnis nach dem ersten richtigen Passwort an

nmap 192.168.60.50 --script http-wordpress-brute --script-args 'user= admin,passdb= /root/wordlist, http-wordpress-brute.thread=3, brute.firstonly=true'

Bild

Gegenwirkung


Begrenzen Sie (komplizierte) Brute-Force-Angriffe auf Webanwendungen mithilfe von iptables (ähnlich wie SSH) und nginx. Erstellen Sie dazu eine Grenzzone:
...
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
...

und benutze es:
location / {
...
limit_req zone=req_limits burst=10;
limit_req_status 429;
...
}

Durch diese Einstellungen wird die Anzahl der Anforderungen von einer IP-Adresse auf 40 pro Sekunde begrenzt.

Um die Aufzählungsaufgabe zu verkomplizieren, können Sie die folgenden Methoden verwenden:
- Verwendung einer Firewall und anderer Software, um die Anzahl der Anrufe an den geschützten Dienst zu begrenzen. In einem Artikel erfahren Sie, wie wir maschinelles Lernen verwenden, um solche Angriffe (einschließlich verteilter Angriffe) zu erkennen.
- Verwendung von Tools, die eine schnelle Überprüfung der Richtigkeit des Schlüssels verhindern (z. B. Captcha).

Fazit


In diesem Artikel haben wir einige beliebte Tools oberflächlich untersucht. Sie können das Risiko des Erraten von Passwörtern verringern, indem Sie die folgenden Richtlinien befolgen:
- Verwenden Sie passwortsichere Passwörter.
- Erstellen Sie keine Passwörter mit persönlichen Informationen, zum Beispiel: Geburtsdatum oder Name + Geburtsdatum oder Mobiltelefon;
- das Passwort regelmäßig ändern;
- Verwenden Sie für alle Konten eindeutige Kennwörter.

Nur wenige Menschen befolgen solche Empfehlungen (sowie Empfehlungen für eine sichere Webentwicklung). Daher müssen Sie verschiedene Softwarelösungen verwenden, mit denen Sie:
- die Verbindung nach IP-Adresse einschränken oder, falls dies nicht möglich ist, die gleichzeitige Anzahl von Verbindungen zum Dienst begrenzen (unter Verwendung von iptables, nginx und anderen);
- Zwei-Faktor-Authentifizierung verwenden;
- Erkennen und blockieren Sie solche Angriffe mit SIEM, WAF oder anderen (z. B. fail2ban).

Source: https://habr.com/ru/post/de434216/


All Articles