Reaver - Testes de segurança em redes sem fio

Neste artigo, um estudo experimental é realizado para atestar falhas presentes em roteadores com a certificação WPS habilitada. Especificamente, os testes utilizam técnicas de força bruta para recuperar chaves de autenticação de usuários na rede.

[ Hits: 36.255 ]

Por: Vanderson Diniz em 24/10/2013


Reaver / Metodologia para ataque de força bruta



Reaver

O número de possíveis combinações, ou configurações, para um conjunto de objetos para os quais há interesse em encontrar um objeto particular, é chamado de espaço de pesquisa.

Em segurança de computadores, o tipo mais comum de espaço de pesquisa é o conjunto de todas as chaves possíveis usadas em uma função criptográfica. Um espaço de pesquisa grande reduz a possibilidade de ataques de força bruta. Portanto, algo que reduza o tamanho do espaço de pesquisa seria de extremo valor para um invasor [10].

O Reaver implementa um ataque de força bruta contra a falha de projeto existente no protocolo WPS, onde muitas vezes é possível prever as sequências numéricas que compõem o código PIN.

A falha no protocolo WPS e a consequente redução de possibilidades numéricas, torna possível recuperar a senha entre 4 e 10 horas, após um certo número de combinações do código PIN.

Isto porque, fornecendo o PIN correto ao roteador, adquire-se a chave PSK, sem distinção de sua complexidade. Portanto, neste tipo de ataque é indiferente se uma senha possui caracteres alfa-numéricos ou apenas texto plano.

A. Metodologia para ataque de força bruta com o Reaver

A fim de testar a eficiência do software, foram realizados testes com o sistema operacional BackTrack 5 R3, por conter o Reaver previamente instalado, assim como, outros softwares necessários que antecedem o processo de força bruta. Os testes foram realizados em redes Wireless pré-configuradas com o protocolo WPS habilitado.

O primeiro passo para iniciar o ataque, é colocar a placa de rede em modo monitor (equivalente ao Promiscue Mode em redes cabeadas), após certificar-se da disponibilidade de uma placa de rede sem fio e que esta esteja habilitada.

Para isso, é utilizado o software airmon-ng e os parâmetros necessários são:

# airmon-ng start <interface>

Em que <interface>, especifica a interface de rede sem fio, normalmente wlan0. Correspondente a essa interface, é criada uma interface virtual em modo monitor com o nome mon0.

O comando básico necessário para a execução do Reaver, necessita da especificação da interface de rede em modo monitor e o BSSID (Basic Service Set Identifier) ou MAC do roteador.

No primeiro teste realizado, tendo como alvo o roteador da marca Belkin, o Reaver foi executado com os argumentos básicos, acrescidos de comandos que permitem uma visualização detalhada do processo em execução, os quais foram:

# reaver -i mon0 -b <BSSID> -vv
 -v, --verbose ::   Apresenta avisos não-críticos (-vv para mais).
   
   
O Reaver apresentou os resultados após 10 horas do processo de força bruta e estes foram coerentes com as metodologias propostas em outros trabalhos.

O segundo teste, ainda com o roteador Belkin, utilizou um parâmetro do Reaver que, teoricamente, melhora o desempenho do ataque. Este parâmetro é dado por:

# reaver -i mon0 -b <BSSID> -a -vv
 -a :: Auto detectar as melhores opções avançadas para o AP.
 
 
Não houve diferença de tempo no processo e o Reaver recuperou o PIN e a senha também em 10 horas.

O terceiro teste foi realizado tendo como alvo, um roteador Power Box GVT. O teste seguiu a mesma metodologia apresentada com o roteador Belkin, e ao utilizar os parâmetros básicos e automatizado (-a), os resultados não foram satisfatórios.

O processo de força bruta limitou-se a receber mensagens de advertência (warning) e não foi possível manter uma associação com o AP após um certo número de tentativas.

Página anterior     Próxima página

