Atacando redes wifi com Aircrack-ng protegidas com criptografia WEP

Muitos roteadores vem com um método de criptografia padrão chamado Wired Equivalent Privacy (WEP). Um problema fundamental com o WEP é uma falha no algoritmo, o qual é possível um atacante recuperar qualquer chave WEP. WEP usa a cifra de fluxo Rivest Cipher 4 (RC4) e uma pre-shared key. Qualquer um que queira se conectar à rede pode usa a mesma chave, composta de uma string de dígitos hexadecimais, tanto para criptografar quanto para descriptografar. Os dados em texto claro (não criptografados) passam por uma operação de OU-Exclusivo (XOR) bit a bit de fluxo com uma chave para criar um texto cifrado.

A operaçõe tem quatro possibilidade:

  • 0 XOR 0 = 0
  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 1 XOR 1 = 0

Os zero e um em um fluxo de dados pode representar qualquer dado sendo enviad através da rede. Veja um exemplo de texto claro sendo cifrado com XOR e uma chave para criar um texto cifrado:

Criptografia WEP

Criptografia WEP

Quando descriptografado, a mesma chave é usada no XOR novamente com o texto cifrado para restaurar o texto original.

Descriptografia WEP

Descriptografia WEP

A chave compartilhada WEP pode ser tanto de 64 ou 148 bits. Em ambos os casos, um vetor de inicialização (IV) fazer com que os primeiro 24 bits da chave adicione aleatoriedade, fazendo com que o tamanho efetivo da chave seja somente 40 ou 104 bits. Adicionar aleatoriedade com um IV é comum em sistemas criptográficos porque se uma mesma chave é usada repetidamente, atacantes podem examinar o resultado do texto cifrado por padrões e potencialmente irão quebrar a criptografia.

Criptoanalistas sempre acham aleatoriedades não implementadas corretamente em algoritmos criptográficos, como é o caso do WEP. Para começar, 24 bits de aleatoriedade é pouco para os padrões modernos de criptografia.

O IV e a chave são concatenados, então rodam através de um algoritmo de key-scheduling (KSA) e um gerador numérico pseudoaleatório (PRNG) para criar uma chave de fluxo. Próximo passo é o valor de verificação de integridade (ICV) é calculado e concatenado com o texto claro antes da criptografia para prevenir atacantes de interceptarem os textos cifrados, trocando alguns bits e trocando o resultado do texto claro descriptografado de algo malicioso ou pelo menos enganador. O texto claro é então passado pelo XOR com a chave de fluxo. O pacote resultante é feito do IV, do ICV, do texto claro e uma chave ID de dois bits.

Fluxo de criptografia WEP

Fluxo de criptografia WEP

A descriptografia é semelhante. O IV e a chave (indicado pelo ID da chave), armazenada em texto claro como parte do pacote, são concatenadas e rodam através do mesmo KSA e PRNG para criar uma chave de fluxo idêntica a qual foi usada para criptografar. O texto cifrado é então passado pelo XOR com a chave de fluxo para revelar o texto claro e o ICV. Finalmente, o ICV descriptografado é comparado com o valor ICV texto claro acrescentado ao pacote. Se os valores não coincidirem, o pacote é jogador fora.

Fluxo da descriptografia WEP

Fluxo da descriptografia WEP

Falha do WEP

Infelizmente, WEP tem um problema de herança que permite um atacante recuperar uma chave ou alterar pacotes legítimos. De fato, cada chave WEP é recuperável por um atacantes armado o suficiente com textos cifrados e criptografados com a mesma chave. O único criptosistema que realmente é seguro é um one-time pad aleatório, o qual usa a chave apenas uma vez. O principal problema com o WEP é que um IV de 24 bits não introduz uma aleatoriedade suficiente; isto tem apenas 2 elevado a 24 (que são 16.777.216) valores.

Não tem uma forma padrão para placas wireless e access points para calcular IVs e, na prática, o espaço usado IV pode ser ainda menor. De qualquer forma, dado pacotes suficientes, IVs vai ser reutilizada e o mesmo valor (chave estática concatenado com o IV) será utilizada para gerar a mensagem cifrada. Passivamente escutando o tráfego (ou melhor ainda, injetando o tráfego na rede para forçar mais pacotes e, portanto, mais IVs a serem gerados), um atacante pode recolher pacotes suficientes para realizar criptoanálise e recuperar a chave.

Da mesma forma, o ICV tenta evitar que os invasores interceptem a mensagem criptografada, lançando bits e mudando o texto claro resultante, é insuficiente. Infelizmente, existe uma deficiências na aplicação do Cyclic Redundancy Check 32 (CRC-32) do ICV que pode permitir que atacantes criem o ICV correto para uma mensagem modificada. Como o CRC-32 é um algoritmo linear, lançando um bit específico no texto cifrado teremos um resultado determinístico no ICV resultante e um atacante com o conhecimento de como CRC-32 é calculado poderia causar uma mensagem modificada ser aceita. Assim, a implementação ICV, como a IV, não é considerada para os padrões criptográficos modernos.

