Voltar às atualizações
New releaseSep 21, 2026

KTO v3.0.1

Ferramenta automatizada de desautenticação Wi-Fi que escaneia continuamente clientes em um SSID alvo e remove dispositivos não autorizados na lista de permissões. Possui suporte a lista de permissões, manipulação de malha/múltiplos APs, detecção de PMF e bypass experimental de WPA2 PMF via extração de EAPOL.

Compartilhar

KTO - Kick Them Out

https://github.com/user-attachments/assets/0ebf61af-c306-4825-b836-95df59052c27

Aponte-o para um SSID e ele desconecta os dispositivos naquela rede, incluindo os que se reconectam. Você informa o nome da rede; ele encontra o ponto de acesso, encontra os clientes e escolhe um método de desconexão que se adequa à segurança da rede.

As versões antigas só funcionavam realmente contra WPA/WPA2 com gerenciamento aberto. Esta também tem vetores para PMF (802.11w) e WPA3, sem necessidade de senha, embora esses sejam apenas de broadcast e best-effort (veja abaixo).

Apenas para uso autorizado. Execute isto contra redes que você possui ou tem permissão por escrito para testar. A desautenticação não autorizada é ilegal na maioria dos lugares.

Como ele escolhe um ataque, e a whitelist

Por padrão o KTO permanece seguro em relação à whitelist: ele envia desautenticação e desassociação unicast, em ambas as direções, para cada cliente não incluído na whitelist que ele viu transmitir. MACs na whitelist nunca são alvos. Isso derruba qualquer cliente que não tenha negociado PMF, o que cobre todo o WPA/WPA2 e qualquer cliente sem PMF em uma rede mista.

O PMF (802.11w) é o problema. Ele protege deauth, disassoc e frames de ação unicast, então um cliente PMF ou WPA3 ignora todo frame forjado por cliente, incluindo um Channel Switch Announcement unicast. Não há maneira segura em relação à whitelist de contornar isso; é exatamente o que o PMF foi projetado para prevenir. Os únicos frames que ainda alcançam um cliente PMF são aqueles que não podem ser direcionados a um único dispositivo:

  • Beacon CSA: um beacon de AP falsificado carregando um Channel Switch Announcement que direciona os clientes para um canal morto. Beacons nunca são protegidos, então isso passa, mas todo cliente que o ouve troca de canal.
  • Reassociação anônima: uma requisição de reassociação ao AP com origem de broadcast, o que faz muitos APs desautenticarem o endereço de broadcast por conta própria. O AP faz o kick, então o PMF nem entra na equação, mas isso derruba todos os clientes.

Ambos atingem todo o BSS e não podem respeitar uma whitelist, então são opt-in via --broadcast (que também adiciona um deauth de broadcast). Use quando precisar desconectar clientes PMF/WPA3 e puder aceitar que dispositivos na whitelist também caiam. --all-vectors é um sinônimo para ativar os vetores de broadcast.

Resumindo: no WPA2 a whitelist funciona e o deauth por cliente é suficiente. No WPA3/PMF nada funciona por padrão, os frames por cliente (deauth, e também um CSA direcionado) são protegidos e ignorados, então você precisa passar --broadcast para desconectar esses clientes, e isso derruba todo o BSS, então a whitelist deixa de se aplicar.

Uma ressalva honesta: WPA3 com PMF é construído para resistir a frames de gerenciamento forjados. Nenhum atacante não autenticado pode garantir um kick contra ele. Esses vetores são best-effort e funcionam em muitas implantações reais, mas "funciona em toda rede" não é uma promessa que alguém possa fazer sobre WPA3.

Build

Precisa de um toolchain Rust e iw (do iproute2 / as ferramentas wireless) na máquina alvo.

cargo build --release

O binário fica em target/release/kto. Execute-o como root.

Uso

sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor

Sem --auto-monitor a interface já precisa estar em modo monitor. Com ele, o KTO coloca a interface em monitor ao iniciar e volta para managed ao sair. Se você não passar -c, ele varre os canais comuns de 2.4 e 5 GHz para encontrar o alvo, depois trava no canal dele.