Páginas do artigo
   1. Apresentação
   2. Wi-Fi Protected Setup (WPS)
   3. Reaver / Metodologia para ataque de força bruta
   4. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

CheckSecurity - Ferramenta para segurança simples e eficaz, com opção para plugins

Computação Forense - Entendendo uma perícia

GNU/Linux é 100% Seguro?

Análise de Atividades Suspeitas com Audit

Sudo 1.8.12 - Parte II - Como sudo funciona

  
Comentários
[1] Comentário enviado por px em 24/10/2013 - 04:49h

Bacana! mais uma vulnerabilidade de protocolo e hardware mal configurado nos roteadores, além dos firmwares que sempre vem com backdoors hoje em dia.

Ótimo artigo colega nota 10!

AHH a um tempinho atrás escrevi sobre o Macflood em aparelhos vulneráveis, se quiser dar uma olhada no artigo (já que são relacionados):

http://www.vivaolinux.com.br/artigo/MAC-Flood-E-agora/

[2] Comentário enviado por danniel-lara em 24/10/2013 - 09:08h

Bah , meus parabéns
ficou Bagual o Artigo

[3] Comentário enviado por VandersonDiniz em 24/10/2013 - 13:06h

Pessoal, obrigado pelos comentários.
px, acabei de ler o seu artigo. Muito bem detalhado, parabéns.

Agora vejam se podem me ajudar em uma situação. Vou colar aqui um email que enviei para tentar tirar essa dúvida.

"Hoje encontrei uma situação que não me deu muita escolha. Em todos os tutoriais/livros que segui, ainda não vi qual o procedimento a ser utilizado quando um roteador é configurado para permitir a entrada ao setup, somente a usuários que tenham o MAC cadastrado (filtrado).
No teste de hoje, o roteador estava com as configurações de segurança abertas e qualquer usuário poderia se conectar e navegar normalmente, no entanto, se tentasse acessar o setup do roteador, essa página não carregava, impossibilitando assim, realizar um ataque (força bruta). Mantra, Hydra, Nessus, não mostraram tanta coisa. (é certo que, relativamente, alguns destes não são específicos para isso.)

Então, qual o procedimento a ser utilizado neste caso?

Eu pensei em capturar pacotes com o wireshark, mas, e depois? Como identificar um MAC que fosse um dos legítimos para esse roteador, em meio a tantos MAC's?"

[4] Comentário enviado por px em 25/10/2013 - 04:49h


[3] Comentário enviado por VandersonDiniz em 24/10/2013 - 13:06h:

Pessoal, obrigado pelos comentários.
px, acabei de ler o seu artigo. Muito bem detalhado, parabéns.

Agora vejam se podem me ajudar em uma situação. Vou colar aqui um email que enviei para tentar tirar essa dúvida.

"Hoje encontrei uma situação que não me deu muita escolha. Em todos os tutoriais/livros que segui, ainda não vi qual o procedimento a ser utilizado quando um roteador é configurado para permitir a entrada ao setup, somente a usuários que tenham o MAC cadastrado (filtrado).
No teste de hoje, o roteador estava com as configurações de segurança abertas e qualquer usuário poderia se conectar e navegar normalmente, no entanto, se tentasse acessar o setup do roteador, essa página não carregava, impossibilitando assim, realizar um ataque (força bruta). Mantra, Hydra, Nessus, não mostraram tanta coisa. (é certo que, relativamente, alguns destes não são específicos para isso.)

Então, qual o procedimento a ser utilizado neste caso?

Eu pensei em capturar pacotes com o wireshark, mas, e depois? Como identificar um MAC que fosse um dos legítimos para esse roteador, em meio a tantos MAC's?"


Não entendi sua dúvida... bom só entendi a última pergunta, e a resposta é usando as proteções do hardware! no próprio roteador tem um "log" que ficam armazenados os MAC que acessam a rede, quando um MAC deixa de acessar por um tempo ele é tirado da tabela.

E valeu por ler o Artigo, obg pelos elogios!

