sábado, 17 de abril de 2010

QUEBRANDO A CRIPTOGRAFIA WEP

Por Mateus Garcia

Neste artigo você entenderá como um Hacker munido de um computador com Interface Wireless pode obter acesso não autorizado a sua rede sem fio, usurpando sua conexão de internet. Aprenda a se defender aqui!

[!] Esse artigo é voltado para sistemas Linux, se você não conhece ou não sabe usar nada desse tipo de sistema, use o portal guiadohardware.net ou o Google Linux para se informar, pois não pretendo ensinar o B-A-BA aqui, pretendo apenas demonstrar o quão seguro pode ser uma rede Wireless na prática, sem recorrer demais à teoria.



[!] Obviamente não me responsabilizo pelo mau uso dos conhecimentos que vc adquirir no meu Blog, eu sempre parto do princípio de que “conhecimento restrito” não é e nunca será crime, todos tem o direito de conhecer a verdade, em outras palavras, estou lhe oferecendo a pílula vermelha do Morpheu, vc decide.


Muitos amigos, colegas e até parentes costumam demonstrar interesse em algumas de minhas habilidades digamos que "pouco comuns", mais especificamente na area de segurança no "mundo digital", ou para os mais iniciados, "Ethical Hacking" como é o termo correto. Na medida do possível estarei registrando aqui algumas de minhas manobras que eu entender que possam ser divulgadas. Existem certos conhecimentos que não devem ser ditos, ja outros precisam. Acredito que a segurança de um tipo de conexão de rede que está crescendo tão intensamente em todo tipo de lugar (até aqui na roça onde eu moro tem...) precisa ser um pouco mais debatida, ou no mínimo os seus usuários preisam se concientizar um pouco mais sobre o tema, afinal, ninguém deseja ter seus dados capturados do ar por algum atacante mau intencionado, A.K.A "Cracker". E acredite, pode ter um nesse exato momento lendo tudo o que sai da sua interface de rede....

Vamos então ao meu primeiro artigo do meu novo blog, a falsa segurança que os usuários acreditam ter ao usar criptografia WEP nas suas redes sem fio.

Primeiramente, vc vai precisar de um sistema Linux. Eu recomendo sagazmente o Slackware 12 para os mais experientes, ou para quem quiser mais simplicidade o Ubuntu 9.04 (Adicione os repositórios do Debian no /etc/apt/Sources.list), Debian 4 etch, ou outras distros baseadas nos repositórios do Debian.

Para compilar as ferramentas, sem dúvida o Slackware instalado em Full Instalation é de lonje a melhor opção, mas se vc quiser instalar as ferramentas através de pacotes pré compilados, use um Debian ou um derivado. Em ambos os casos os pacotes devem funcionar da mesma maneira, mas é claro que um pacote compilado na unha é sempre melhor por ser otimizado para seu hardware e principalmente para seu processador.

Comece instalando o Kismet, um poderoso analisador 802.11 que faz o Netstumbler do ruindows comer muita poeira. No slackware, baixe o fonte no site e compile-o, as dependências constam no README do pacote. Para os usuários Debian, apenas atualize o seu apt e mande instalar o kismet:

$:sudo apt-get update
$:sudo apt-get install kismet

Caso o apt não encontrar o kismet, tente uma busca no repositório com o comando:

$:aptitude search kismet

Na sequência, instale o pacote aircrack-ng, um suite de varios programas voltados a auditoria, segurança e cracking de redes wireless. No slackware, o esquema é o mesmo, baixe o fonte no site, verifique as dependências e compile-o.
Para os Usuários Debian, o mesmo procedimento anterior:

$:sudo apt-get update
$:sudo apt-get install aircrack-ng

Caso não seja encontrado o pacote, repita o procedimento de busca mais acima trocando os devidos parâmetros:

$:aptitude search aircrack-ng

O próximo passo é muito importante: verifique se o driver da sua placa wireless suporta o modo monitor (conhecido tb como Promisc Mode). No meu caso, eu tenho uma Atheros PCI, portanto eu uso o driver Madwifi-ng para ela, que suporta muito bem o modo monitor.
O mantedor do portal guiadohardware.net, Carlos E. Morimoto, em um antigo tutorial (já defasado) sobre a ferramenta kismet, fez um breve resumo sobre placas e drivers suportados (para aquela época) caso sua placa não esteja ali, experimente o Google Linux para caçar os drivers modificados para o chipset da sua interface, ou o próprio site do fabricante.

Resolvido os drivers e a configuração do kismet como mostrado no tutorial do grande Morimoto, teste o modo monitor:

#:Ifconfig ath0 promisc
(onde ath0 é a interface, cheque se é seu caso com um $:ifconfig sem parâmetros)

Cheque se deu certo:

$:ifconfig ath0

Leia a saída do ifconfig e cheque se o promisc mode esta rodando nessa interface.


Desative o modo promisc com um

#:ifconfig ath0 -promisc

Se vc chegou até esse ponto, vc está devidamente armado para começar um ataque aos Acces Points da vizinhança. É agora que a diversão começa ;)

Comece invocando o kismet como root:

#:kismet


Espere 1 ou 2 minutos para ele pegar bem todas as redes que baterem na antena, organize as redes pela ordem em que aparecerem teclando “s” e então “f”. escolha a rede que vc vai atacar e trave o channel hooping no canal apertando shift e L. isso faz o kismet parar de ficar pululando pelos canais 802.11 e trave no canal que vc escolheu, dedicando sua atenção nele. Então, aperte enter para ver os detalhes da rede escolhida, anote o BSSID (MAC do AP) e o canal da rede.


Na sequência, aperte “q” para sair dos detalhes, na mesma rede, aperte “c” para ver os MACs dos clientes conectados a ela, anote uns 2 ou 3 MACs de clientes e saia novamente com um “q”.


O airodump-ng faz parte da suite aicrack-ng, ele serve basicamente para sniffar e armazenar trafego de pacotes:
Em outro terminal, comece a capturar os pacotes dessa rede com o comando:

#:airodump-ng -w loghacker --ivs --channel Y -b XX:XX:XX:XX:XX:XX kis0

onde os xx são o BSSID da rede, kis0 a interface monitor criada pelo kismet, “-w loghacker” é um parâmetro para indicar o airodump-ng a armazenar os pacotes capturados no arquivo de texto “loghacker”, --ivs um parâmetro para ele armazenar apenas vetores (os trechos de código que contem dados que podem ser decifrados quando somados em grande numero) “–channel” o parâmetro para fazer ele capturar apenas naquele canal, e Y o canal da rede atacada. Esse comando gerará 2 arquivos no diretório atual, o “loghacker-01.ivs” e o “loghacker-01.txt”, o que nos interessa é o primeiro, onde estão sendo armazenados os vetores.


Apenas com esses dois programas, já seria suficiente para capturar os pacotes necessários, mas isso pode demorar até mesmo vários dias, dependendo da movimentação da rede. Uma maneira de acelerar as coisas é lançar um ataque de ARP Flooding contra o Acces Point sob fogo, basicamente isso significa enganar o AP com um pacote capturado da sua rede e enviando-lhe em um loop infinito a uma velocidade ajustável, o que força o AP a responder esse pacote indefinidamente enquanto ele estiver sendo enviado ao AP, o que gera na marra o tráfego que vc precisará ;)
Para esse ataque, abra outro terminal e execute o seguinte comando:

#:aireplay-ng -b XX:XX:XX:XX:XX:XX --chopchop kis0

Onde os xx como sempre é o BSSID da rede (MAC do AP), o –chopchop especifica o ataque de ARP Flooding e o kis0 a interface wifi
É possível que esse ataque falhe devido a configurações de segurança relacionadas a autenticação no AP, nesse caso ainda tem jeito:
#:aireplay-ng –h zz:zz:zz:zz:zz:zz –b XX:XX:XX:XX:XX:XX –chopchop kis0
Funciona da mesma forma, mas agora o –h zzzzzzz… serve para enganar o AP como se fosse um cliente dele que estivesse lhe enviando o pacote, logo, como vc ja deve ter deduzido, os zzz.. são um MAC de algum cliente que vc anotou.


Pronto, agora deixe essa bagunça rolando por umas 3 horas ou mais, (com sorte menos, mas provavelmente esperará mais q isso.), depois vc vai efetivamente quebrar a chave da rede desse modo:

#:aircrack-ng loghacker-01.ivs -f 6

O aircrack-ng é o programa que ficará basicamente jogando códigos num algoritmo de encriptação em busca de resultados compatíveis com os pacotes capturados, quanto mais ivs capturados, maiores são as chances de quebrar a chave e mais rápido será o cálculo. O –f 6 é o fudge fator do processo, quanto maior, maior a chance de achar a chave, mas maior é o tempo de cálculo também. O padrão é 2.
Fazendo uma busca na internet, vc verá que é necessário entre 250.000 a 1.000.000 de IVs capturados para quebrar rapidamente a chave WEP de 40/128bits. O help do aircrack-ng diz que 80.000 normalmente já dá pro gasto. Bom, pasmem, eu já consegui uma com apenas um pouco mais que 10.000 IVs, com um fudge fator de 5!!!
O resultado do cálculo é 99,9% das vezes preciso. Raramente falha (nunca vi tal caso).



OBSERVAÇÕES IMPORTANTES

1) Ao lançar o ataque de ARP Flooding, o administrador da rede poderá perceber o ataque de duas maneiras, através dos logs do próprio AP e pela queda repentina no desempenho da rede. Para que o desempenho da rede não seja MUITO influenciado, é importante manter a velocidade do ataque de 512packets/s para baixo. O que pode ser feito adicionando o parâmetro “-x numero” ao comando do aireplay em qualquer ponto antes da interface.

