1. Introdução
Quando um atacante quer obter credenciais em algum sistema online, ele pode utilizar
brute force ou um ataque baseado em dicionário (wordlist). Este artigo introduz esses dois
tipos de ataque e explica como usar o Hydra para lançar um ataque baseado em dicionário
contra sistemas online.
2. O que você precisa ter:
- Kali Linux nativou ou em VM;
- Hydra (já vem instalado no Kali)
- Burp Suite (também já vem instalado no Kali)
- Wordlist
Opcionalmente, você pode ter o Metasploitable e DVWA caso queira fazer outros testes ou
repetir os feitos aqui, no final do artigo postarei links referentes a essas duas VMs.
3.Brute Force vs. Ataque baseado em Dicionário
- Brute Force: É a tentativa de todas as combinações possíveis de senhas, a partir da
combinação e permutação de caracteres especificados em um charset.
Ex.: charset = 123, o Brute Forcer irá combinar esses 3 caracteres, a fim de encontrar
a senha correta, da seguinte forma:
1° Tentativa: 1
2° Tentativa: 2
3° Tentativa: 3
4° Tentativa: 11
5° Tentativa: 12
.
.
.
27° Tentativa: 333
Como pode-se perceber mesmo com um charset pequeno o ataque é extenso, e essa é sua principal
desvantagem, no entanto se usado um charset completo (todas as letras, maisúculas e minúsculas
números e símbolos) a senha SERÁ encontrada, mais cedo ou mais tarde kkkkk
- Ataque Baseado em dicionário: utiliza um arquivo de texto (a wordlist) contendo palavras, números, combinações de
palavras com números, como fonte de possíveis senhas para serem testadas no sistema em que se
aplica o ataque. Tal ataque visa explorar as más práticas adotadas por usuários na criação de
senhas (criação de senhas fracas). Tem como vantagem sua rapidez e boa chance de encontrar o password correto, entretanto
não é garantido que o password será encontrado (caso ele não esteja na wordlist).
4.Hydra
O Hydra é um logon cracker com suporte a diversos protocolos/serviços capaz de aplicar ataques
de dicionário contra o campo de senha e login.
Serviços/Protocolos suportados:
asterisk
afp
cisco
cisco-enable
cvs
firebird
ftp
ftps
http[s]-{head|get}
http[s]-{get|post}-form
http-proxy
http-proxy-urlenum
icq
imap[s]
irc
ldap2[s]
ldap3[-{cram|digest}md5][s]
mssql
mysql
ncp
nntp
oracle-listener
oracle-sid
pcanywhere
pcnfs
pop3[s]
postgres
rdp
rexec
rlogin
rsh
s7-300
sip
smb
smtp[s]
smtp-enum
snmp
socks5
ssh
sshkey
svn
teamspeak
telnet[s]
vmauthd
vnc
xmpp
A sintaxe básica do seu comando é:
hydra [-l ou -L] [-p ou -P] [-s] [target] [serviço]
-l login, Ex.: -l admin
-L Arquivo com vários logins para tentar, Ex.: -L /root/Documentos/wordlist.txt
-p Senha, Ex.: passwd123
-P Arquivo com várias senhas para tentar, Ex.: -P /root/Documentos/wordlist.txt
-s Caso o serviço que você estaja atacando utilize uma porta que não a default você terá que especifica-la usando a flag -s, Ex.: -s 3222
Ex.:
hydra -l admin -P /root/Documentos/wordlist.txt -s 321 192.165.1.14 ftp
hydra -L /root/Documentos/userslist.txt -p defaultpw 192.163.156.123:22 ssh
OBS: Você também pode usar o hydra-gtk, que é a versão com interface gráfica do hydra,
que é bastante intuitiva. Pode ser encontrada em Aplicativos > Kali Linux > Password Attacks
> Online Attacks > hydra-gtk
5. Utilizando o Hydra
Aqui vou mostrar como se utiliza o Hydra em dois exemplos, um ataque contra um FTP e outro
contra um web-form. O FTP que será atacado é o do Metasploitable e o web-form da DVWA
(Damn Vulnerable Web Application).
- Dicionários(wordlist):
Vamos criar duas pequenas wordlists para ilustrar as técnicas
OBS: São arquivos de texto contendo as seguintes palavras
Lista de Usuários(list_user)
admin_1
admin
msfadmin
Lista de senhas (list_password)
password_1
password
msfadmin
password_2
Há 12 combinações para serem testadas (3 usuários e 4 senhas). Essas combinações incluem credenciais padrão para o web-form do DVWA e o FTP do Metasploitable.
- FTP:
Usando o seguinte comando para lançar o ataque:
hydra -L list_user -P list_password 192.168.56.101 ftp -V
OBS: O -v indica o modo verbose, na qual o hydra mostra tentativa por tentativa, e o serviço/protocolo foi especificado depois do IP.
Como podemos ver abaixo, o Hydra encontrou um par válido de usuário e senha:
- Web Login Form:
Aqui a situação, por ser mais dinâmica, se torna mais complexa. Cada website apresenta
particularidades quanto aos seus formulários de senha e login e mensagens de erro ao se errar o login, devido a isso precisamos usar o burp suite para identificar o formulário, e também verificar a mensagem de erro ao se errar o login.
Tendo tais informações e computando-as no hydra, este saberá onde inserir o login e a senha, e também conseguirá identificar quando o login e senha não são válidos através da mensagem de erro, e caso o login tenha sido feito com sucesso não haverá mensagem de erro e o hydra dará timeout e concluirá que aquele usuário e senha são válidos.
Configurando o Burp Suite como proxy e fazendo a requisição de login no DVWA capturamos este pacote, que nos mostra o formulário (segunda caixa vermelha):
Temos a localização da página de login: /dvwa/login.php
Temos o formulário: username=admin&password=password&Login=Login OBS: Perceba que admin e password foi a tentativa de usuário e senha feita manualmente
E username e password são os nomes dos campos de usuário e senha.
E como esse usuário e senha não são válidos a aplicação retornará um erro: Login Failed.
Agora que temos as informações vamos montar o comando do Hydra. Que será constituido de duas partes, um já conhecida e estudada, e outra especifica do web-form
A conhecida:
hydra -L list_user -P list_password 192.168.56.101 http-post-form
OBS: http-post-form é o sserviço/protocolo que estamos utilizando no ataque, HTTP pelo método POST.
A parte específica:
Que é constituida da localização da página de login (/dvwa/login.php)dois pontos o formulários com o campo de usuário escrito ^USER^ e o campo de senha escrito ^PASS^ (username=^USER^&password=^PASS^&Login=Login) dois pontos e a mensagem de erro.
"/dvwa/login.php:username=^USER^&password=^PASS^& Login=Login:Login failed"
Jutando as duas partes (mais a flag -V):
hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Lo gin:Login failed" -V
Como podemos ver, o hydra encontrou um usuário e senha válidos:
Referência: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Quando um atacante quer obter credenciais em algum sistema online, ele pode utilizar
brute force ou um ataque baseado em dicionário (wordlist). Este artigo introduz esses dois
tipos de ataque e explica como usar o Hydra para lançar um ataque baseado em dicionário
contra sistemas online.
2. O que você precisa ter:
- Kali Linux nativou ou em VM;
- Hydra (já vem instalado no Kali)
- Burp Suite (também já vem instalado no Kali)
- Wordlist
Opcionalmente, você pode ter o Metasploitable e DVWA caso queira fazer outros testes ou
repetir os feitos aqui, no final do artigo postarei links referentes a essas duas VMs.
3.Brute Force vs. Ataque baseado em Dicionário
- Brute Force: É a tentativa de todas as combinações possíveis de senhas, a partir da
combinação e permutação de caracteres especificados em um charset.
Ex.: charset = 123, o Brute Forcer irá combinar esses 3 caracteres, a fim de encontrar
a senha correta, da seguinte forma:
1° Tentativa: 1
2° Tentativa: 2
3° Tentativa: 3
4° Tentativa: 11
5° Tentativa: 12
.
.
.
27° Tentativa: 333
Como pode-se perceber mesmo com um charset pequeno o ataque é extenso, e essa é sua principal
desvantagem, no entanto se usado um charset completo (todas as letras, maisúculas e minúsculas
números e símbolos) a senha SERÁ encontrada, mais cedo ou mais tarde kkkkk
- Ataque Baseado em dicionário: utiliza um arquivo de texto (a wordlist) contendo palavras, números, combinações de
palavras com números, como fonte de possíveis senhas para serem testadas no sistema em que se
aplica o ataque. Tal ataque visa explorar as más práticas adotadas por usuários na criação de
senhas (criação de senhas fracas). Tem como vantagem sua rapidez e boa chance de encontrar o password correto, entretanto
não é garantido que o password será encontrado (caso ele não esteja na wordlist).
4.Hydra
O Hydra é um logon cracker com suporte a diversos protocolos/serviços capaz de aplicar ataques
de dicionário contra o campo de senha e login.
Serviços/Protocolos suportados:
asterisk
afp
cisco
cisco-enable
cvs
firebird
ftp
ftps
http[s]-{head|get}
http[s]-{get|post}-form
http-proxy
http-proxy-urlenum
icq
imap[s]
irc
ldap2[s]
ldap3[-{cram|digest}md5][s]
mssql
mysql
ncp
nntp
oracle-listener
oracle-sid
pcanywhere
pcnfs
pop3[s]
postgres
rdp
rexec
rlogin
rsh
s7-300
sip
smb
smtp[s]
smtp-enum
snmp
socks5
ssh
sshkey
svn
teamspeak
telnet[s]
vmauthd
vnc
xmpp
A sintaxe básica do seu comando é:
hydra [-l ou -L] [-p ou -P] [-s] [target] [serviço]
-l login, Ex.: -l admin
-L Arquivo com vários logins para tentar, Ex.: -L /root/Documentos/wordlist.txt
-p Senha, Ex.: passwd123
-P Arquivo com várias senhas para tentar, Ex.: -P /root/Documentos/wordlist.txt
-s Caso o serviço que você estaja atacando utilize uma porta que não a default você terá que especifica-la usando a flag -s, Ex.: -s 3222
Ex.:
hydra -l admin -P /root/Documentos/wordlist.txt -s 321 192.165.1.14 ftp
hydra -L /root/Documentos/userslist.txt -p defaultpw 192.163.156.123:22 ssh
OBS: Você também pode usar o hydra-gtk, que é a versão com interface gráfica do hydra,
que é bastante intuitiva. Pode ser encontrada em Aplicativos > Kali Linux > Password Attacks
> Online Attacks > hydra-gtk
5. Utilizando o Hydra
Aqui vou mostrar como se utiliza o Hydra em dois exemplos, um ataque contra um FTP e outro
contra um web-form. O FTP que será atacado é o do Metasploitable e o web-form da DVWA
(Damn Vulnerable Web Application).
- Dicionários(wordlist):
Vamos criar duas pequenas wordlists para ilustrar as técnicas
OBS: São arquivos de texto contendo as seguintes palavras
Lista de Usuários(list_user)
admin_1
admin
msfadmin
Lista de senhas (list_password)
password_1
password
msfadmin
password_2
Há 12 combinações para serem testadas (3 usuários e 4 senhas). Essas combinações incluem credenciais padrão para o web-form do DVWA e o FTP do Metasploitable.
- FTP:
Usando o seguinte comando para lançar o ataque:
hydra -L list_user -P list_password 192.168.56.101 ftp -V
OBS: O -v indica o modo verbose, na qual o hydra mostra tentativa por tentativa, e o serviço/protocolo foi especificado depois do IP.
Como podemos ver abaixo, o Hydra encontrou um par válido de usuário e senha:
- Web Login Form:
Aqui a situação, por ser mais dinâmica, se torna mais complexa. Cada website apresenta
particularidades quanto aos seus formulários de senha e login e mensagens de erro ao se errar o login, devido a isso precisamos usar o burp suite para identificar o formulário, e também verificar a mensagem de erro ao se errar o login.
Tendo tais informações e computando-as no hydra, este saberá onde inserir o login e a senha, e também conseguirá identificar quando o login e senha não são válidos através da mensagem de erro, e caso o login tenha sido feito com sucesso não haverá mensagem de erro e o hydra dará timeout e concluirá que aquele usuário e senha são válidos.
Configurando o Burp Suite como proxy e fazendo a requisição de login no DVWA capturamos este pacote, que nos mostra o formulário (segunda caixa vermelha):
Temos a localização da página de login: /dvwa/login.php
Temos o formulário: username=admin&password=password&Login=Login OBS: Perceba que admin e password foi a tentativa de usuário e senha feita manualmente
E username e password são os nomes dos campos de usuário e senha.
E como esse usuário e senha não são válidos a aplicação retornará um erro: Login Failed.
Agora que temos as informações vamos montar o comando do Hydra. Que será constituido de duas partes, um já conhecida e estudada, e outra especifica do web-form
A conhecida:
hydra -L list_user -P list_password 192.168.56.101 http-post-form
OBS: http-post-form é o sserviço/protocolo que estamos utilizando no ataque, HTTP pelo método POST.
A parte específica:
Que é constituida da localização da página de login (/dvwa/login.php)dois pontos o formulários com o campo de usuário escrito ^USER^ e o campo de senha escrito ^PASS^ (username=^USER^&password=^PASS^&Login=Login) dois pontos e a mensagem de erro.
"/dvwa/login.php:username=^USER^&password=^PASS^& Login=Login:Login failed"
Jutando as duas partes (mais a flag -V):
hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Lo gin:Login failed" -V
Como podemos ver, o hydra encontrou um usuário e senha válidos:
Referência: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Comment