PS: Re li e re li, você quer boquear o acesso a MACs que não estejam cadastrados para acesso ao roteador, não é?

2 opções (se for isto)

1- Ir no roteador e ver se conta com esta opção de filtragem...

2- Configurar um Proxy para gerenciar o acesso à sua rede, bloqueando assim MACs que não estejam liberados para acessar a página do roteador.

Espero que tenha sido útil, at+

[5] Comentário enviado por VandersonDiniz em 25/10/2013 - 11:56h

Vamos aos detalhes, px.

Fui realizar um teste em um roteador que "já" estava configurado para bloquear acesso ao setup, de MAC's que não estivessem cadastrados. Ou seja, se eu tentasse acessar 192.168.0.1 (gateway do roteador) e entrar nas configurações, eu não conseguiria, pois o meu MAC não estava cadastrado.

A internet provida por esse roteador permitia que qualquer usuário se conectasse sem senha alguma (aberta).

O meu desafio era burlar essa proteção de filtragem por MAC, entrar no setup e ter controle total do roteador.
Obs.: eu tinha acesso físico ao roteador e sei que bastava "resetá-lo" para acabar com essa filtragem e fazer minhas próprias configurações. Mas não podia fazer isso (de acordo com as regras do desafio).

Tentei acessar 192.168.0.1 (gateway do roteador) e para os MAC's que não estão cadastrados, esta página nem carrega, desta forma, não aparece o "campo" de login.

A pergunta é: Como acessar as configurações do roteador, sem ter o MAC cadastrado?
Como burlar essa filtragem?


Espero ter sido mais claro.
Aguardo seus comentários e agradeço antecipadamente.

[6] Comentário enviado por Miqueloti em 25/10/2013 - 13:47h

Vanderson, creio que neste caso não adiante acertar a senha, pois o access point irá "dropar" qualquer pacote que não seja proveniente de seu MAC Filter.

Estou começando em redes em geral (trabalho com WANs de operadoras) e desconheço na minha pouca experiencia não vejo uma forma de você burlar isto sem ter um MAC Valido para poder realizar um clone e passar no roteador.

Não sei se dá para fazer um sniffer em uma WLAN sem você ter um endpoint conectado a ela. Talvez a galera com expertise em segurança saiba como capturar um MAC válido. Fica no ar a dúvida para que a galera com mais experiência responda.

[7] Comentário enviado por VandersonDiniz em 25/10/2013 - 14:28h

Beleza Miqueloti.
Pretendo realizar o mesmo teste em breve. Desta vez vou realizar uma captura de pacotes e ver o que consigo.
Se os resultados forem positivos, voltarei aqui e descrevo com detalhes.

Vamos aguardar também a resposta de Pedro.

Até mais!

[8] Comentário enviado por px em 26/10/2013 - 04:35h


[7] Comentário enviado por VandersonDiniz em 25/10/2013 - 14:28h:

Beleza Miqueloti.
Pretendo realizar o mesmo teste em breve. Desta vez vou realizar uma captura de pacotes e ver o que consigo.
Se os resultados forem positivos, voltarei aqui e descrevo com detalhes.

Vamos aguardar também a resposta de Pedro.

Até mais!


Cara o jeito mais fácil é mesmo tentar clonar um MAC já que é o próprio roteador que faz o controle, larga um snifer escutando e deixa rolar...

Você também pode tentar fazer um arpspoof para capturar os pacotes que são enviados ao roteador - quem sabe não consiga o MAC e uma senha de acesso :)

Pesquise pelo pacote "dsniff" e tutoriais sobre os aplicativos que vem nele (tem bastante coisa boa lá)

Pode-se tentar fazer um macflood também de modo que o roteador não consiga mais controlar os MAC, mas essa opção é só se as outras falharem pois pode causar paradas na rede, de inicio comesse com poucos pacotes e veja os resultados.

Para descobrir o MAC de um determinado ip você pode usar o arpspoof (presente no pacote dsniff), para isto basta:

Usage: arpspoof [-i interface] [-t target] host

arpspoof -i eth0 -t 192.168.1.1 192.168.1.5

onde eth0 é sua placa de saída de rede

192.168.1.1 é o ip do roteador

e 192.168.1.5 é o ip do pc que você quer o número MAC

basta você deixar "pingar" umas 6 vezes e apertar ctrl+c em baixo estará o número MAC, exemplo com pc e uma VM:

[px@Casa ~]$ sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.5

0:e0:1a:1a:0r:1d 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 0:e0:1a:1a:0r:1d
0:e0:1a:1a:0r:1d 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 0:e0:1a:1a:0r:1d
0:e0:1a:1a:0r:1d 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 0:e0:1a:1a:0r:1d
0:e0:1a:1a:0r:1d 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 0:e0:1a:1a:0r:1d
0:e0:1a:1a:0r:1d 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 0:e0:1a:1a:0r:1d
^C8:0:27:ab:ad:15 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 8:0:27:ab:ad:15
8:0:27:ab:ad:15 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 8:0:27:ab:ad:15
8:0:27:ab:ad:15 13:1b:13:35:a1:9 0806 42: arp reply 192.168.1.5 is-at 8:0:27:ab:ad:15

OBS: estes números são ips e MACs fictícios para exemplificar a técnica de arpspoof
Na linha com ^C é onde eu parei o programa (ctrl +c)

Conferindo o MAC da vm...

[px@Casa ~]$ arp -a
? (192.168.1.1) at 0:e0:1a:1a:0r:1d [ether] on eth0
? (192.168.1.5) at 08:00:27:ab:ad:15 [ether] on eth0

Podemos observar que os zeros só aparecem uma vez 8:0:27:ab:ad:15 (número obtido pelo arpspoof) // 08:00:27:ab:ad:15 (número MAC válido)
basta onde tiver uma única casa com um único zero colocar mais um zero

Se quiser mapear a rede antes (caso não saiba os ips) use o nmap

nmap -sP 192.168.1.0/24

OBS: Só cuidado para não cair em nenhuma regra de "anti-scan" fazendo isto e ter seu acesso bloqueado!!!

Boa sorte! :)

[9] Comentário enviado por VandersonDiniz em 26/10/2013 - 11:51h

Valeu px, assim que eu fizer o teste, volto aqui para dizer o que consegui. Talvez na semana que vem. Vou usar as suas dicas.

Para quem ainda não viu...

Vivek
http://www.pentesteracademy.com/course?id=8

[10] Comentário enviado por Buckminster em 27/10/2013 - 16:18h


[9] Comentário enviado por VandersonDiniz em 26/10/2013 - 11:51h:

Valeu px, assim que eu fizer o teste, volto aqui para dizer o que consegui. Talvez na semana que vem. Vou usar as suas dicas.

Para quem ainda não viu...

Vivek
http://www.pentesteracademy.com/course?id=8


Você tentou acessar pelo telnet?

[11] Comentário enviado por VandersonDiniz em 27/10/2013 - 17:17h

Buckminster, tentei. Nada feito.

[12] Comentário enviado por Osni em 30/10/2013 - 17:24h

Ótimo artigo!

Para logar os MACs conectados ao roteador você poderia usar o próprio airmon-ng (a menos que o admin use a rede cabeada).
O problema é que depois você teria que alterar seu mac para cada cliente capturado. Como a rede é aberta, vai ter mac pra caramba =/

[13] Comentário enviado por VandersonDiniz em 30/10/2013 - 17:37h

Valeu pelo comentário Osni.

Galera, farei o teste de intrusão na mesma rede amanhã. Assim que puder, descrevo os passos e o os resultados.
Agradeço a todos pelos comentários.

[14] Comentário enviado por VandersonDiniz em 01/11/2013 - 15:37h

Pessoal, eis uma descrição completa do teste realizado.

I - Objetivo: Obter acesso ao "setup" de um roteador configurado para limitar este acesso, somente aos dispositivos "cadastrados".

Apenas três computadores tinham acesso a esse setup. Qualquer outro que tentasse acessar o gateway e entrar nas configurações, não conseguiria. A página não carregava. Ou seja: http://192.168.0.1., não "carregou" a página, desta forma, não permitindo chegar ao login do roteador.

O segundo teste (realizado hoje) foi facilitado. Apenas para comprovar que com a técnica de mac spoofing, era possível se passar por um dispositivo legítimo(sem muitas novidades aqui).

As situações facilitadas foram:
1 - Conhecimento da senha do setup.
2 - Conhecimento dos MAC's legítimos.

Portanto:
# macchanger -m 'MAC' 'INTERFACE DE REDE'
Em seguida: http://192.168.0.1., carregou normalmente, foi possível digitar a senha e obter acesso completo ao setup, podendo assim, realizar a configuração desejada. Sucesso!

A parte, fiz uma captura de pacotes no momento em que um usuário cadastrado entrou no setup. Pretendo analisar esta captura posteriormente e observar as respostas para o 'dispositivo legítimo'.

II - Supondo um determinado cenário:

Em uma situação 'real', que eu não saiba quem são os MAC's legítimos e que esta rede contenha '50 pessoas' conectadas. Como descobrir os 3 MAC's legítimos para essa rede?

III - Algumas dúvidas

1 - Acho que, (Por favor, não encarem isso como algo tão óbvio), se em uma captura de pacotes eu não conseguir 'pegar' nenhuma 'conexão' entre os 'legítimos' e o AP, já era.(Ou não?).

2 - 5 MAC's ainda é possível você tentar forjar. 50, já é um trabalho árduo.

IV - Para finalizar

Será realizado um outro teste e desta vez, sem facilidades. Pretendo quebrar a senha (que não seja padrão) e não ter conhecimento dos MAC's cadastrados. Isso vai depender das respostas que terei quando analisar os pacotes capturados hoje.

Agradeço a todos pelos comentários e espero ter contribuído tanto com os testes, quanto com as dúvidas apresentadas.

Até mais!



*obs.: Vou postar isso como uma dúvida geral, assim, atingimos uma quantidade maior de pessoas da comunidade.

px, vou utilizar sua metodologia no próximo teste (mais complexo).

[15] Comentário enviado por px em 01/11/2013 - 16:22h

OK cara, to acompanhando sua "missão" rsrs, boa sorte!

PS:. é sorte é um fator importante na hora de capturar um MAC num ap HIUHUHU

[16] Comentário enviado por VandersonDiniz em 01/11/2013 - 16:27h

kkkkkk.
Valeu px.

[17] Comentário enviado por removido em 05/11/2013 - 13:55h

Muito Show! Já usei e reaver antes e garanto a funcionalidade!

[18] Comentário enviado por VandersonDiniz em 05/11/2013 - 14:47h

Obrigado pelo comentário, codeshell.

[19] Comentário enviado por ielris em 29/11/2013 - 00:16h

reaver e massa

[20] Comentário enviado por VandersonDiniz em 29/11/2013 - 23:00h

Galera, após um longo tempo, volto aqui para informar sobre os testes realizados descritos anteriormente.

I - Caríssimo px, sua metodologia é excelente. Testei em dois roteadores (D-Link, Linksys) com diferentes regras. Para o D-Link, obtive sucesso ao "sniffar" a rede, já para o Linksys, não consegui muita coisa. O máximo que consegui, foi uma negação de serviços aos MAC's legítimos, após algumas tentativas frustradas pelas regras.

II - "Não sei se dá para fazer um sniffer em uma WLAN sem você ter um endpoint conectado a ela".
Miqueloti, eis a chave da questão. Capturar os pacotes e testar os MAC's capturados.

"Para logar os MACs conectados ao roteador você poderia usar o próprio airmon-ng (a menos que o admin use a rede cabeada).
O problema é que depois você teria que alterar seu mac para cada cliente capturado. Como a rede é aberta, vai ter mac pra caramba =/"
Osni, esse era o martírio que eu temia. Para melhorar essa situação, podemos abrir a captura realizada com o Wireshark. Depois, aplica-se um filtro "IP" (para mostrar os hosts que acessaram tal endereço) e outro filtro MAC (wlan.addr ==). Enfim, é possível distingui-los com maior facilidade. É uma boa opção também. (Sugerida por Luiz Vieira (hackproofing) em resposta a um email)

Enfim, não foi 100%, mas já sai do canto com a experiência compartilhada por cada um.

Agradeço a todos pelas colaborações.

Até mais pessoal!






[21] Comentário enviado por marcelohcm em 17/01/2014 - 14:09h

já descobri uma senha de rede sem fio aqui no predio usando o reaver.... não durou nem 3 minutos e já me mostrou a senha......
usei o backtrack

[22] Comentário enviado por VandersonDiniz em 17/01/2014 - 15:47h

Isso aí Marcelo. Também já descobri em questão de minutos (1 ou 2), mas depende muito das configurações e distância. Para o meu roteador, Belkin, o único tempo que consegui foi em 10 horas. Para um outro roteador, consegui em 2 minutos. O PIN deste era 123... . Esses detalhes minimizam ou dificultam o trabalho.

[23] Comentário enviado por rltmetall em 06/02/2014 - 16:53h

Olá galera, estou usando o reaver aqui em casa, e estou com a seguinte dúvida, o reaver levou 12 horas para fazer a força bruta e me retornou a senha de dois roteadores, porém não consigo me conectar no mesmo, assim logo pensei que poderia ser porque estavam configurados para fazer bloqueio por MAC, e com isso utilizei o airodump-ng para verificar quais MAC estão conectados ao roteador onde quero me conectar, ele me retornou alguns clientes conectados, eu clonei os MACS dos clientes no meu ubuntu e no windows 8 porém não consigo me conectar. Alguém saber alguma coisa que está faltando par eu tentar ? O que mais devo fazer ?

[24] Comentário enviado por VandersonDiniz em 06/02/2014 - 23:18h

Olá rltmetall, observe se os IPs são os mesmos sempre. Pode ter algum bloqueio por IP também. O sinal da rede está bom? Verifique também, se estiver usando o WICD, se o protocolo de segurança está correto e tente conectar com outros dispositivos. Um celular bem perto do local é uma boa tentativa.
Depois volte aqui para dizer o que conseguiu.
Valeu!

[25] Comentário enviado por angkor em 24/03/2014 - 15:58h


[14] Comentário enviado por VandersonDiniz em 01/11/2013 - 15:37h:

II - Supondo um determinado cenário:

Em uma situação 'real', que eu não saiba quem são os MAC's legítimos e que esta rede contenha '50 pessoas' conectadas. Como descobrir os 3 MAC's legítimos para essa rede?

III - Algumas dúvidas

1 - Acho que, (Por favor, não encarem isso como algo tão óbvio), se em uma captura de pacotes eu não conseguir 'pegar' nenhuma 'conexão' entre os 'legítimos' e o AP, já era.(Ou não?).

2 - 5 MAC's ainda é possível você tentar forjar. 50, já é um trabalho árduo.

Amigo VandersonDiniz, você alcançou o seu objetivo?
Se não, tenho uma pergunta. Na situação ilustrada acima você conseguiu os 50 MAC's?
Se sim, faça um script simples que altere seu MAC para um dos MAC's da sua lista em cada looping e teste com o links. Quando o seu MAC coincidir com um dos 5 MAC's autorizado você obterá algo parecido com isto:


angkor@dust:~$ links -dump 192.168.0.102
401 Unauthorized

Authorization required.


[26] Comentário enviado por VandersonDiniz em 24/03/2014 - 16:15h

Olá angkor!

Em relação à dúvida que postei, sim, obtive êxito nos testes.
Agradeço por apresentar esta nova ferramenta, vou usá-la em breve.

Valeu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts