Comment forcer brutalement les serveurs FTP en Python

Apprendre à craquer les serveurs FTP en utilisant une attaque de dictionnaire (volet de brèche avec une liste de mots) à l’aide du module ftplib en Python.

Une attaque à force brutale consiste en une attaque qui soumet de nombreux mots de passe dans l’espoir de deviner correctement. Dans ce tutoriel, vous apprendrez comment vous pouvez forcer brutalement les serveurs FTP en Python.

Nous utiliserons le module ftplib qui est intégré en Python. Cependant, nous allons utiliser le colorama pour l’impression en couleurs en Python :

Maintenant, à des fins de démonstration, j’ai mis en place un serveur FTP dans mon réseau local sur une machine qui fonctionne sur Linux. Plus précisément, j’ai installé vsftpd (dème FTP très sécurisé), qui est un serveur FTP pour les systèmes de type Unix. Si vous voulez faire ça aussi aussi, voici les commandes que j’avais l’habitude de le faire se lever et de se préparer.

Et puis assurez-vous d’avoir un utilisateur, et la configuration locale-enable-OUI est définie sur le fichier /etc/vsftpd.conf.

Commençons :

Donc le serveur local est situé à 192.168.1.113, j’ai aussi créé un nom d’utilisateur « test », et puis nous spécifions le port de FTP, qui est 21.

Maintenant, écrivons la fonction de base qui accepte un mot de passe dans les arguments et nous retournons si les justificatifs sont corrects:

Rien de spécial, nous initialisons l’objet serveur FTP en utilisant ftplib.FTP() et puis nous nous connectons à cet hôte et essayons de nous connecter, cela soulèvera une exception chaque fois que les identifiants sont incorrects, donc s’il est levé, nous allons juste renvoyer False, et True sinon.

Nous allons utiliser une liste de mots de passe connus. N’hésitez pas à en utiliser, ou vous pouvez générer votre propre liste de mots personnalisée en utilisant Crunch. Cependant, dans ce tutoriel, nous allons utiliser la liste de mots de passe Nmap qui contient environ 5000 mots de passe. Si vous êtes sur Kali Linux, il est situé dans « /usr/share/wordlists/nmap.lst ». Sinon, obtenez-le ici.

Une fois que vous l’avez, mettez-le dans le répertoire actuel et nommez-le motlist.txt et utilisez le code suivant:

Maintenant, tout ce que nous avons à faire est d’exécuter la fonction ci-dessus sur tous ces mots de passe:

Ce code est correct, mais il est très lent. Il n’utilise qu’un seul thread qui tente une connexion FTP sur chaque mot de passe séquentiellement.

Utilisons des threads pour accélérer ce processus; le code suivant est le code complet qui utilise le multi-threading:

Super, il est assez similaire au précédent, mais nous utilisons ici une file d’attente qui est remplie avec la liste des mots de passe au début, et dans la fonction centrale qui est exécutée par ces fils de démon, nous obtenons un mot de passe de la file d’attente et essayons de se connecter avec elle. Si le mot de passe est correct, alors nous devons finir le forçage brut, un moyen sûr de le faire est d’effacer la file d’attente, et c’est ce que nous faisons.

Nous avons également utilisé des fils de daemon, donc ces fils se termineront lorsque le fil principal s’achève.

Voici une petite capture d’écran après ma tentative sur ma machine locale :

C’est plutôt cool, c’est fini. Maintenant, essayez de gâcher avec le paramètre n-threads et voyez si vous pouvez améliorer encore la vitesse du craqueur.

ATTENTION : Utilisez cette attaque sur une machine que vous avez l’autorisation de tester. Sinon, nous ne sommes responsables d’aucun mal à quiconque.

Si vous êtes intéressé par les serveurs SSH à la fin de la forçage par brute, dirigez-vous vers ce tutoriel.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *