
Script hautement configurable pour les attaques par dictionnaire/pulvérisation contre les applications web en ligne.
Le projet Klyda a été créé pour faciliter les attaques rapides basées sur des identifiants contre des applications web en ligne.
Klyda permet d'utiliser aussi bien de simples pulvérisations de mots de passe que de grandes attaques par dictionnaire multithreadées.
Klyda est un nouveau projet, et je recherche des contributions. Toute aide est très appréciée.
Klyda offre une utilisation simple et facile à retenir, tout en restant configurable selon vos besoins :
1) Clonez le dépôt Git sur votre machine, git clone https://github.com/Xeonrx/Klyda
2) Placez-vous dans le répertoire Klyda, cd Klyda
3) Installez les modules nécessaires via Pip, pip install requests beautifulsoup4 colorama numpy
4) Affichez l'aide de Klyda pour l'utilisation, python3 klyda.py -h
Klyda a été principalement conçu pour Linux, mais devrait fonctionner sur toute machine capable d'exécuter Python.
Ce dont Klyda a besoin pour fonctionner se résume à quatre dépendances simples : URL à attaquer, nom(s) d'utilisateur, mot(s) de passe et données de formulaire.
Vous pouvez fournir l'URL via l'option --url. Cela devrait ressembler à ceci : --url http://127.0.0.1
N'oubliez pas de ne jamais lancer une attaque sur une page web pour laquelle vous n'avez pas l'autorisation appropriée.
Les noms d'utilisateurs sont la cible principale de ces attaques par dictionnaire. Il peut s'agir d'une large gamme de noms, de quelques-uns en particulier, ou peut-être d'un seul. Cela dépend entièrement de vous lors de l'utilisation du script. Vous pouvez spécifier les noms d'utilisateurs de plusieurs manières...
1) Spécifiez-les manuellement, -u Admin User123 Guest
2) Fournissez un fichier à utiliser, ou plusieurs à combiner, -U users.txt extra.txt
3) Fournissez à la fois un fichier et une entrée manuelle, -U users.txt -u Johnson924
Les mots de passe sont la partie difficile de ces attaques. Vous ne les connaissez pas, d'où l'existence des attaques par dictionnaire et par force brute. Comme pour les noms d'utilisateurs, vous pouvez en donner un seul ou autant que vous le souhaitez. Vous pouvez spécifier les mots de passe de plusieurs manières...
1) Spécifiez-les manuellement, -p password 1234 letmein
2) Fournissez un fichier à utiliser, ou plusieurs à combiner, -P passwords.txt extra.txt
3) Fournissez à la fois un fichier et une entrée manuelle, -P passwords.txt -p redklyda24
Les données de formulaire sont la manière dont vous construisez la requête pour que le site cible puisse la recevoir et traiter les informations fournies. En général, vous devez spécifier : une valeur pour le nom d'utilisateur, une valeur pour le mot de passe, et parfois une valeur supplémentaire. Vous pouvez voir les données de formulaire utilisées par votre cible en consultant l'onglet réseau dans les outils de développement de votre navigateur. Pour Klyda, vous utilisez l'option -d.
Vous devez utiliser des espaces réservés pour que Klyda sache où injecter le nom d'utilisateur et le mot de passe lors de l'envoi de ses requêtes. Cela pourrait ressembler à ceci...
-d username:xuser password:xpass Login:Login
xuser est l'espace réservé pour injecter les noms d'utilisateurs, et xpass pour injecter les mots de passe. Assurez-vous de les connaître, sinon Klyda ne pourra pas fonctionner.
Formatez les données de formulaire comme (clé):(valeur)
Pour que Klyda sache s'il a réussi une tentative ou non, vous devez lui fournir des données à analyser. Klyda utilise les listes noires basées sur les tentatives de connexion échouées pour faire la différence entre une requête réussie ou non. Vous pouvez mettre sur liste noire trois types de données...
1) Chaînes de caractères, --bstr "Login failed"
2) Codes de statut, --bcde 404
3) Longueur du contenu, --blen 11
Vous pouvez spécifier autant de données pour chaque liste noire que nécessaire. Si aucune des données fournies n'est trouvée dans la réponse, Klyda considère qu'il s'agit d'une tentative de connexion réussie ("strike"). Sinon, si des données de la liste noire sont trouvées, Klyda marque la tentative comme échouée. Comme vous fournissez les données à évaluer, les faux positifs sont inexistants.
Si vous ne fournissez aucune donnée à mettre sur liste noire, alors chaque requête sera marquée comme une tentative réussie par Klyda !
Par défaut, Klyda utilise un seul thread pour s'exécuter ; mais vous pouvez en spécifier davantage avec l'option -t. Cela peut être utile pour accélérer votre travail.
Cependant, les attaques par identifiants peuvent être très bruyantes sur un réseau ; elles sont donc facilement détectables. Un compte ciblé pourrait simplement recevoir un blocage dû à un trop grand nombre de tentatives de connexion. Cela crée une attaque DoS, mais vous empêche d'obtenir les identifiants de l'utilisateur, ce qui est le but de Klyda.
Pour rendre ces attaques un peu moins bruyantes, vous pouvez utiliser l'option --rate. Cela vous permet de limiter vos threads à un certain nombre de requêtes par minute.
Elle se formate comme ceci : --rate (nombre de requêtes) (minutes)
Par exemple, --rate 5 1 n'enverra que 5 requêtes par minute. Rappelez-vous, cela s'applique à chaque thread. Si vous avez 2 threads, cela enverra 10 requêtes par minute.
Testez Klyda sur Damn Vulnerable Web App (DVWA) ou Mutillidae.
python3 klyda.py --url http://127.0.0.1/dvwa/login.php -u user guest admin -p 1234 password admin -d username:xuser password:xpass Login:Login --bstr "Login failed"
python3 klyda.py --url http://127.0.0.1/mutillidae/index.php?page=login.php -u root -P passwords.txt -d username:xuser password:xpass login-php-submit-button:Login --bstr "Authentication Error"
Comme mentionné précédemment, Klyda est encore un travail en cours. Pour l'avenir, je prévois d'ajouter plus de fonctionnalités et de reformater le code pour une présentation plus propre.
Ma priorité absolue est d'ajouter la fonctionnalité de proxy, et je travaille actuellement dessus.