Olá!
Venho nessa postagem explicar de forma didática como obter senhas de uma rede sem fio utilizando o sistema operacional Kali Linux. Utilizo a combinação de dois programas: Aircrack-ng e Crunch. Os dois programas são gratuitos, e fazem parte das ferramentas pré-instaladas no sistema operacional Kali. São ferramentas CLI (Command-Line Interface), ou seja, são programas que permitem que os usuários digitem comandos de texto dando instruções ao computador para fazer funções específicas. E nessa postagem, o que acredito ser essencial será demonstrado.
Segundo o site oficial do Kali, o Aircrack-ng é um programa de quebra de chaves 802.11 WEP e WPA-PSK que pode recuperar chaves após a captura de pacotes de dados suficientes. Ele implementa o ataque FMS padrão, juntamente com algumas otimizações como os ataques do KoreK, bem como o novo ataque PTW, tornando o ataque muito mais rápido em comparação com outras ferramentas de cracking WEP. Fonte: https://tools.kali.org/wireless-attacks/aircrack-ng
Também segundo o site oficial do Kali, Crunch é um gerador de lista de palavras onde você pode especificar um conjunto de caracteres padrão ou um conjunto de caracteres que você especificar. Crunch pode gerar todas as combinações e permutações possíveis. Seus recursos são:
- Gerar listas de palavras em ambas as formas de combinação e permutação;
- Pode separar a saída pelo número de linhas ou tamanho do arquivo;
- Retomar o suporte;
- Padrão suporta números e símbolos;
- O padrão suporta caracteres maiúsculos e minúsculos separadamente;
- Adiciona um relatório de status ao gerar vários arquivos;
- Opção –l para suporte literal de @, % ^;
- Opção –d para limitar caracteres duplicados. (Consulte o arquivo man para obter detalhes);
- Suporte a Unicode.
Fonte: https://tools.kali.org/password-attacks/crunch
Essas duas ferramentas combinadas são o suficiente para conseguirmos capturar um sinal de uma rede wi-fi, analisarmos, e decifrarmos a senha de conexão dessa rede.
Irei pausadamente expor cada comando, procurando detalhar sobre eles. Sem mais delongas… ao ataque!
1º COMANDO – AIRMON-NG
O comando airmon-ng faz parte do pacote Aircrack-ng, e é utilizado para ativar e desativar o modo de monitoramento em interfaces sem fio. Também pode ser utilizado para retornar do modo de monitoramento para o modo gerenciado.
Ao digitar o comando (sendo usuário root), você terá a relação das interfaces sem fio:

IMAGEM: Do Autor
Vários processos podem interferir no Airmon-ng. O uso da opção de verificação check exibirá todos os processos que possam ser problemáticos, e a opção de eliminação da verificação check kill encerrará os processos para você.

IMAGEM: Do Autor
Feito a verificação, e encerramento de processos que possam prejudicar o monitoramento, ative-o (start) na interface sem fio fornecida (wlan0), fixa no canal 6. Dessa forma, uma nova interface sem fio será criada (wlan0mon, nesse caso). Utilizaremos esse nome.

IMAGEM: Do Autor
No modo monitor, a interface sem fio fica DESABILITADA para uso de conexão de internet. Por isso, é importante que na estação de trabalho você possua outra conexão. No meu caso, utilizo o Kali Linux virtualizado no VirtualBox, e disponibilizei uma interface sem fio (Antena Wi-Fi USB) própria para essa máquina virtual.
Para retornar a interface sem fio em modo monitor, para modo gerenciado, utilize a opção de parada (stop).

IMAGEM: Do Autor
Lembrando, precisaremos da interface sem fio em modo monitor.
2º COMANDO – AIRODUMP-NG
O Airodump-ng está incluído no pacote Aircrack-ng e é usado para captura de pacotes brutos de frames 802.11. É ideal para coletar vetores de inicialização WEP, para utilizarmos no aircrack-ng. Se você tiver um receptor GPS conectado ao computador, o airodump-ng pode registrar as coordenadas dos pontos de acesso descobertos.
Utilizando a interface wlan0mon, descubra com o Airodump-ng as redes que a interface alcança. O comando inserido: airodump-ng wlan0mon.

IMAGEM: Do Autor
Depois que conseguiu os dados (BSSID, STATION, CHANNEL), pode pressionar ctrl + c para interromper a varredura. Em seguida, começaremos a salvar cópias dos pacotes que transitam em uma das redes que escolhermos. Os nomes das redes são representados em ESSID, e como gosto de aprender, mas não de armar golpes, utilizo a mesma rede que estou conectado com a estação de trabalho (Andrade),visto que pretendo trabalhar na legalidade.
Utilizo sempre o BSSID, mas posso apenas trabalhar com o CH (channel). O problema é que surgem redes no mesmo canal, pode gerar conflito.
Bom, para começar a “cheirar”(sniff), vetores de inicialização montando um arquivo de registro das capturas, utilizo o seguinte comando:
airodump-ng –bssid {número da interface a ser “sniffada”} –c {número do canal} –w {diretório a salvar os vetores/nome da rede, ou do canal}
Ou seja, no meu caso ficou (como exemplo), airodump-ng –bssid D8:0D:17:72:19:02 –c 6 –w /root/Andrade/

IMAGEM: Do Autor
Outra opção que pode ser útil, é a opção –ignore-negative-one, isso porquê algumas placas ficam estáticas quando atingem nível -1. Eu não utilizei, mas vale a dica.
Mantendo esse programa rodando, abra um outro terminal, e vamos explorar um outro comando, enquanto esse registra os dados…
3º COMANDO – AIREPLAY-NG
O Aireplay-ng está incluído no pacote Aircrack-ng e é usado para injetar frames sem fio. Sua principal função é gerar tráfego para uso posterior no Aircrack-ng, com o intuito de quebrar as chaves WEP e WPA-PSK. O Aireplay-ng possui muitos ataques que podem desautenticar clientes sem fio com o objetivo de capturar dados de handshake WPA, autenticações falsas, repetição interativa de pacotes, injeção de solicitação ARP artesanal, e reinjeção de solicitação ARP.
Com o Aireplay-ng, iremos conduzir um ataque de des-autenticação, fazendo com que aconteçam quebras de conexões, forçando dispositivos a criarem conexões novas, enquanto nossa estação de trabalho captura as trocas de vetores. Coincidindo, capturaremos senhas cifradas.
Irei rodar um ataque com 500 quebras de autenticação. Para isso preciso do BSSID, e STATION.
NOTA: O que são esses códigos de dois dígitos seguidos de : ? São Endereços Físicos. Ou melhor dizendo, Endereço MAC. Vide: https://pt.wikipedia.org/wiki/Endere%C3%A7o_MAC

IMAGEM: Do Autor
Utilizei o comando aireplay-ng –deauth 500 –a D8:0D:17:72:19:02 –c 1C:BF:CE:80:86:DC wlan0mon , sendo –a referência ao ponto de acesso, e –c referência ao cliente conectado. Recapitulando, esse ataque envolve a quebra de conexão entre o ponto de acesso e um dispositivo conectado. Pode ser um smartphone, por exemplo. Nesse exemplo, estarei derrubando nada mais, nada menos, que a própria estação de trabalho. Vale apenas por experiência.
Quando tudo terminou…

IMAGEM: Do Autor
Para você utilizar o comando, seria assim:
aireplay-ng –deauth {Quantidade de quebra de conexões} –a {Endereço MAC do ponto de acesso} –c {Endereço MAC do dispositivo conectado} wlan0mon
Observe que no terminal onde o airodump-ng ficou rodando, apareceu a mensagem WPA handshake: D8:0D:17:72:19:02. Conseguimos o que precisávamos. O fundamento desse experimento é recolher esse dado.

IMAGEM: Do Autor
Pode digitar ctrl+c no terminal onde roda o airodump-ng, porque NÃO precisamos mais ficar monitorando. Em seguida, caso queira utilizar a interface sem fio, digite o comando explicado anteriormente para reabilitar a antena em modo gerenciado. E, se utiliza esse adaptador para conexão de sua estação, digite também NetworkManager start, para voltar a poder ter conexões.
4º – CRUNCH
Crunch é um gerador de lista de palavras onde você pode especificar um conjunto de caracteres padrão ou um conjunto de caracteres que você especificar. Com essa lista de palavras, conseguimos confrontar o WPA Handshake capturado com uma possibilidade enorme de palavras afim de tentarmos obter a senha de conexão correta. O nome correto para essa técnica é Ataque Dicionário, onde a estação de trabalho começa a fazer uma busca enorme em palavras que podem ser a chave correta da conexão.
O Crunch pode criar uma lista de palavras com base nos critérios que você especificar. A saída do programa pode ser enviada para tela, arquivo ou para outro programa. Para utilizar, deve-se digitar o comando:
crunch {MÍNIMO DE CARACTERES} {MÁXIMO DE CARACTERES} [Opções]
Onde, mínimo e máximo são números…
Existem instruções e exemplos sobre como usar o Crunch na página do manual. Consulte, digitando o comando man crunch. Esse comando man é padrão no Linux.
Na pasta que escolhi anteriormente para registro de dados capturados, existe um arquivo com a extensão .cap. Nesse arquivo o WPA Handshake estará contido. Esse arquivo .cap poderá ser utilizado em conjunto com a ferramenta Wireshark, útil para sniff em tempo real. Segue link de postagens nesse blog:
https://douglasmendes.code.blog/2020/02/16/como-usar-o-wireshark-pela-primeira-vez-pt-1/
https://douglasmendes.code.blog/2020/02/16/como-usar-o-wireshark-pela-primeira-vez-pt-2/
Nessas postagens não expliquei como deve ser feito uso com esse arquivo. Mas explore. Você pode! Se digitar no Kali o comando sudo wireshark {nome do arquivo}.cap, consegue analisar os pacotes copiados.
Voltando, decidi criar uma lista com no mínimo 8 caracteres, e no máximo 14 caracteres, contendo ABCDEFGHIJKL0123456789, mas sem salvar essa lista em um arquivo de texto específico. Utilizando a tecla pipe, consigo integrar os resultados (output results) ao aircrack-ng. O meu comando ficou assim:
Crunch 8 13 ABCDEFGHIJKL0123456789 | aircrack-ng ‘/root/Andrade-02.cap’ –w – -e Andrade
Uma forma mais prática para utilizar o Crunch sem precisar definir os caracteres é utilizando um arquivo pré-instalado na ferramenta chamado charset.lst, que se encontra no diretório /usr/share/crunch. Esse arquivo possui uma grande quantidade de padrões pré-definidos, e você pode escolher quais tipos de padrões deseja usando essa lista de sub-opções:
- lalpha: apenas letras minúsculas;
- ualpha: apenas letras maiúsculas;
- lalpha-numeric: letras minúsculas e números;
- ualpha-numeric: letras maiúsculas e números;
- lalpha-numeric-all-space: letras minúsculas, números e caracteres especiais como ?, ;, :, espaço, etc.;
- ualpha-numeric-all-space: letras maiúsculas, números e caracteres especiais como ?, ;, :, espaço, etc.;
- mixalpha: letras minúsculas e maiúsculas;
- mixalpha-numeric-all-space: letras maiúsculas, minúsculas, números, caracteres especiais e espaço.
Para utilizar o charset.lst é necessário após a definição do máximo de caracteres a ser utilizado, inserir a opção –f. Vou pegar o exemplo utilizado anteriormente, e o modificar como se estivesse utilizando esse arquivo:
crunch 8 13 –f /usr/share/crunch/charset.lst mixalpha-numeric-all-space | aircrack-ng ‘/root/Andrade-02.cap’ –w – -e Andrade
Agora, o Crunch irá gerar a lista. Próximo passo é acompanhar o Aircrack-ng funcionando.
5º COMANDO – AIRCRACK-NG
Analisando a sintaxe do que fizemos:
- -w: Caminho para o(s) nome(s) do(s) nome(s) da(s) lista(s) de palavras. (Foi utilizado -w – porque não existe um arquivo wordlist. Conforme o Crunch gera, a saída já vai direto para o Aircrack-ng. Em outro caso, na frente do -w precisaria indicar um destino.)
- -e: Seleção de destino: identificador de rede.

IMAGEM: Do Autor
Quando o Aircrack-ng encontra a senha dentro dessa lista de palavras criada pelo Crunch, onde está escrito Current passphrase: altera para KEY FOUND! [ {senha} ].
Facil não!
Comente! Fale sobre a sua experiência nessa aventura!
Até logo.