
Script altamente configurável para ataques de dicionário/spray contra aplicações web online.
O projeto Klyda foi criado para auxiliar em ataques rápidos baseados em credenciais contra aplicações web online.
O Klyda suporta desde simples pulverizações de senha até grandes ataques de dicionário multithread.
O Klyda é um projeto novo e estou procurando contribuições. Qualquer ajuda é muito apreciada.
O Klyda oferece uso simples e fácil de lembrar; no entanto, ainda oferece configuráveis para suas necessidades:
1) Clone o repositório Git para sua máquina, git clone https://github.com/Xeonrx/Klyda
2) Entre no diretório Klyda, cd Klyda
3) Instale os módulos necessários via Pip, pip install requests beautifulsoup4 colorama numpy
4) Exiba o prompt de ajuda do Klyda para uso, python3 klyda.py -h
O Klyda foi projetado principalmente para Linux, mas deve funcionar em qualquer máquina capaz de executar Python.
O que o Klyda precisa para funcionar são apenas quatro dependências simples: URL para atacar, nome(s) de usuário, senha(s) e formdata.
Você pode passar a URL através da tag --url. Deve ser algo assim: --url http://127.0.0.1
Lembre-se de nunca lançar um ataque em uma página da web para a qual você não tenha permissão adequada.
Os nomes de usuário são o alvo principal desses ataques de dicionário. Pode ser uma gama inteira de nomes de usuário, alguns específicos, ou talvez apenas um. É tudo sua decisão ao usar o script. Você pode especificar nomes de usuário de algumas maneiras...
1) Especifique manualmente, -u Admin User123 Guest
2) Forneça um arquivo para usar, ou alguns para combinar, -U users.txt extra.txt
3) Forneça tanto um arquivo quanto entrada manual, -U users.txt -u Johnson924
As senhas são a parte difícil desses ataques. Você não as conhece, daí a existência de ataques de dicionário e força bruta. Assim como os nomes de usuário, você pode fornecer desde apenas uma senha até quantas quiser. Você pode especificar senhas de algumas maneiras...
1) Especifique manualmente, -p password 1234 letmein
2) Forneça um arquivo para usar, ou alguns para combinar, -P passwords.txt extra.txt
3) Forneça tanto um arquivo quanto entrada manual, -P passwords.txt -p redklyda24
FormData é como você forma a requisição, para que o site alvo possa recebê-la e processar as informações fornecidas. Normalmente você precisaria especificar: um valor de nome de usuário, um valor de senha e, às vezes, um valor extra. Você pode ver o FormData que seu alvo usa revisando a aba de rede do inspetor de elementos do seu navegador. Para o Klyda, você usa a tag -d.
Você precisa usar placeholders para que o Klyda saiba onde injetar o nome de usuário e a senha ao enviar suas requisições. Pode ser algo assim...
-d username:xuser password:xpass Login:Login
xuser é o placeholder para injetar os nomes de usuário, e xpass é o placeholder para injetar as senhas. Certifique-se de conhecê-los, ou o Klyda não funcionará.
Formate o FormData como (key):(value)
Para que o Klyda saiba se obteve um acerto bem-sucedido ou não, você precisa fornecer dados para ele analisar. O Klyda utiliza listas negras fornecidas de tentativas de login falhadas, para que possa diferenciar entre uma requisição falha ou completa. Você pode colocar na lista negra três tipos diferentes de dados...
1) Strings, --bstr "Login failed"
2) Códigos de Status, --bcde 404
3) Comprimento do Conteúdo, --blen 11
Você pode especificar quantos dados forem necessários para cada lista negra. Se algum dos dados fornecidos não for encontrado na resposta, o Klyda atribui um "strike", indicando que foi uma tentativa de login bem-sucedida. Caso contrário, se os dados nas listas negras forem encontrados, o Klyda marca como uma tentativa de login malsucedida. Como você fornece os dados para o Klyda avaliar, falsos positivos são inexistentes.
Se você não fornecer nenhum dado para a lista negra, toda requisição será marcada como um strike pelo Klyda!
Por padrão, o Klyda usa apenas uma única thread para executar; mas você pode especificar mais, usando a tag -t. Isso pode ser útil para acelerar seu trabalho.
No entanto, ataques de credenciais podem ser muito ruidosos em uma rede; portanto, são facilmente detectados. Uma conta alvo pode simplesmente receber um bloqueio devido a muitas tentativas de login. Isso cria um ataque DoS, mas impede que você obtenha as credenciais do usuário, que é o objetivo do Klyda.
Então, para tornar esses ataques um pouco menos ruidosos, você pode usar a tag --rate. Isso permite limitar suas threads a um certo número de requisições por minuto.
Será formatado assim: --rate (# de requisições) (minutos)
Por exemplo, --rate 5 1 enviará apenas 5 requisições a cada minuto. Lembre-se, isso é para cada thread. Se você tivesse 2 threads, isso enviaria 10 requisições por minuto.
Teste o Klyda no Damn Vulnerable Web App (DVWA) ou no 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"
Como mencionado anteriormente, o Klyda ainda está em andamento. Para o futuro, planejo adicionar mais funcionalidades e reformatar o código para uma aparência mais limpa.
Minha maior prioridade é adicionar funcionalidade de proxy, e estou atualmente trabalhando nisso.