hacktricks/generic-methodologies-and-resources/pentesting-wifi/README.md

52 KiB
Raw Blame History

Pentesting Wifi

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Junte-se ao servidor do HackenProof Discord para se comunicar com hackers experientes e caçadores de bugs!

Insights de Hacking
Interaja com conteúdos que exploram a emoção e os desafios do hacking

Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real

Últimos Anúncios
Fique informado sobre os mais novos bug bounties lançados e atualizações cruciais da plataforma

Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje mesmo!

Comandos básicos de Wifi

ip link show #List available interfaces
iwconfig #List available interfaces
airmon-ng check kill #Kill annoying processes
airmon-ng start wlan0 #Monitor mode
airmon-ng stop wlan0mon #Managed mode
airodump-ng wlan0mon #Scan (default 2.4Ghz)
airodump-ng wlan0mon --band a #Scan 5Ghz
iwconfig wlan0 mode monitor #Put in mode monitor
iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis

Ferramentas

EAPHammer

git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup

Airgeddon

mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe

Execute o airgeddon com docker

docker run \
--rm \
-ti \
--name airgeddon \
--net=host \
--privileged \
-p 3000:3000 \
-v /tmp:/io \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon

wifiphisher

Pode realizar ataques Evil Twin, KARMA e Known Beacons e, em seguida, usar um template de phishing para conseguir obter a senha real da rede ou capturar credenciais de redes sociais.

git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
sudo python setup.py install # Install any dependencies

Wifite2

Esta ferramenta automatiza ataques WPS/WEP/WPA-PSK. Ela automaticamente:

  • Configura a interface em modo monitor
  • Escaneia por redes possíveis - E permite que você selecione a(s) vítima(s)
  • Se WEP - Inicia ataques WEP
  • Se WPA-PSK
  • Se WPS: Ataque Pixie dust e o ataque de força bruta (cuidado, o ataque de força bruta pode demorar muito). Note que não tenta PIN nulo ou PINs de banco de dados/gerados.
  • Tenta capturar o PMKID do AP para quebrá-lo
  • Tenta desautenticar clientes do AP para capturar um handshake
  • Se PMKID ou Handshake, tenta força bruta usando as 5000 senhas mais comuns.

Resumo dos Ataques

  • DoS
  • Desautenticação/desassociação -- Desconecta todos (ou um ESSID/Cliente específico)
  • APs falsos aleatórios -- Esconde redes, possível travamento de scanners
  • Sobrecarga no AP -- Tenta derrubar o AP (geralmente não muito útil)
  • WIDS -- Interage com o IDS
  • TKIP, EAPOL -- Alguns ataques específicos para DoS em alguns APs
  • Cracking
  • Quebrar WEP (várias ferramentas e métodos)
  • WPA-PSK
  • WPS pin "Força Bruta"
  • WPA PMKID força bruta
  • [DoS +] WPA handshake captura + Cracking
  • WPA-MGT
  • Captura de nome de usuário
  • Força Bruta Credenciais
  • Evil Twin (com ou sem DoS)
  • Open Evil Twin [+ DoS] -- Útil para capturar credenciais de portal cativo e/ou realizar ataques na LAN
  • WPA-PSK Evil Twin -- Útil para ataques na rede se você conhece a senha
  • WPA-MGT -- Útil para capturar credenciais empresariais
  • KARMA, MANA, Loud MANA, Known beacon
  • + Open -- Útil para capturar credenciais de portal cativo e/ou realizar ataques na LAN
  • + WPA -- Útil para capturar handshakes WPA

DOS

Pacotes de Desautenticação

A maneira mais comum de realizar esse tipo de ataque é com pacotes de desautenticação. Estes são um tipo de quadro de "gerenciamento" responsável por desconectar um dispositivo de um ponto de acesso. Forjar esses pacotes é a chave para hackear muitas redes Wi-Fi, pois você pode forçar a desconexão de qualquer cliente da rede a qualquer momento. A facilidade com que isso pode ser feito é um tanto assustadora e é frequentemente feita como parte da coleta de um handshake WPA para quebrar.

Além de momentaneamente usar essa desconexão para colher um handshake para quebrar, você também pode simplesmente deixar esses desauts continuarem, o que tem o efeito de bombardear o cliente com pacotes de desautenticação aparentemente vindos da rede à qual estão conectados. Como esses quadros não são criptografados, muitos programas tiram vantagem dos quadros de gerenciamento forjando-os e enviando-os para um ou todos os dispositivos em uma rede.
Descrição de aqui.

Desautenticação usando Aireplay-ng

aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
  • -0 significa desautenticação
  • 1 é o número de desautenticações a enviar (você pode enviar várias se desejar); 0 significa enviá-las continuamente
  • -a 00:14:6C:7E:40:80 é o endereço MAC do ponto de acesso
  • -c 00:0F:B5:34:30:30 é o endereço MAC do cliente a desautenticar; se isso for omitido, então a desautenticação broadcast é enviada (nem sempre funciona)
  • ath0 é o nome da interface

Pacotes de Desassociação