Nós podemos usar o Aircrack-ng para recuperar a chave compartilhada de uma rede wireless protegida com WEP.

Quebrando chaves WEP com o Aircrack-ng

Existem muitas formas de quebrar as chaves WEP, incluindo o ataque de falsa autenticação, de fragmentação, chopchop, caffé latte e o PTW. Veremos o ataque da falsa autenticação, o qual precisa de apenas um cliente legítimo conectado ao access point.

Nós usaremos o sistema host para simular um cliente conectado. Primeiro, mudamos a segurança do roteador para WEP e depois devemos ter certeza de que a placa está no modo monitor, assim você poderá capturar o tráfego da rede sem a primeira autenticação.

Agora para ver quais dados podemos coletar usando o Airodump-ng do Aircrack-ng. Diga ao Airodump-ng para usar a interface wireless no modo monitor mon0 e use a flag -w para salvar todos os pacotes em um arquivo.

root@kali:~# airodump-ng -w book mon0 --channel 6
CH  6  ][ Elapsed: 20 s ][ 2016-09-18 16:22
BSSID P             WR   Beacons  #Data,  #/s  CH  MB   ENC  CIPHER AUTH ESSID
00:23:69:F5:B4:2Bu  -53  22       6       0    6v  54 . WEP  WEP         linksysx
BSSID               STATION            PWR  Rate   Lost Frames Probe
00:23:69:F5:B4:2B   70:56:81:B2:F0:53  -26  54-54  0         6

Este scan inicial coleta todas as informações que precisamos para começar a atacar contra o WEP do access point. Aqui nós temos o BSSID, o canal wireless, algoritmo de criptografia e o SSID. Usaremos esta informação para coletar os pacotes para quebrar a chave WEP. Sua própria informação de configuração é diferente, claro, mas aqui está com o que iremos trabalhar:

  • Base Station MAC Address: 00:23:69:F5:B4:2B
  • SSID: linksys
  • Channel: 6

Injetando pacotes

Embora a saída Airodump-ng mostrada anteriormente exibe algum tráfego a partir do access point, para quebrar uma chave WEP de 64 bits, precisamos de cerca de 250.000 IVs, e pra uma chave WEP de 148 bits, cerca de 1.500.000. Ao invés de braços cruzados capturando pacotes, vamos capturar e retransmitir pacotes para o access point para gerar IVs exclusivos rapidamente. Nós precisamos nos autenticar, porque se o nosso endereço MAC não é autenticado com o access point, todos os pacotes que enviarmos serão descartados, e vamos receber um pedido de deauthentication. Usaremos Aireplay-ng para autenticação falsa com o access point e enganá-lo para responder aos nossos pacotes injetados.

Ao usar autenticação falsa, nós dizemos ao access point que estamos prontos para provar que sabemos a chave WEP, como mostrado abaixo. Claro, porque não sabemos a chave ainda, nós não iremos enviá-lo, mas o nosso endereço MAC está agora na lista de clientes que podem enviar pacotes para o ponto de acesso, daí a autenticação falsa.

root@kali:~# aireplay-ng -1 0 -e linksys -a 00:23:69:F5:B4:2B -h 00:C0:CA:1B:69:AA mon0
20:02:56 Waiting for beacon frame (BSSID: 00:23:69:F5:B4:2B) on channel 6
20:02:56 Sending Authentication Request (Open System) [ACK]
20:02:56 Authentication successful
20:02:56 Sending Association Request [ACK]
20:02:56 Association successful :-) (AID: 1)

Nós falsificamos a autenticação usando as seguintes flags com seus dados associados:

  • -1 diz ao Aireplay-ng para falsificar autenticação;
  • 0 é hora de retransmitir;
  • -e é o SSID; no meu caso linksys;
  • -a é o MAC address do access point que queremos nos autenticar;
  • -h é o MAC address da nossa placa (a qual deve estar ligada no dispositivo);
  • mon0 é a interface para usada para falsificar autenticação.

Após enviar solicitação ao Aireplay-ng, você deve receber um smiley e a indicação de que a autenticação foi um sucesso.

Gerando IVs com o ataque ARP Request Relay

Como a base está disposta a aceitar pacotes de nós, podemos capturar e retransmitir pacotes legítimos. Enquanto o ponto de acesso não vai nos permitir enviar o tráfego sem antes enviar a chave WEP para autenticar, podemos retransmitir o tráfego de clientes devidamente autenticados.

Nós usaremos a técnica de ataque conhecido como ARP Request Replay para gerar IVs rapidamente tento o Aireplay-ng ouvindo por uma solicitação ARP e então retransmiti-lo de volta para o access point. Quando o access point recebe uma solicitação ARP, ele faz o broadcast com uma nova IV. Aireplay-ng irá fazer o rebroadcast
do mesmo pacote ARP repetidamente. Cada vez que ele faz o broadcast, ele terá um novo IV.

Veja abaixo o ataque em ação. Aireplay-ng lê os pacotes procurando por uma solicitação ARP. Você não verá qualquer dado até o Aireplay-ng ver uma solicitação ARP que possa ser reenviada como broadcast. Veremos a seguir.

root@kali:~# aireplay-ng -3 -b 00:23:69:F5:B4:2B -h 00:C0:CA:1B:69:AA mon0
20:14:21 Waiting for beacon frame (BSSID: 00:23:69:F5:B4:2B) on channel 6
Saving ARP requests in replay_arp-1142-201521.cap
You should also start airodump-ng to capture replies.
Read 541 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...(0 pps)

Nós usamos estas três opções:

  • -3 realiza um ataque replay de solicitação ARP;
  • -b é o MAC address do access point;
  • -h é o MAC address da nossa placa de rede;
  • mon0 é a interface.

Gerando uma solicitação ARP

Infelizmente, como se pode ver no resultado acima, não vemos nenhuma solicitação ARP. Para gerar uma solicitação desta, nós usaremos o sistema host para simular um cliente através de um ping em um IP da rede a partir do sistema host conectado. Aireplay-ng verá a solicitação ARP e retransmitirá para o access point de novo e de novo.

Como você pode ver no resultado do Airodump-ng, mostrado abaixo, o número do campo #Data, indicando os IVs capturados, cresce rapidamente de acordo com que o Aireplay-ng continua a retranmitir o pacote ARP, fazendo com que o access point gere mais IVs.  Se o seu aireplay-ng -3 disser “Got adeauth/disassoc” ou algo similar e seu número #Data não está subindo rapidamente, rode um comando de associação falsa mostrada anteriormente de novo para reassociar com o access point. Seu campo #Data deve começar a subir rapidamente de novo.

CH 6 ][ Elapsed: 14 mins ][ 2016-09-18 20:31
BSSID               PWR   RXQ   Beacons #Data,  #/s  CH  MB   ENC CIPHER AUTH ESSID
00:23:69:F5:B4:2B   -63   92    5740    85143   389  6   54 . WEP WEP    OPN  linksys

Quebrando a chave

Lembre-se, nós precisamos de aproximadamente de 250.000 IVs para quebrar uma chave WEP de 64 bits. Enquanto você permanecer associado com a estação, rodando o comando novamente quando necessário e estiver gerando solicitações ARP na rede, deve levar apenas alguns minutos para coletar os IVs suficientes. Uma vez coletada os IVs necessários, nós podemos usar o Aircrack-ng para fazer o cálculo de tornar os IVs coletados em uma chave correta do WEP. Veja abaixo como nós quebraremos a chave usando a flag -b e especificando o nome do arquivo que usamos no Airodump-ng seguir pelo *.cap. Isto diz ao Aircrack-ng para ler de todos os arquivos .cap salvos pelo Airodump-ng.

root@kali:~# aircrack-ng -b 00:23:69:F5:B4:2B book*.cap
Opening book-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 239400 ivs.
KEY FOUND! [ 2C:85:8B:B6:31 ] 
Decrypted correctly: 100%

Depois de alguns segundos de análise, o Aircrack-ng retorna a chave correta. Nós podemos nos autenticar com a rede. Se isto for um pentest em uma rede de um cliente, nós podemos atacar diretamente qualquer sistema da rede.

Desafios ao quebrar WEP

Uma coisa que devemos ter em mente é que quando estamos atacando WEP, provavelmente existirão outros filtros para barrar os ataques como este. Por exemplo, o access point pode usar o filtro de MAC address para permitir apenas placas de redes com certos MAC address para se conectar, e se sua placa não estiver na lista, sua falsa autenticação irá falhar. Para dar um bypass no filtro MAC, você pode usar uma ferramenta como MAC Changer do Kali para fazer o spoof um endereço MAC e criar um valor aceitável. Tenha em mente que as chaves WEP são sempre quebráveis se podermos coletar pacotes o suficiente, e por questões de segurança, criptografia WEP não deve ser usada em produção.

É importante notar que a ferramenta Wifite, instalado por padrão no Kali Linux, se comporta como um processo em torno do pacote Aircrack-ng e irá automatizar o processo de ataque a redes sem fio, incluindo quebrar o WEP. Mas enquanto você está aprendendo como ataques Wi-Fi funciona, é melhor fazer o processo passo a passo ao invés de usar um processo de automação.

Fonte: Weidman, Georgia. Penetration Testing: A Hands-On Introduction to Hacking. 2014

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *