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:
Quando descriptografado, a mesma chave é usada no XOR novamente com o texto cifrado para restaurar o texto original.
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.
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.
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