Pacotes de desassociação são outro tipo de quadro de gerenciamento que é usado para desconectar um nó (significando qualquer dispositivo como um laptop ou celular) de um ponto de acesso próximo. A diferença entre quadros de desautenticação e desassociação é principalmente a maneira como são usados.

Um AP que deseja desconectar um dispositivo não autorizado enviaria um pacote de desautenticação para informar o dispositivo que ele foi desconectado da rede, enquanto um pacote de desassociação é usado para desconectar quaisquer nós quando o AP está desligando, reiniciando ou deixando a área.

Descrição retirada daqui.

Este ataque pode ser realizado pelo mdk4(modo "d"):

# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
# -e WifiName is the name of the wifi
# -B BSSID is the BSSID of the AP
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F

Mais ataques DOS por mdk4

De aqui.

MODO DE ATAQUE b: Inundação de Beacons

Envia quadros beacon para exibir APs falsos nos clientes. Isso pode, às vezes, travar scanners de rede e até drivers!

# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
# -m use real BSSIDS
# All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m

MODO DE ATAQUE a: Negação de Serviço de Autenticação

Envia quadros de autenticação para todos os APs encontrados no alcance. Um número excessivo de clientes pode congelar ou reiniciar vários APs.

# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
# -m use real MACs
# only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m

MODO DE ATAQUE p: Sondagem de SSID e Bruteforce

Sonda APs e verifica por respostas, útil para checar se o SSID foi corretamente desmascarado e se o AP está dentro do seu alcance de envio. Bruteforce de SSIDs ocultos com ou sem uma wordlist também está disponível.

MODO DE ATAQUE m: Exploração de Contramedidas Michael

Envia pacotes aleatórios ou reinjeta duplicatas em outra fila QoS para provocar Contramedidas Michael em APs TKIP. O AP então será desligado por um minuto inteiro, tornando isso um DoS efetivo.

# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]

MODO DE ATAQUE e: Injeção de Pacotes EAPOL Start e Logoff

Inunda um AP com quadros EAPOL Start para mantê-lo ocupado com sessões falsas e, assim, impede que ele lide com clientes legítimos. Ou desconecta clientes injetando falsas mensagens de Logoff EAPOL.

# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]

MODO DE ATAQUE s: Ataques para redes mesh IEEE 802.11s

Vários ataques ao gerenciamento de links e roteamento em redes mesh. Inunde vizinhos e rotas, crie buracos negros e desvie o tráfego!

MODO DE ATAQUE w: Confusão WIDS

Confunda/Abuse de Sistemas de Detecção e Prevenção de Intrusões conectando clientes a múltiplos nós WDS ou APs falsos e maliciosos.

# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]

MODO DE ATAQUE f: Packet Fuzzer

Um packet fuzzer simples com múltiplas fontes de pacotes e um bom conjunto de modificadores. Tenha cuidado!

Airgeddon

Airgeddon oferece a maioria dos ataques propostos nos comentários anteriores:

WPS

WPS significa Wi-Fi Protected Setup. É um padrão de segurança de rede sem fio que tenta tornar as conexões entre um roteador e dispositivos sem fio mais rápidas e fáceis. WPS funciona apenas para redes sem fio que usam uma senha criptografada com os protocolos de segurança WPA Personal ou WPA2 Personal. WPS não funciona em redes sem fio que estão usando a segurança WEP obsoleta, que pode ser facilmente quebrada por qualquer hacker com um conjunto básico de ferramentas e habilidades. (De aqui)

WPS usa um PIN de 8 dígitos para permitir que um usuário se conecte à rede, mas primeiro é verificado os primeiros 4 números e, se corretos, então é verificado os segundos 4 números. Assim, é possível fazer Brute-Force na primeira metade e depois na segunda metade (apenas 11000 possibilidades).

WPS Bruteforce

Existem 2 ferramentas principais para realizar essa ação: Reaver e Bully.

  • Reaver foi projetado para ser um ataque robusto e prático contra WPS, e foi testado contra uma grande variedade de pontos de acesso e implementações de WPS.
  • Bully é uma nova implementação do ataque de brute force WPS, escrita em C. Tem várias vantagens sobre o código original do reaver: menos dependências, melhor desempenho de memória e CPU, tratamento correto de endianness e um conjunto mais robusto de opções.

Este ataque tira proveito de uma fraqueza no código PIN WPS de oito dígitos; por causa desse problema, o protocolo divulga informações sobre os primeiros quatro dígitos do PIN, e o último dígito funciona como um checksum, o que facilita o brute force no AP WPS.
Note que alguns dispositivos incluem proteções contra brute-force, que geralmente bloqueiam endereços MAC que tentam atacar repetidamente. Nesse caso, a complexidade deste ataque aumenta, pois você teria que rotacionar endereços MAC enquanto testa os PINs.

Se o código WPS válido for encontrado, tanto Bully quanto Reaver o usarão para descobrir o PSK WPA/WPA2 usado para proteger a rede, então você poderá se conectar sempre que precisar.

reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3

Smart Brute force

