Introduction
Este documento descreve como descriptografar o sniffer de Wi-Fi Protected Access 2 - Enterprise (WPA2-Enterprise) ou 802.1x (dot1x) criptografado sem fio por via aérea (OTA), com qualquer método EAP (Extensible Authentication Protocol).
É relativamente fácil descriptografar a captura OTA 802.11 baseada em PSK/WPA2-Personal, desde que sejam capturados os handshakes EAPover LAN (EAPoL) completos de quatro vias. No entanto, a chave pré-compartilhada (PSK) nem sempre é recomendada do ponto de vista da segurança. Decifrar uma senha codificada é apenas uma questão de tempo.
Portanto, muitas empresas escolhem o dot1x com Remote Authentication Dial-In User Service (RADIUS) como uma melhor solução de segurança para sua rede sem fio.
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
- FreeRADIUS com o radsniff instalado
- Wireshark/Omnipeek ou qualquer software capaz de descriptografar o tráfego sem fio 802.11
- Privilégio de obter o segredo compartilhado entre o Network Access Server (NAS) e o Authenticator
- Capacidade de capturar a captura de pacote raio entre o NAS e o autenticador da primeira solicitação de acesso (do NAS para o autenticador) para a última aceitação de acesso (do autenticador para o NAS) durante toda a sessão EAP
- Capacidade de executar captura OTA (Over-the-Air) contendo handshakes EAPoL de quatro vias
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Servidor Radius (FreeRADIUS ou ISE)
- Dispositivo de captura over-the-Air
- Apple macOS/OS X ou dispositivo Linux
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Neste exemplo, duas PMKs (Pairwise Master Keys) são derivadas de pacotes Radius capturados do ISE 2.3, já que o tempo limite da sessão neste SSID é de 1800 segundos, e a captura fornecida aqui tem 34 minutos (2040 segundos).
Como mostrado na imagem, o EAP-PEAP é usado como exemplo, mas isso pode ser aplicado a qualquer autenticação sem fio baseada em dot1x.
Procedimento
Etapa 1. Descriptografar PMK(s) do pacote Access-accept.
Execute o radsniff contra a captura de raio entre o NAS e o Authenticator para extrair o PMK. A razão pela qual dois pacotes aceitos pelo acesso são extraídos durante a captura é que o temporizador de tempo limite da sessão é definido como 30 minutos neste SSID específico e a captura tem 34 minutos de duração. A autenticação é executada duas vezes.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303432
EAP-Message = 0x03c50004
Message-Authenticator = 0x38c67b9ba349842c9624889a45cabdfb
MS-MPPE-Send-Key = 0xa464cc15c0df8f09edc249c28711eb13a6db2d1a176f1196edcc707579fd6793
MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b<<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0x6cd33b4d4dde05c07d9923e17ad6c218
<snip>
2018-11-16 11:39:01.470000 (48) Access-Accept Id 183 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303434
EAP-Message = 0x03910004
Message-Authenticator = 0x81c572651679e15e54a900f3360c0aa9
MS-MPPE-Send-Key = 0xeae42cf7c6cd26371eee29856c51824fbb5bbb298874125928470114d009b5fb
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0xa523dd9ec2ce93d19fe4fc2e21537a5d
Note: Remova qualquer marca de LAN virtual (VLAN) da captura de pacote Radius; caso contrário, radsniff não reconhece o arquivo pcap de entrada. Para remover qualquer marca de VLAN, por exemplo, editcap pode ser usado.
Tip: Geralmente, o tempo de execução do comando radsniff em um arquivo pcap RADIUS pode ser contado como uma escala de segundos. No entanto, se o radsniff estiver preso nesse estado mostrado no registro, faça a cascata dessa captura de pacote (A) com outra captura de pacote (B) mais longa entre o mesmo NAS e o mesmo Autenticador. Em seguida, execute o comando radsniff no pacote em cascata (A+B). O único requisito da captura de pacotes (B) é que você pode executar o comando radsniff contra ele e ver um resultado detalhado.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan.pcap -s Cisco123 -x
Logging all events
Sniffing on (/Users/frlu/Downloads/radius_novlan.pcap)
Neste exemplo, o registro de plano de controle (A) do Wireless Lan Controller (WLC) capturado por meio do recurso de registro de pacotes da WLC, é em cascata com uma captura mais longa do TCPdump (B) do ISE. O registro de pacotes da WLC é usado como exemplo, porque geralmente é muito pequeno.
Registro de pacote (A) da WLC
Tcpdump ISE (B)
Mesclado (A+B)
Em seguida, execute o radsniff contra o pcap mesclado (A+B) e você poderá ver a saída verbosa.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
<snip>
Etapa 2. Extraia PMK(s).
A exclusão de um campo 0x em cada MS-MPPE-Recv-Key da saída verbosa e os PMKs necessários para o decodificador de tráfego sem fio são então apresentados.
MS-MPPE-Chave-Recv = 0xdb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41c a066d8b3b
PMK:
ddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d7984816a3793c5a4dfb1cc b0e
PMK:
7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e
Etapa 3. Descriptografar o Sniffer OTA.
Navegue até Wireshark > Preferences > Protocols > IEEE 802.11. Em seguida, marque Enable Decryption (Ativar descriptografia) e clique no botão Edit (Editar) ao lado de Decryption Keys (Chaves de descriptografia), como mostrado na imagem.
Em seguida, selecione wpa-psk como o tipo de chave, coloque os PMKs derivados no campo Key e clique em OK. Depois que isso for concluído, a captura OTA deverá ser descriptografada e você poderá ver informações da camada superior (3+).
Exemplo de um pacote 802.11 descriptografado
Se você comparar o segundo resultado em que o PMK não está incluído, com o primeiro resultado, em que o PMK está incluído, o pacote 397886 é descriptografado como dados de QoS 802.11.
Exemplo de um pacote 802.11 criptografado
Caution: Você pode encontrar um problema com o Wireshark na descriptografia e, nesse caso, mesmo se o PMK correto for fornecido (ou se a PSK for usada, o SSID e a PSK forem fornecidos), o Wireshark não descriptografa a captura OTA. A solução alternativa é desligar o Wireshark e ligá-lo algumas vezes até que as informações da camada mais alta possam ser obtidas e os pacotes 802.11 não sejam mais mostrados como dados de QoS, ou usar outro PC/Mac onde o Wireshark está instalado.
Dica: um código C++ chamado pmkXtract está anexado à primeira publicação em Informações Relacionadas. As tentativas de compilação foram bem-sucedidas e um arquivo executável é obtido, mas o programa executável não parece executar a descriptografia corretamente por alguns motivos desconhecidos. Além disso, um script Python que tenta extrair PMK é publicado na área de comentários da primeira publicação, que pode ser explorada se os leitores estiverem interessados.
Informações Relacionadas