2) Se vc estiver muito lonje do AP, com sinal fraco, não adianta subir muito a velocidade do ataque pois o AP não conseguirá responder tão rapidamente um sinal tão fraco
3) O aireplay pergunta sobre qual pacote capturado vc quer usar para o ataque, sempre escolha um pacote com o MAC de destino = ao BSSID da rede, do contrario, o trafego gerado será inútil e vc estará revelando sua presença a toa caso haja algum administrador de redes atento no momento do ataque.





4) Invadir redes é crime! Não faça isso! Eu sei que vc usará os conhecimentos ganhos aqui para hackear apenas a sua própria rede por pura vontade de aprender ;)

5) As técnicas descritas aqui servem apenas para atacar redes usando chaves de criptografia no padrão WEP, os padrões WPA e WPA2 são completamente imunes a esse tipo de ataque (Embora vulneráveis a outros tipos que contarei quando conseguir invadir uma... ;)


HACKER COMPULSIVO FRENÉTICO” – AGILIZANDO E AUTOMATIZANDO A BAGUNÇA


Na terceira rede com WEP que invadi já estava ficando monótono dar tantos comandos toda hora, sem contar que no ataque de flood muitas vezes é interrompido por vários fatores, fazendo vc ter que ficar ali parado olhando para a tela esperando ele ser interrompido para reiniciar o mesmo ataque.
O aircrack Tb é interrompido se não achar a chave devido a Ivs insuficientes, de modo que vc teria que ficar testando toda hora fazendo um copia do log do airodump e testando essa copia. Tem que ser trouxa ou então estar com muita vontade de invadir alguém pra passar tanto tempo parado sem fazer nada só olhando a tela esperando para repetir fordisticamente quase sempre os mesmos comandos.
A solução é simples: escreva um algoritmo para rodar seus algoritmos!

Eu resolvi a parada assim:


Problema 1 – o aireplay é interrompido toda hora

Solução: Salve um bom pacote em um arquivo .cap (repare que o aireplay salva os pacotes que vc usou em um arquivo replay_numeros, veja um pacote bom e renomeie o .cap dele para packet.cap) e crie um algoritmo de repetição em Shell script para repetir o comando automaticamente:
Idéia:
Enquanto uma condição for falsa:
faça
Lançar ataques de ARP Flooding contra o Concentrador da rede
sair

concretizando a idéia num Shellscript:

#!/bin/bash
Num1=1
Num2=2

until Num1=Num2

do
yes | aireplay-ng -r packet.cap -h MAC -B BSSID -x velocidade --chopchop interface
done



O “yes | “ serve para confirmar positivo para a pergunta que o aireplay faz ao perguntar sobre o pacote.
Salve esse script com o nome de flood.sh, e de permissões 777 e executável à ele:


#chmod 777 flood.sh
#chmod u+x flood.sh


Agora é só executar o script para ter um ataque contínuo de ARP Flooding contra o AP sem precisar de intervenção humana:


#:./flood.sh


Isso resolve o problema de precisar ficar na frente do PC o tempo todo para o ataque de flood.


Problema 2 – copiar e testar o log continuamente até conseguir a chave:

Solução:
Idéia:

Enquanto condição for falsa
faça

Copie o Log;
Teste a copia do log;

Apague a copia após o teste.
Sair.


Concretizando em Shellscript:

#!/Bin/bash
Num1=1

Num2=2
until Num1=Num2

do
cp loghacker-01.ivs logteste.ivs
aircrack-ng logteste.ivs –f 6

rm logteste.ivs
done



Salve esse script como teste.sh e de permissões 777 +x pra ele:

#:chmod 777 teste.sh
#:chmod u+x teste.sh



Agora é só executar o script para ter o teste automático sem intervenção humana.

Agora é só vc abrir quatro terminais, redimensionalos para caber os 4 na tela e rodar cada script e programas neles, depois é só ir passear e voltar para pegar a senha:

Terminal1: #:kismet
Terminal2: #:airodump-ng –w loghacker –ivs –channel numero –b BSSID interface
Terminal3: #:./flood.sh
Terminal4: #:./teste.sh









COMO SE PREVENIR E PROTEGER SUA REDE


Jamais use criptografia WEP, não importa o tamanho da codificação.
Prefira sempre WPA2, e use senhas fortes, com numeros, letras e caracteres especiais, alternando entre maiusculas e minusculas, com o maior numero de caracteres que vc consiga lembrar.

Muitos APs permitem configurar a potência, configure a potência do seu na menor possivel, permitindo o uso da rede somente na área necessaria, para assim enfraquecer o sinal fora da area de cobertura a um nível que dificulte bastante a recepção e transmissão no seu sinal fora da area necessária.



Por hoje é só pessoal…