Em vez de começar tentando todos os PINs possíveis, você deve verificar se há PINs descobertos para o AP que você está atacando (dependendo do MAC do fabricante) e os PINs gerados pelo software PIN.

  • O banco de dados de PINs conhecidos é feito para Access Points de certos fabricantes para os quais é sabido que eles usam os mesmos WPS PINs. Este banco de dados contém os três primeiros octetos de endereços MAC e uma lista de PINs correspondentes que são muito prováveis para esse fabricante.
  • Existem vários algoritmos para gerar WPS PINs. Por exemplo, ComputePIN e EasyBox usam o endereço MAC do Access Point em seus cálculos. Mas o algoritmo Arcadyan também requer um ID do dispositivo.

Ataque WPS Pixie Dust

Dominique Bongard descobriu que alguns APs têm formas fracas de gerar nonces (conhecidos como E-S1 e E-S2) que deveriam ser secretos. Se conseguirmos descobrir quais são esses nonces, podemos facilmente encontrar o WPS PIN de um AP, já que o AP deve nos fornecer em um hash para provar que também conhece o PIN, e o cliente não está se conectando a um AP falso. Esses E-S1 e E-S2 são essencialmente as "chaves para destrancar a caixa" contendo o WPS pin. Mais informações aqui: https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)

Basicamente, algumas implementações falharam no uso de chaves aleatórias para criptografar as 2 partes do PIN (já que ele é decomposto em 2 partes durante a comunicação de autenticação e enviado ao cliente), então um ataque offline poderia ser usado para forçar bruscamente o PIN válido.

reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully  wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3

Ataque Null Pin

Algumas implementações muito ruins permitiam a conexão com o PIN Nulo (também muito estranho). O Reaver pode testar isso (o Bully não pode).

reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''

Airgeddon

Todos os ataques WPS propostos podem ser facilmente realizados usando airgeddon.

  • 5 e 6 permitem que você tente seu PIN personalizado (se você tiver algum)
  • 7 e 8 realizam o ataque Pixie Dust
  • 13 permite que você teste o PIN NULL
  • 11 e 12 irão recolher os PINs relacionados ao AP selecionado de bancos de dados disponíveis e gerar possíveis PINs usando: ComputePIN, EasyBox e opcionalmente Arcadyan (recomendado, por que não?)
  • 9 e 10 testarão todos os PINs possíveis

WEP

Tão quebrado e desaparecido que não vou falar sobre isso. Apenas saiba que airgeddon tem uma opção WEP chamada "All-in-One" para atacar esse tipo de proteção. Mais ferramentas oferecem opções semelhantes.

Junte-se ao servidor HackenProof Discord para se comunicar com hackers experientes e caçadores de recompensas por bugs!

Insights de Hacking
Interaja com conteúdo que explora a emoção e os desafios do hacking

Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real

Últimos Anúncios
Fique informado com os mais novos programas de recompensa por bugs lançados e atualizações cruciais da plataforma

Junte-se a nós no Discord e comece a colaborar com os principais hackers hoje!

WPA/WPA2 PSK

PMKID

Em 2018, os autores do hashcat divulgaram um novo tipo de ataque que não depende apenas de um único pacote, mas também não requer que clientes estejam conectados ao nosso AP alvo, apenas a comunicação entre o atacante e o AP.

Acontece que muitos roteadores modernos anexam um campo opcional no final do primeiro quadro EAPOL enviado pelo próprio AP quando alguém está se associando, o chamado Robust Security Network, que inclui algo chamado PMKID

Como explicado no post original, o PMKID é derivado usando dados que são conhecidos por nós:

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

Uma vez que a string "PMK Name" é constante, sabemos tanto o BSSID do AP quanto da estação e o PMK é o mesmo obtido de um handshake completo de 4 vias, isso é tudo que o hashcat precisa para decifrar o PSK e recuperar a senha! Descrição obtida aqui.

Para coletar essas informações e forçar bruscamente localmente a senha, você pode fazer:

airmon-ng check kill
airmon-ng start wlan0
git clone https://github.com/ZerBea/hcxdumptool.git; cd hcxdumptool; make; make install
hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1

Os PMKIDs capturados serão exibidos no console e também salvos dentro de _/tmp/attack.pcap_

Agora, converta a captura para o formato hashcat/john e quebre-a:

hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt

Observe que o formato de um hash correto contém 4 partes, como: 4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7*566f6461666f6e65436f6e6e6563743034383131343838
__Se o seu contém apenas 3 partes, então, ele é inválido (a captura do PMKID não foi válida).

Note que hcxdumptool também captura handshakes (algo assim aparecerá: MP:M1M2 RC:63258 EAPOLTIME:17091). Você pode transformar os handshakes para o formato hashcat/john usando cap2hccapx

tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes

Percebi que alguns handshakes capturados com esta ferramenta não puderam ser decifrados mesmo sabendo a senha correta. Eu recomendaria capturar handshakes também pelo método tradicional se possível, ou capturar vários deles usando esta ferramenta.

Captura de Handshake

Uma maneira de atacar redes WPA/WPA2 é capturar um handshake e tentar decifrar a senha usada offline. Para fazer isso, você precisa encontrar o BSSID e o canal da rede vítima, e um cliente que esteja conectado à rede.
Uma vez que você tenha essas informações, você deve começar a escutar toda a comunicação desse BSSID naquele canal, porque, com sorte, o handshake será enviado lá:

airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap

Agora você precisa desautenticar o cliente por alguns segundos para que ele se autentique automaticamente novamente ao AP (por favor, leia a parte de DoS para encontrar várias maneiras de desautenticar um cliente):

aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work

Note que, como o cliente foi desautenticado, ele pode tentar se conectar a um AP diferente ou, em outros casos, a uma rede diferente.

Uma vez que no airodump-ng aparecer alguma informação de handshake, isso significa que o handshake foi capturado e você pode parar de escutar:

Uma vez que o handshake é capturado, você pode crackear com aircrack-ng:

aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap

Verificar se o handshake está no arquivo

aircrack

aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture

tshark

tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.

cowpatty

cowpatty -r psk-01.cap -s "ESSID" -f -

Se esta ferramenta encontrar um handshake incompleto de um ESSID antes do completo, ela não detectará o válido.

pyrit

apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze

WPA Enterprise (MGT)

É importante falar sobre os diferentes métodos de autenticação que podem ser usados por uma Wifi empresarial. Para este tipo de Wifis, você provavelmente encontrará em airodump-ng algo assim:

6A:FE:3B:73:18:FB  -58       19        0    0   1  195  WPA2 CCMP   MGT  NameOfMyWifi

EAP (Protocolo de Autenticação Extensível) é a estrutura da comunicação de autenticação, em cima disso, um algoritmo de autenticação é usado pelo servidor para autenticar o cliente (supplicant) e em alguns casos pelo cliente para autenticar o servidor. Principais algoritmos de autenticação usados neste caso:

  • EAP-GTC: É um método EAP para suportar o uso de tokens de hardware e senhas de uso único com EAP-PEAP. Sua implementação é semelhante ao MSCHAPv2, mas não usa um desafio entre pares. Em vez disso, as senhas são enviadas ao ponto de acesso em texto puro (muito interessante para ataques de downgrade).
  • EAP-MD-5 (Message Digest): O cliente envia o hash MD5 da senha. Não recomendado: Vulnerável a ataques de dicionário, sem autenticação do servidor e sem forma de gerar chaves de privacidade equivalentes a fio (WEP) por sessão.
  • EAP-TLS (Transport Layer Security): Baseia-se em certificados do lado do cliente e do servidor para realizar a autenticação e pode ser usado para gerar dinamicamente chaves WEP baseadas no usuário e na sessão para proteger comunicações subsequentes.
  • EAP-TTLS (Tunneled Transport Layer Security): Autenticação mútua do cliente e da rede através de um canal criptografado (ou túnel), bem como um meio para derivar chaves WEP dinâmicas, por usuário e por sessão. Ao contrário do EAP-TLS, o EAP-TTLS requer apenas certificados do lado do servidor (o cliente usará credenciais).
  • PEAP (Protocolo de Autenticação Extensível Protegido): PEAP é como o protocolo EAP mas criando um túnel TLS para proteger a comunicação. Então, protocolos de autenticação fracos podem ser usados em cima do EAP, pois serão protegidos pelo túnel.
  • PEAP-MSCHAPv2: Isso também é conhecido apenas como PEAP porque é amplamente adotado. Isso é apenas o desafio/resposta vulnerável chamado MSCHAPv2 em cima do PEAP (é protegido pelo túnel TLS).
  • PEAP-EAP-TLS ou apenas PEAP-TLS: É muito semelhante ao EAP-TLS mas um túnel TLS é criado antes da troca de certificados.

Você pode encontrar mais informações sobre esses métodos de autenticação aqui e aqui.

Captura de Nome de Usuário

Lendo https://tools.ietf.org/html/rfc3748#page-27 parece que se você está usando EAP, as mensagens "Identity" devem ser suportadas, e o nome de usuário será enviado em claro nas mensagens "Response Identity".

Mesmo usando um dos métodos de autenticação mais seguros: PEAP-EAP-TLS, é possível capturar o nome de usuário enviado no protocolo EAP. Para fazer isso, capture uma comunicação de autenticação (inicie airodump-ng dentro de um canal e wireshark na mesma interface) e filtre os pacotes por eapol.
Dentro do pacote "Response, Identity", o nome de usuário do cliente aparecerá.

Identidades Anônimas