Muitos roteadores domésticos anunciam um SSID a partir de dois rádios (2.4 GHz WPA2 e 5 GHz WPA3, BSSIDs diferentes) para band steering. O KTO examina cada BSSID que carrega o SSID e, quando mais de um aparece, lista-os com banda e segurança e pergunta qual atacar. Escolha aquele em que seu dispositivo alvo realmente está, ou nomeie-o de antemão com -b/--bssid. Isso importa: um cliente no BSSID WPA3 de 5 GHz não cai se você atacar o clone WPA2 de 2.4 GHz.

O KTO só faz deauth de clientes que ele viu transmitir, então um dispositivo ocioso pode nunca aparecer por conta própria. Se um dispositivo específico não cai enquanto outros caem, nomeie-o com --client <MAC>; o KTO então o atingirá a cada rodada independentemente. Verifique três coisas: ele está no BSSID/banda que você está atacando, seu MAC é o que você espera e, para a rara NIC que ignora deauth, tente --all-vectors (que adiciona os vetores de channel-switch e reassociação mesmo em WPA2 simples).

Mais exemplos:

# já em modo monitor, travar em um canal conhecido
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# SSID com band steering: mirar no AP exato em que o dispositivo está
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: por cliente é bloqueado, então use broadcast para dar o kick (todo o BSS, sem whitelist)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# poupar seus próprios dispositivos
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# passivo: listar clientes, não enviar nada
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# lançar todos os vetores independentemente da segurança
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

Opções

FlagPadrãoDescrição
-i, --interfaceobrigatórioInterface wireless
-t, --targetobrigatórioSSID alvo
-b, --bssidautoMirar em um AP por BSSID (SSIDs com band steering / multi-AP)
-f, --firstdesligadoAtacar o primeiro AP correspondente encontrado (pular o seletor)
-c, --channelautoTravar em um canal, pular a varredura de descoberta
--clientnenhumSempre mirar nesses MACs, mesmo se ociosos/não vistos
-w, --whitelistnenhumMACs separados por vírgula a poupar
--whitelist-filenenhumArquivo de MACs a poupar, um por linha (comentários com #)
-n, --count8Frames por rajada, por vetor
-s, --sleep0.05Segundos entre rodadas de ataque (pequeno = contínuo; aumente para limitar)
--reason7Código de motivo do deauth (1 não especificado, 4 inatividade, 7 classe-3)
--broadcastdesligadoTambém usar vetores de broadcast / de todo o AP (ignora a whitelist)
--scan-onlydesligadoDescobrir clientes, não enviar nada
--auto-monitordesligadoAtivar modo monitor ao iniciar, restaurar ao sair
--csa-channel14Canal para o qual os vetores CSA conduzem os clientes
--all-vectorsdesligadoSinônimo de --broadcast (ativar os vetores de broadcast)
--no-deauthdesligadoDesativar deauth/disassoc
--no-csadesligadoDesativar os vetores de channel-switch
--no-anondesligadoDesativar reassociação anônima
--no-tuidesligadoSaída simples com rolagem em vez do dashboard ao vivo
--no-colordesligadoSaída simples

O MAC da interface é colocado na whitelist automaticamente para que o KTO nunca se torne alvo de si mesmo.

O dashboard

Em um terminal real o KTO executa um dashboard em tela cheia: detalhes do alvo, uma tabela de clientes ao vivo, um log de eventos e um sparkline de taxa de TX, após uma breve animação de boot. A coluna STATE é a parte útil: UP significa que o dispositivo ainda está transmitindo (ignorando o ataque), quiet significa que ele ficou silencioso, e DOWN significa que ficou silencioso por tempo suficiente para contar como desconectado. Os clientes permanecem listados depois de vistos, e o KTO os captura a partir de frames de associação e auth, bem como de dados, então a tabela continua funcionando durante um ataque de broadcast, você pode ver cada dispositivo mudar para DOWN conforme cai. Quando vários APs compartilham o SSID, você recebe uma lista para escolher com as teclas de seta.

Pressione q (ou Esc, ou Ctrl-C) para sair. Redirecione a saída para algum lugar, ou passe --no-tui, e ele volta para logs simples com rolagem, que é o que você quer para scripts ou para registrar em arquivo.

Parando

Sair para de forma limpa, imprime um resumo de rajadas por cliente e restaura a interface para o modo managed se o KTO a colocou em modo monitor.

Licença

MIT, veja LICENSE.

Categorias