Para você entender a importância de usar o SSH o outros protocolos seguros ao usar uma rede wireless, vou falar um pouco mais sobre como quebrar chaves de encriptação, para que você possa entender os ataques usados pelos que estão do outro lado.
Muitos pontos de acesso antigos utilizam versões vulneráveis do WEP, que são muito rápidas de quebrar. Mesmo as versões "não vulneráveis" do WEP podem ser quebradas via força bruta, sempre que seja possível capturar um volume suficiente de tráfego da rede.
Você pode simular uma invasão na sua própria rede, para verificar qual seria o volume de trabalho necessário para invadí-la. Para isso, você vai precisar de pelo menos dois micros ou notebooks. Um deles vai ser usado como um cliente de rede normal e pode usar qualquer placa de rede, enquanto o segundo (que usaremos para simular o ataque) precisa ter uma placa compatível com o Kismet.
Configure o seu ponto de acesso ativando o WEP e desativando o Broadcast do SSID. Ou seja, faça uma configuração relativamente segura, mas depois faça de conta que esqueceu tudo. :)
Comece abrindo o Kismet no notebook "invasor". Deixe que ele detecte as redes próximas; pressione "s" para ajustar a ordem dos nomes na lista, selecione sua rede e pressione "shift + L" para que ele trave a varredura na sua rede e deixe de bisbilhotar as redes dos vizinhos.
Inicialmente, sua rede será detectada como "no ssid", já que o broadcast do SSID foi desativado no ponto de acesso. Mas, assim que qualquer micro se conecta ao ponto de acesso, o Kismet descobre o SSID correto. Pressione "i" para ver os detalhes da rede e anote o endereço MAC do ponto de acesso (BSSID), que precisaremos para iniciar o passo seguinte.
Endereço MAC do ponto de acesso, dentro dos detalhes da rede
Agora que já sabemos o SSID e o MAC do ponto de acesso, falta quebrar o WEP. Para isso precisaremos do Aircrack, uma suíte de aplicativos para verificação de redes wireless, que pode ser encontrada no http://freshmeat.net/projects/aircrack/. Nos derivados do Debian, ele pode ser instalado via apt-get:
# apt-get install aircrack
Outra opção, mais simples, é baixar o live-CD do BackTrack Remote Exploit, uma distribuição Linux live-CD, baseada no Slax, que inclui um conjunto cuidadosamente escolhido de ferramentas de verificação de segurança e drivers modificados para suportar o modo monitor em diversas placas. Basta dar boot com o CD e você terá todas as ferramentas necessárias a disposição.
O arquivo ISO está disponível no: http://www.remote-exploit.org/backtrack.html.
Voltando ao teste, o primeiro passo é capturar pacotes da rede usando o airodump (que faz parte da suíte aircrack). A sintaxe do comando é "airodump interface arquivo-de-log mac-do-ponto-de-acesso" (o comando precisa ser executado como root), como em:
# airodump ath0 logrede 00:50:50:81:41:56
Você pode também indicar um canal (neste caso, ele escuta todas as redes que estejam transmitindo no canal indicado), como em:
# airodump ath0 logrede 14
Isto gerará o arquivo "logrede.cap", que contém um dump de todos os pacotes capturados. Nesse ponto você precisa esperar algum tempo até conseguir um volume razoável de pacotes. Para acelerar isso, faça com que o micro que está servindo de isca baixe alguns arquivos grandes a partir de outro micro da rede.
Abra outro terminal e use o aircrack para tentar quebrar a chave de encriptação. Você pode fazer isso sem interromper a captura do airodump, daí a idéia de usar dois terminais separados.
Ao usar o aircrack, é preciso especificar o comprimento da chave WEP (64 ou 128 bits) e o arquivo gerado pelo airodump, como em:
# aircrack -n 64 logrede.cap
ou:
# aircrack -n 128 logrede.cap
Caso o arquivo contenha pacotes destinados a mais de um ponto de acesso, ele pergunta qual verificar. No caso, indique sua rede.
O aircrack usa um ataque de força bruta para tentar descobrir a chave de encriptação da rede. A base do ataque são os IV's (vetores de inicialização), a parte de 24 bits da chave de encriptação, que é trocada periodicamente. O volume de IV's gerados varia de acordo com a rede (por isso existem redes mais vulneráveis do que outras), mas, na maioria dos casos, é possível quebrar a encriptação de uma rede de 128 bits caso você consiga capturar de 500 mil a um milhão de IV's, enquanto uma chave de 64 bits pode ser quebrada com pouco mais de 200 mil. Caso seja usada uma chave fácil de adivinhar, os números são drasticamente reduzidos, permitindo em muitos casos que a chave seja quebrada com a captura de alguns poucos milhares de IV's.
Como todo processo de força bruta, o tempo necessário é aleatório. O aircrack pode descobrir a chave correta tanto logo no início da captura, quanto só depois de capturar mais de um milhão de IV's. Por isso é interessante deixar o terminal de captura do airodump aberto e ir executando o aircrack periodicamente, até que ele descubra a chave. Quanto maior o volume de dados capturados, maior a possibilidade dele descobrir a chave.
Uma forma de aumentar a eficiência do ataque, ou seja, aumentar a chance de descobrir a chave usando o mesmo número de IV's, é aumentar o "fudge factor", o que faz com que o aircrack teste um número maior de combinações. Isso, naturalmente, aumenta proporcionalmente o tempo necessário para o teste.
O default do aircrack é um fudge factor 2. Você pode alterar o valor usando a opção "-f", como em:
# aircrack -f 4 -n 128 logrede.cap
É comum começar fazendo um teste com o valor default, depois com fudge 4, como no exemplo, e a partir daí ir dobrando até descobrir a chave (ou a demora se tornar inviável).
Com um grande volume de IV's, uma chave WEP de 64 bits é um alvo fácil. Neste caso a quebra demorou apenas 21 segundos:
Como é necessário capturar um grande volume de dados e muitas redes são usadas apenas para acessar a Internet e outras tarefas leves, capturar o volume de pacotes necessário poderia demorar dias.
Um invasor com um nível mediano de conhecimento, provavelmente não se contentaria em esperar tanto tempo. Ao invés disso, ele poderia usar um ataque de flood para induzir tráfego na sua rede, de forma a acelerar o processo, transformando os muitos dias em apenas alguns minutos.
Um exemplo de ferramenta usada para este tipo de ataque é o aireplay, mais um integrante da equipe do aircrack. O comando abaixo lança um "chopchop atack" (o tipo de ataque mais eficiente para quebrar chaves WEP) contra o ponto de acesso referente ao endereço MAC especificado, através da interface ath0:
# aireplay -b 00:50:50:81:81:01 -x 512 ath0 -4
Neste ataque, o aireplay captura um weak packet, emitido por algum dos outros micros conectados ao ponto de acesso, e o repete indefinidamente, obrigando o ponto de acesso a responder e assim aumentar rapidamente a contagem de IV's, o que permite quebrar a chave WEP muito mais rapidamente. Este é o tipo de ataque mais efetivo, pois derruba a última grande barreira contra a quebra do WEP, que era justamente a demora em capturar um grande volume de pacotes.
O "-x 512" especifica o número de pacotes que serão enviados por segundo. Aumentar o número permite quebrar a chave mais rapidamente, mas, por outro lado, vai reduzir o desempenho da rede, o que pode levar o administrador a perceber o ataque (a menos que ele seja feito em um momento de ociosidade da rede).
Como pode ver, o WEP dificulta o acesso à rede, mas quebrá-lo é apenas questão de tempo. Para melhorar a segurança da sua rede, o ideal é combinar várias camadas de segurança e monitorar os acessos, fazendo com que o tempo e trabalho necessário para invadir a rede seja maior (o que vai afastar os curiosos e invasores casuais) e vai lhe dar tempo para detectar e investigar casos mais graves.
Outra dica que dificulta um pouco o acesso, é habilitar a restrição de acesso à rede com base no endereço MAC, geralmente disponível através da opção "Access Control" do ponto de acesso. Ao ativar esta opção, você cria uma lista com os endereços MAC das placas autorizadas e o ponto de acesso restringe o acesso de qualquer outra.
Programas como o airodump e o próprio Kismet permitem descobrir o endereço MAC dos micros que estão acessando determinada rede muito facilmente, e o endereço MAC da placa de rede pode ser forjado (no Linux, por exemplo, você pode falsear usando o comando "ifconfig wlan0 hw ether 00:11:D8:76:59:2E", onde você substitui o "wlan0" pela interface e o "00:11:D8:76:59:2E" pelo endereço MAC desejado). A questão é que, ao forjar o endereço, o invasor vai derrubar o micro com a placa que foi clonada, uma dica para que você perceba que algo está errado.
O próximo passo seria isolar sua rede wireless do restante da rede, fazendo com que o invasor possa acessar a Internet, mas não tenha como acessar compartilhamentos e outros recursos da rede. O mais simples neste caso é instalar uma placa de rede adicional no servidor da rede (ou em qualquer outro micro na ausência dele), onde é conectado o ponto de acesso. Compartilhe a conexão com a placa do AP, mas utilize duas faixas de IP's separados, com um firewall ativo, configurado para bloquear tentativas de conexão provenientes dos micros dentro da rede wireless.
Video Hacking
Quebrando o WPA ou WPA2
Ao contrário do WEP, o WPA e o WPA2 não possuem falhas conhecidas de segurança, que permitam descobrir a chave rapidamente. Apesar disso, ainda é possível usar ataques de força bruta para descobrir passphrases fáceis, baseadas em palavras do dicionário ou sequências numéricas simples. Vamos então entender melhor como o processo funciona.
O primeiro passo é instalar o pacote aircrack-ng, sucessor do pacote aircrack que usamos anteriormente, que contém as ferramentas que utilizaremos.
Para funcionar, ele precisa que a placa wireless suporte o modo monitor, que é suportado por padrão em um número cada vez menor de drivers. Na maioria dos casos, você vai precisar primeiro modificar os drivers da placa, baixando o fonte, instalando um patch e compilando o driver modificado. Para isso, você precisa ter instalados os headers do kernel e os compiladores básicos.
Você pode encontrar informações detalhadas de como fazer isso em conjunto com diversas placas no: http://www.aircrack-ng.org/. Outra opção é utilizar o BackTrack, que já vem com os patches instalados.
Para aplicar o teste, comece usando o Kismet para descobrir o SSID e o canal utilizado pela rede que deseja testar, além do endereço MAC do ponto de acesso e o endereço MAC de pelo menos um cliente que esteja conectado a ele. Se você está testando sua própria rede, basta checar as informações na configuração do ponto de acesso.
O passo seguinte é usar o airmon-ng para capturar o processo de autenticação de um dos clientes da rede. Ele é baseado no uso de um "four-way handshake", onde uma série de quatro pacotes é usada para negociar uma chave criptográfica entre o cliente e o ponto de acesso, que é então usada para criptografar o processo de autenticação.
Naturalmente, capturar esta sequência de pacotes não permite descobrir a passphrase da rede, mas oferece a possibilidade de executar o ataque de força bruta, testando várias possibilidades até descobrir a chave correta.
Comece colocando a placa wireless em modo monitor, usando o comando "airmon-ng start interface", como em:
# airmon-ng start eth1
No caso das placas com chipset Atheros, é necessário desativar a interface "ath0" e recriá-la em modo monitor, usando os comandos:
# airmon-ng stop ath0
# airmon-ng start wifi0
O passo seguinte é capturar o processo de autenticação de um dos clientes. Vamos fazer isso abrindo dois terminais. O primeiro será usado para rodar o airodump-ng e assim capturar as transmissões e o segundo para rodar o aireplay-ng, desconectando o cliente e obrigando-o a se reconectar ao ponto de acesso, de forma que os pacotes possam ser capturados.
No primeiro terminal, ative o airodump-ng, especificando onde será gravado o arquivo com os pacotes capturados, o canal usado pelo ponto de acesso e a interface, como em:
# airodump-ng -w logrede --channel 2 ath0
Com isso, será gerado um arquivo "logrede.cap" no diretório atual.
No outro terminal, rode o comando "aireplay-ng --deauth 1", especificando o endereço MAC do ponto de acesso (-a) e o endereço MAC do cliente que será desconectado (-c), como em:
# aireplay-ng --deauth 1 -a 00:50:50:81:41:56 -c 00:19:7D:4C:CA:07
Este comando faz com que seu PC envie um pacote falseado ao ponto de acesso, simulando o processo de desconexão do cliente especificado. Enganado pelo pacote, o ponto de acesso desconecta o cliente, o que faz com que ele se re-autentique em seguida, um processo executado de forma automática pela maioria dos sistemas operacionais. Com isso, o processo de autenticação será gravado pela captura iniciada no outro terminal.
Para realizar o ataque baseado em dicionário, é necessário utilizar um arquivo de texto, contendo uma lista das palavras que serão testadas. Existem diversos arquivos de dicionário largamente disponíveis na web (faça uma busca por "wordlists" no Google), como o repositório disponível no http://www.outpost9.com/files/WordLists.html.
Na maioria das distribuições, você encontra também uma lista de palavras que pode ser usada na forma do arquivo "/usr/share/dict/words" e você pode também comprar um CD com uma coleção de arquivos, contendo listas com palavras de todas as línguas no: http://www.openwall.com/passwords/wordlists/.
Com o arquivo de palavras em mãos, use o comando abaixo para testar as combinações, especificando o SSID da rede, o arquivo com as palavras e o arquivo com a captura dos pacotes (gerado pelo airmon-ng), como em:
$ aircrack-ng -e rede -w dict.txt logrede.cap
... onde o "rede" indica o SSID da rede, o "dict.txt" indica a localização do dicionário e o "logrede.cap" é o arquivo com a captura. É necessário indicar o SSID da rede, pois ele é uma das informações incluídas no processo de autenticação.
O teste é feito em modo offline, usando os pacotes de autenticação capturados para simular o processo de autenticação usando cada uma das palavras incluídas no arquivo. O volume de processamento necessário para cada uma faz com que o teste demore um bom tempo. Um Celeron-M de 1.4 GHz, por exemplo, consegue processar (mesmo com todas as otimizações incluídas no aircrack-ng) apenas cerca de 100 possibilidades por segundo, o que resulta em um ritmo de 360 mil combinações por hora, ou 8.64 milhões de combinações por dia.
Pode parecer bastante, mas nesse ritmo demoraria mais de um milhão de anos para testar todas as possibilidades de uma passphrase com 8 caracteres contendo letras, números e caracteres especiais (e exponencialmente mais para passphrases mais longas). É por isso que o ataque se concentra em testar uma lista de palavras, e não em realmente testar todas as possibilidades possíveis.
É possível também usar o John the Ripper para testar variações das palavras do dicionário, permitindo assim descobrir passphrases construídas com base em variações ou em combinações de palavras, como "paralelep1ped0" o que é bastante comum.
Você pode baixá-lo no: http://www.openwall.com/john/
Para usá-lo, descompacte o arquivo, acesse a pasta "src" (dentro da pasta criada) e rode o comando "make". Isso gerará o executável do programa dentro da pasta "run", que pode então ser executado, como em "./john".
O John é uma ferramenta muito usada para testar senhas, pois ele pode lançar ataques de força bruta, testando todas as combinações ou utilizando um arquivo de dicionário em praticamente todo tipo de arquivo de senhas. No nosso caso, usaremos o John para processar o arquivo de dicionário, direcionando a saída para o aircrack-ng. O comando ficaria:
$ ./john --wordlist=dict.txt --rules --stdout
aircrack-ng -e rede -w logrede.cap
Como pode ver, o processo de quebrar chaves WPA é bastante demorado e, mesmo assim, é inefetivo contra passphrases construídas com caracteres aleatórios, principalmente no caso de passphrases longas. Com a geração atual de programas, você pode garantir a segurança da sua rede usando uma boa passphrase.
Uma passphrase longa, com 20 caracteres ou mais (que não seja a combinação de duas ou mais palavras), é impossível de quebrar usando força bruta. A única forma de obter acesso à rede seria convencer algum dos usuários a revelá-la.
Uma solução para este último problema seria utilizar uma passphrase impossível de memorizar (imagine o caso de uma passphrase com 50 caracteres ou mais :). Você pode então imprimir a passphrase em papel, digitá-la no cliente para autorizar a conexão e em seguida destruir a cópia impressa.


0 comentários:
Postar um comentário