(Informações retiradas de https://www.interlinknetworks.com/app_notes/eap-peap.htm)

Tanto EAP-PEAP quanto EAP-TTLS suportam ocultação de identidade. Em um ambiente WiFi, o ponto de acesso (AP) geralmente gera uma solicitação de Identidade EAP como parte do processo de associação. Para preservar o anonimato, o cliente EAP no sistema do usuário pode responder apenas com informações suficientes para permitir que o primeiro servidor RADIUS processe a solicitação, conforme mostrado nos seguintes exemplos.

  • EAP-Identity = anonymous

Neste exemplo, todos os usuários compartilharão o pseudo-nome de usuário “anonymous”. O primeiro servidor RADIUS é um servidor EAP-PEAP ou EAP-TTLS que conduz o lado do servidor do protocolo PEAP ou TTLS. O tipo de autenticação interna (protegida) será então tratado localmente ou encaminhado para um servidor RADIUS remoto (de origem).

  • EAP-Identity = anonymous@realm_x

Neste exemplo, usuários pertencentes a diferentes reinos ocultam sua própria identidade, mas indicam a qual reino pertencem para que o primeiro servidor RADIUS possa encaminhar as solicitações EAP-PEAP ou EAP-TTLS para servidores RADIUS em seus reinos de origem, que atuarão como o servidor PEAP ou TTLS. O primeiro servidor atua puramente como um nó de retransmissão RADIUS.

Alternativamente, o primeiro servidor pode atuar como o servidor EAP-PEAP ou EAP-TTLS e processar o método de autenticação protegido ou encaminhá-lo para outro servidor. Esta opção pode ser usada para configurar diferentes políticas para diferentes reinos.

No EAP-PEAP, uma vez que o servidor PEAP e o cliente PEAP estabelecem o túnel TLS, o servidor PEAP gera uma solicitação de Identidade EAP e a transmite pelo túnel TLS. O cliente responde a esta segunda solicitação de Identidade EAP enviando uma resposta de Identidade EAP contendo a verdadeira identidade do usuário pelo túnel criptografado. Isso impede que qualquer pessoa que esteja interceptando o tráfego 802.11 descubra a verdadeira identidade do usuário.

O EAP-TTLS funciona de maneira um pouco diferente. Com o EAP-TTLS, o cliente normalmente se autentica via PAP ou CHAP protegido pelo túnel TLS. Neste caso, o cliente incluirá um atributo User-Name e um atributo Password ou CHAP-Password na primeira mensagem TLS enviada após o estabelecimento do túnel.

Com qualquer um dos protocolos, o servidor PEAP/TTLS aprende a verdadeira identidade do usuário uma vez que o túnel TLS tenha sido estabelecido. A verdadeira identidade pode ser na forma user@realm ou simplesmente user. Se o servidor PEAP/TTLS também estiver autenticando o usuário, ele agora conhece a identidade do usuário e prossegue com o método de autenticação sendo protegido pelo túnel TLS. Alternativamente, o servidor PEAP/TTLS pode encaminhar uma nova solicitação RADIUS para o servidor RADIUS de origem do usuário. Esta nova solicitação RADIUS tem o protocolo PEAP ou TTLS removido. Se o método de autenticação protegido for EAP, as mensagens EAP internas são transmitidas para o servidor RADIUS de origem sem o invólucro EAP-PEAP ou EAP-TTLS. O atributo User-Name da mensagem RADIUS de saída contém a verdadeira identidade do usuário não a identidade anônima do atributo User-Name da solicitação RADIUS de entrada. Se o método de autenticação protegido for PAP ou CHAP (suportado apenas pelo TTLS), o User-Name e outros atributos de autenticação recuperados do payload TLS são colocados na mensagem RADIUS de saída no lugar do User-Name anônimo e dos atributos TTLS EAP-Message incluídos na solicitação RADIUS de entrada.

EAP-Bruteforce (password spray)

Se espera-se que o cliente use um nome de usuário e senha (note que EAP-TLS não será válido neste caso), então você poderia tentar obter uma lista de nomes de usuário (veja a próxima parte) e senhas e tentar forçar a entrada no acesso usando air-hammer.

./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt

Você também pode realizar este ataque usando eaphammer:

./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
--essid example-wifi \
--password bananas \
--user-list users.txt

Teoria de Ataques a Clientes

Seleção de Rede e Roaming

Embora o protocolo 802.11 tenha regras muito específicas que ditam como uma estação pode se juntar a um ESS, ele não especifica como a estação deve selecionar um ESS para se conectar. Além disso, o protocolo permite que as estações roam livremente entre pontos de acesso que compartilham o mesmo ESSID (porque você não gostaria de perder a conectividade WiFi ao caminhar de um lado de um prédio para outro, etc). No entanto, o protocolo 802.11 não especifica como esses pontos de acesso devem ser selecionados. Além disso, mesmo que as estações devam ser autenticadas ao ESS para se associarem a um ponto de acesso, o protocolo 802.11 não exige que o ponto de acesso seja autenticado à estação.

Listas de Redes Preferenciais (PNLs)

Cada vez que uma estação se conecta a uma rede sem fio, o ESSID da rede é armazenado na Lista de Redes Preferenciais (PNL) da estação. A PNL é uma lista ordenada de todas as redes às quais a estação se conectou no passado, e cada entrada na PNL contém o ESSID da rede e quaisquer informações de configuração específicas da rede necessárias para estabelecer uma conexão.

Varredura Passiva

Em redes de infraestrutura, os pontos de acesso transmitem periodicamente quadros de beacon para anunciar sua presença e capacidades para as estações próximas. Beacons são quadros de broadcast, o que significa que são destinados a ser recebidos por todas as estações próximas dentro do alcance. Beacons incluem informações sobre as taxas suportadas pelo AP, capacidades de criptografia, informações adicionais e, mais importante, quadros de beacon contêm o ESSID do AP (desde que a transmissão do ESSID não esteja desativada).

Durante a varredura passiva, o dispositivo cliente escuta quadros de beacon de pontos de acesso próximos. Se o dispositivo cliente receber um quadro de beacon cujo campo ESSID corresponda a um ESSID da PNL do cliente, o cliente se conectará automaticamente ao ponto de acesso que enviou o quadro de beacon. Então, suponha que queremos mirar em um dispositivo sem fio que não está atualmente conectado a nenhum wireless. Se soubermos pelo menos uma entrada na PNL desse cliente, podemos forçar o cliente a se conectar a nós simplesmente criando nosso próprio ponto de acesso com o ESSID dessa entrada.

Sondagem Ativa

O segundo algoritmo de seleção de rede usado no 802.11 é conhecido como Sondagem Ativa. Dispositivos clientes que usam sondagem ativa transmitem continuamente quadros de solicitação de sondagem para determinar quais APs estão ao alcance, bem como quais são suas capacidades. Solicitações de sondagem vêm em duas formas: direcionadas e de broadcast. Solicitações de sondagem direcionadas são endereçadas a um ESSID específico e são a maneira do cliente verificar se uma rede específica está por perto.

Clientes que usam sondagem direcionada enviarão solicitações de sondagem para cada rede em sua PNL. Deve-se notar que a sondagem direcionada é a única maneira de identificar a presença de redes ocultas próximas. Solicitações de sondagem de broadcast funcionam quase exatamente da mesma maneira, mas são enviadas com o campo SSID definido como NULL. Isso endereça a sondagem de broadcast a todos os pontos de acesso próximos, permitindo que a estação verifique se alguma de suas redes preferenciais está por perto sem revelar o conteúdo de sua PNL

AP Simples com redirecionamento para a Internet

Antes de explicar como realizar ataques mais complexos, será explicado como simplesmente criar um AP e redirecionar seu tráfego para uma interface conectada à Internet.

Usando ifconfig -a, verifique se a interface wlan para criar o AP e a interface conectada à Internet estão presentes.

DHCP & DNS

apt-get install dnsmasq #Manages DHCP and DNS

crie um arquivo de configuração /etc/dnsmasq.conf da seguinte forma:

interface=wlan0
dhcp-authoritative
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1

Então defina IPs e rotas:

ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

E então inicie o dnsmasq:

dnsmasq -C dnsmasq.conf -d

hostapd

apt-get install hostapd

Criar um arquivo de configuração hostapd.conf:

interface=wlan0
driver=nl80211
ssid=MITIWIFI
hw_mode=g
channel=11
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=mitmwifi123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1

Interrompa processos incômodos, defina o modo monitor e inicie o hostapd:

airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf

Encaminhamento e Redirecionamento

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Evil Twin

Um ataque Evil Twin é um tipo de ataque Wi-Fi que se aproveita do fato de que a maioria dos computadores e telefones só verá o "nome" ou ESSID de uma rede sem fio (já que a estação base não é obrigada a se autenticar contra o cliente). Isso torna muito difícil distinguir entre redes com o mesmo nome e mesmo tipo de criptografia. De fato, muitas redes terão vários pontos de acesso para extensão de rede, todos usando o mesmo nome para expandir o acesso sem confundir os usuários.

Devido à forma como a implementação dos clientes funciona (lembre-se de que o protocolo 802.11 permite que as estações roam livremente entre pontos de acesso dentro do mesmo ESS), é possível fazer com que um dispositivo mude a estação base à qual está conectado. Isso pode ser feito oferecendo um sinal melhor (o que nem sempre é possível) ou bloqueando o acesso à estação base original (pacotes de desautenticação, jamming ou alguma outra forma de ataque DoS).

Observe também que as implementações reais de redes sem fio geralmente têm mais de um ponto de acesso, e esses pontos de acesso costumam ser mais potentes e ter um alcance melhor de linha de visão devido ao seu posicionamento em direção ao teto. Desautenticar um único ponto de acesso geralmente resulta no roaming do alvo para outro ponto de acesso válido, em vez do seu AP malicioso, a menos que todos os pontos de acesso próximos sejam desautenticados (barulhento) ou você seja muito cuidadoso com o posicionamento do AP malicioso (difícil).

Você pode criar um Evil Twin Open muito básico (sem capacidade de rotear tráfego para a Internet) fazendo:

airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon

Você também pode criar um Gêmeo Maligno usando eaphammer (observe que para criar gêmeos malignos com eaphammer a interface NÃO deve estar em modo monitor):

./eaphammer -i wlan0 --essid exampleCorp --captive-portal

Ou usando Airgeddon: Opções: 5,6,7,8,9 (dentro do menu de ataque Evil Twin).

Por favor, note que por padrão, se um ESSID na PNL estiver salvo como protegido por WPA, o dispositivo não se conectará automaticamente a um Evil Twin aberto. Você pode tentar fazer DoS no AP real e esperar que o usuário se conecte manualmente ao seu Evil Twin aberto, ou você pode fazer DoS no AP real e usar um Evil Twin WPA para capturar o handshake (usando este método você não poderá permitir que a vítima se conecte a você, pois você não conhece o PSK, mas pode capturar o handshake e tentar decifrá-lo).

Alguns SO e AV alertarão o usuário de que conectar-se a uma rede aberta é perigoso...

WPA/WPA2 Evil Twin

Você pode criar um Evil Twin usando WPA/2 e se os dispositivos estiverem configurados para se conectar a esse SSID com WPA/2, eles tentarão se conectar. De qualquer forma, para completar o 4-way-handshake, você também precisa saber a senha que o cliente vai usar. Se você não souber, a conexão não será completada.

./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"

Enterprise Evil Twin

Para entender esses ataques, recomendo ler antes a breve explicação sobre WPA Enterprise.

Usando hostapd-wpe

hostapd-wpe precisa de um arquivo de configuração para funcionar. Para automatizar a geração dessas configurações, você pode usar https://github.com/WJDigby/apd_launchpad (baixe o arquivo python dentro de /etc/hostapd-wpe/)

./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s

No arquivo de configuração, você pode selecionar várias coisas diferentes, como ssid, canal, arquivos de usuário, cret/key, parâmetros dh, versão wpa e autenticação...

Usando hostapd-wpe com EAP-TLS para permitir que qualquer certificado faça login.

Usando EAPHammer

# Generate Certificates
./eaphammer --cert-wizard

# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds

Por padrão, o EAPHammer utiliza estes métodos de autenticação (observe o GTC como o primeiro a ser tentado para obter senhas em texto puro e, em seguida, o uso de métodos de autenticação mais robustos):

GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5

Esta é a metodologia padrão para evitar tempos de conexão longos. No entanto, você também pode especificar para o servidor os métodos de autenticação do mais fraco ao mais forte:

--negotiate weakest

Ou você também pode usar:

  • --negotiate gtc-downgrade para usar a implementação de rebaixamento GTC altamente eficiente (senhas em texto simples)
  • --negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP para especificar manualmente os métodos oferecidos (oferecendo os mesmos métodos de autenticação na mesma ordem que a organização tornará o ataque muito mais difícil de detectar).
  • Encontre mais informações no wiki

Usando Airgeddon

Airgeddon pode usar certificados previamente gerados para oferecer autenticação EAP para redes WPA/WPA2-Enterprise. A rede falsa rebaixará o protocolo de conexão para EAP-MD5, assim será capaz de capturar o usuário e o MD5 da senha. Posteriormente, o atacante pode tentar quebrar a senha.
Airggedon oferece a possibilidade de um ataque Evil Twin contínuo (barulhento) ou criar o Ataque Evil apenas até alguém se conectar (suave).

Depuração de túneis TLS PEAP e EAP-TTLS em ataques Evil Twins

Este método foi testado em uma conexão PEAP, mas como estou descriptografando um túnel TLS arbitrário, isso também deve funcionar com EAP-TTLS

Dentro da configuração do hostapd-wpe comente a linha que contém dh_file (de dh_file=/etc/hostapd-wpe/certs/dh para #dh_file=/etc/hostapd-wpe/certs/dh)
Isso fará com que hostapd-wpe troque chaves usando RSA em vez de DH, para que você possa descriptografar o tráfego mais tarde conhecendo a chave privada do servidor.

Agora inicie o Evil Twin usando hostapd-wpe com essa configuração modificada como de costume. Além disso, inicie wireshark na interface que está realizando o ataque Evil Twin.

Agora ou mais tarde (quando você já tiver capturado algumas tentativas de autenticação), você pode adicionar a chave privada RSA ao wireshark em: Editar --> Preferências --> Protocolos --> TLS --> (lista de chaves RSA) Editar...

Adicione uma nova entrada e preencha o formulário com estes valores: Endereço IP = qualquer -- Porta = 0 -- Protocolo = data -- Arquivo de Chave (selecione seu arquivo de chave, para evitar problemas selecione um arquivo de chave sem proteção por senha).

E veja a nova aba "Decrypted TLS":

KARMA, MANA, Loud MANA e ataque Known beacons

ESSID e MAC black/whitelists

A tabela a seguir lista os diferentes tipos de MFACLs (Listas de Controle de Acesso de Quadros de Gerenciamento) disponíveis, bem como seus efeitos quando utilizados:

# example EAPHammer MFACL file, wildcards can be used
78:f0:97:fc:b5:36
9a:35:e1:01:4f:cf
69:19:14:60:20:45
ce:52:b8:*:*:*

[--mac-whitelist /path/to/mac/whitelist/file.txt #EAPHammer whitelisting]
[--mac-blacklist /path/to/mac/blacklist/file.txt #EAPHammer blacklisting]
# example ESSID-based MFACL file
apples
oranges
grapes
pears

[--ssid-whitelist /path/to/mac/whitelist/file.txt]
[--ssid-blacklist /path/to/mac/blacklist/file.txt]

KARMA

Ataques KARMA são uma segunda forma de ataque a ponto de acesso falso que explora o processo de seleção de rede usado por estações. Em um whitepaper escrito em 2005, Dino Dai Zovi e Shane Macaulay descrevem como um atacante pode configurar um ponto de acesso para ouvir solicitações de sondagem direcionadas e responder a todas elas com respostas de sondagem direcionadas correspondentes. Isso faz com que as estações afetadas automaticamente enviem uma solicitação de associação para o ponto de acesso do atacante. O ponto de acesso então responde com uma resposta de associação, fazendo com que as estações afetadas se conectem ao ponto de acesso do atacante.

MANA

De acordo com Ian de Villiers e Dominic White, estações modernas são projetadas para se protegerem contra ataques KARMA ignorando respostas de sondagem direcionadas de pontos de acesso que não responderam pelo menos a uma solicitação de sondagem de difusão. Isso levou a uma queda significativa no número de estações vulneráveis a ataques KARMA até 2015, quando White e de Villiers desenvolveram um meio de contornar tais proteções. No ataque KARMA aprimorado de White e de Villiers (ataque MANA), respostas de sondagem direcionadas são usadas para reconstruir as PNLs das estações próximas. Quando uma solicitação de sondagem de difusão é recebida de uma estação, o ponto de acesso do atacante responde com um SSID arbitrário da PNL da estação já visto em uma sondagem direta daquele dispositivo.

Em resumo, o algoritmo MANA funciona assim: cada vez que o ponto de acesso recebe uma solicitação de sondagem, ele primeiro determina se é uma sondagem de difusão ou direcionada. Se for direcionada, o endereço MAC do remetente é adicionado à tabela de hash (se já não estiver lá) e o ESSID é adicionado à PNL daquele dispositivo. O AP então responde com uma resposta de sondagem direcionada. Se for uma sondagem de difusão, o ponto de acesso responde com respostas de sondagem para cada uma das redes na PNL daquele dispositivo.

Ataque MANA usando eaphammer:

./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]

Loud MANA

Observe que o ataque MANA padrão ainda não nos permite atacar dispositivos que não utilizam sondagem direcionada. Então, se também não conhecemos previamente nenhuma entrada na PNL do dispositivo, precisamos descobrir outra maneira de atacá-lo.

Uma possibilidade é o que é chamado de ataque Loud MANA. Esse ataque se baseia na ideia de que dispositivos clientes em proximidade física uns dos outros provavelmente terão pelo menos algumas entradas comuns em suas PNLs.

Em resumo, o ataque Loud MANA, em vez de responder a solicitações de sondagem com cada ESSID na PNL de um dispositivo específico, o AP malicioso envia respostas de sondagem para cada ESSID em todas as PNLs de todos os dispositivos que ele viu anteriormente. Relacionando isso à teoria dos conjuntos, podemos dizer que o AP envia respostas de sondagem para cada ESSID na união de todas as PNLs dos dispositivos próximos.

./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]

Ataque Known Beacon

Ainda existem casos em que o ataque Loud MANA não terá sucesso.
O ataque Known Beacon é uma maneira de "Força Bruta" para tentar fazer com que a vítima se conecte ao atacante. O atacante cria um AP que responde a qualquer ESSID e executa um código enviando beacons que falsificam ESSIDs de cada nome dentro de uma lista de palavras. Com sorte, a vítima terá alguns desses nomes de ESSID dentro de sua PNL e tentará se conectar ao AP falso.
Eaphammer implementou esse ataque como um ataque MANA onde todos os ESSIDs dentro de uma lista são carregados (você também pode combinar isso com --loud para criar um ataque Loud MANA + Known beacons):

./eaphammer -i wlan0 --mana [--loud] --known-beacons  --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]

Ataque Known Beacon Burst

Como é sabido, beacons são ruidosos. Você pode usar um script dentro do projeto Eaphammer para lançar beacons de cada nome ESSID dentro de um arquivo muito rapidamente. Se você combinar esse script com um ataque MANA do Eaphammer, os clientes poderão se conectar ao seu AP.

# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
--bssid de:ad:be:ef:13:37 \
--known-essids-file known-s.txt \
--dst-addr 11:22:33:11:22:33 \
--burst-count 5

Wi-Fi Direct

Wi-Fi Direct é um padrão Wi-Fi que permite que dispositivos se conectem entre si sem um AP sem fio, pois um dos dois dispositivos atuará como AP (chamado de proprietário do grupo). Você pode encontrar Wi-Fi Direct em vários dispositivos IoT, como impressoras, TVs...

Wi-Fi Direct depende do Wi-Fi Protected Setup (WPS) para conectar os dispositivos de forma segura. O WPS possui vários métodos de configuração, como Configuração por Push-Button (PBC), entrada de PIN e Comunicação por Campo Próximo (NFC)

Portanto, os ataques anteriormente vistos ao PIN do WPS também são válidos aqui se o PIN for usado.

EvilDirect Hijacking

Isso funciona como um Evil-Twin, mas para Wi-Fi Direct, você pode se passar por um proprietário de grupo para tentar fazer com que outros dispositivos, como telefones, se conectem a você: airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0

Referências

TODO: Dê uma olhada em https://github.com/wifiphisher/wifiphisher (login com facebook e imitação de WPA em portais cativos)

Participe do servidor HackenProof Discord para se comunicar com hackers experientes e caçadores de recompensas por bugs!

Insights de Hacking
Engaje-se com conteúdo que explora a emoção e os desafios do hacking

Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real

Últimos Anúncios
Fique informado com os mais novos lançamentos de recompensas por bugs e atualizações cruciais da plataforma

Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje!

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: