Torna agli aggiornamenti
New releaseSep 21, 2026

KTO v3.0.1

Strumento automatizzato di deautenticazione Wi-Fi che scansiona continuamente i client su un SSID target ed espelle i dispositivi non in whitelist. Include supporto per la whitelist, gestione mesh/multi-AP, rilevamento PMF e bypass PMF WPA2 sperimentale tramite estrazione EAPOL.

Condividi

KTO - Kick Them Out

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

Puntalo verso un SSID e disconnette i dispositivi su quella rete, inclusi quelli che si riconnettono. Gli dai il nome della rete; trova l'access point, trova i client e sceglie un metodo di disconnessione adatto alla sicurezza della rete.

Le vecchie versioni funzionavano davvero solo contro WPA/WPA2 con gestione aperta. Questa ha anche vettori per PMF (802.11w) e WPA3, senza bisogno di password, anche se quelli sono solo broadcast e best-effort (vedi sotto).

Solo uso autorizzato. Esegui questo contro reti che possiedi o per cui hai permesso scritto di testare. La deautenticazione non autorizzata è illegale nella maggior parte dei luoghi.

Come sceglie un attacco, e la whitelist

Per impostazione predefinita KTO rimane whitelist-safe: invia deautenticazione e disassociazione unicast, in entrambe le direzioni, a ogni client non in whitelist che ha visto trasmettere. I MAC in whitelist non vengono mai presi di mira. Questo elimina qualsiasi client che non ha negoziato PMF, il che copre tutto WPA/WPA2 e qualsiasi client non-PMF su una rete mista.

PMF (802.11w) è il problema. Protegge deauth, disassoc e frame action unicast, quindi un client PMF o WPA3 ignora ogni frame per-client contraffatto, incluso un Channel Switch Announcement unicast. Non c'è modo whitelist-safe di aggirarlo; è esattamente ciò che PMF è progettato per prevenire. Gli unici frame che raggiungono ancora un client PMF sono quelli che non possono essere indirizzati a un singolo dispositivo:

  • Beacon CSA: un beacon AP falsificato che trasporta un Channel Switch Announcement che indirizza i client su un canale morto. I beacon non sono mai protetti, quindi questo passa, ma ogni client che lo sente cambia canale.
  • Riassociazione anonima: una richiesta di riassociazione all'AP con un source broadcast, che fa sì che molti AP deautentichino l'indirizzo broadcast da soli. È l'AP a fare il kick, quindi PMF non entra in gioco, ma elimina ogni client.

Entrambi colpiscono l'intero BSS e non possono rispettare una whitelist, quindi sono opt-in tramite --broadcast (che aggiunge anche un deauth broadcast). Usalo quando devi disconnettere client PMF/WPA3 e puoi accettare che anche i dispositivi in whitelist cadano. --all-vectors è un sinonimo per attivare i vettori broadcast.

In sostanza: su WPA2 la whitelist funziona e il deauth per-client è sufficiente. Su WPA3/PMF nulla arriva per impostazione predefinita, i frame per-client (deauth, e anche un CSA mirato) sono protetti e ignorati, quindi devi passare --broadcast per disconnettere quei client, e questo abbatte l'intero BSS, quindi la whitelist non si applica più.

Un'onesta avvertenza: WPA3 con PMF è costruito per resistere ai frame di gestione contraffatti. Nessun attaccante non autenticato può garantire un kick contro di esso. Questi vettori sono best-effort e funzionano su molti deployment reali, ma "funziona su ogni rete" non è una promessa che qualcuno possa fare riguardo a WPA3.

Build

Richiede un toolchain Rust e iw (da iproute2 / i wireless tools) sulla macchina target.

cargo build --release

Il binario si trova in target/release/kto. Eseguilo come root.

Utilizzo

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

Senza --auto-monitor l'interfaccia deve essere già in modalità monitor. Con esso, KTO commuta l'interfaccia in monitor all'avvio e la riporta in managed all'uscita. Se non passi -c, esegue una scansione dei comuni canali 2.4 e 5 GHz per trovare il target, poi si blocca sul suo canale.

Molti router domestici pubblicizzano un SSID da due radio (2.4 GHz WPA2 e 5 GHz WPA3, BSSID diversi) per il band steering. KTO rileva ogni BSSID che trasporta l'SSID e, quando ne compare più di uno, li elenca con banda e sicurezza e chiede quale attaccare. Scegli quello su cui si trova effettivamente il tuo dispositivo target, o nominalo in anticipo con -b/--bssid. Questo è importante: un client sul BSSID WPA3 a 5 GHz non cadrà se attacchi il clone WPA2 a 2.4 GHz.

KTO deautentica solo i client che ha visto trasmettere, quindi un dispositivo inattivo potrebbe non comparire mai da solo. Se un dispositivo specifico non cade mentre altri sì, nominalo con --client <MAC>; KTO lo colpirà allora a ogni round indipendentemente. Controlla tre cose: è sul BSSID/banda che stai attaccando, il suo MAC è quello che ti aspetti e, per la rara NIC che ignora il deauth, prova --all-vectors (che aggiunge i vettori channel-switch e riassociazione anche su semplice WPA2).

Altri esempi:

# già in modalità monitor, bloccato su un canale noto
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# SSID con band-steering: punta all'AP esatto su cui si trova il dispositivo
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: il per-client è bloccato, quindi broadcast per il kick (intero BSS, nessuna whitelist)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# risparmia i tuoi dispositivi
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# passivo: elenca i client, non inviare nulla
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# lancia ogni vettore indipendentemente dalla sicurezza
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

Opzioni

FlagDefaultDescrizione
-i, --interfacerichiestoInterfaccia wireless
-t, --targetrichiestoSSID target
-b, --bssidautoPunta a un AP tramite BSSID (SSID con band-steering / multi-AP)
-f, --firstoffAttacca il primo AP corrispondente trovato (salta il selettore)
-c, --channelautoBlocca su un canale, salta la scansione di discovery
--clientnessunoPrendi sempre di mira questi MAC, anche se inattivi/non visti
-w, --whitelistnessunoMAC separati da virgola da risparmiare
--whitelist-filenessunoFile di MAC da risparmiare, uno per riga (commenti #)
-n, --count8Frame per burst, per vettore
-s, --sleep0.05Secondi tra i round di attacco (piccolo = continuo; aumenta per limitare)
--reason7Codice motivo deauth (1 unspecified, 4 inactivity, 7 class-3)
--broadcastoffUsa anche vettori broadcast / a livello AP (ignora la whitelist)
--scan-onlyoffRileva i client, non inviare nulla
--auto-monitoroffAbilita la modalità monitor all'avvio, ripristina all'uscita
--csa-channel14Canale su cui i vettori CSA indirizzano i client
--all-vectorsoffSinonimo di --broadcast (attiva i vettori broadcast)
--no-deauthoffDisabilita deauth/disassoc
--no-csaoffDisabilita i vettori channel-switch
--no-anonoffDisabilita la riassociazione anonima
--no-tuioffOutput a scorrimento semplice invece della dashboard live
--no-coloroffOutput semplice

Il MAC dell'interfaccia è automaticamente in whitelist così KTO non prende mai di mira se stesso.

La dashboard

Su un terminale reale KTO esegue una dashboard a schermo intero: dettagli del target, una tabella client live, un log eventi e uno sparkline del TX-rate, dopo una breve animazione di avvio. La colonna STATE è la parte utile: UP significa che il dispositivo sta ancora trasmettendo (ignorando l'attacco), quiet significa che è diventato silenzioso, e DOWN significa che è stato silenzioso abbastanza a lungo da contare come disconnesso. I client rimangono elencati una volta visti, e KTO li rileva da frame di associazione e auth oltre che dai dati, quindi la tabella continua a funzionare durante un attacco broadcast, puoi osservare ogni dispositivo passare a DOWN mentre cade. Quando più AP condividono l'SSID ottieni una lista tra cui scegliere con i tasti freccia.

Premi q (o Esc, o Ctrl-C) per uscire. Reindirizza l'output da qualche parte, o passa --no-tui, e torna a log a scorrimento semplice, che è ciò che vuoi per script o logging su file.

Arresto

Uscire ferma tutto in modo pulito, stampa un riepilogo dei burst per-client e ripristina l'interfaccia in modalità managed se KTO l'aveva messa in modalità monitor.

Licenza

MIT, vedi LICENSE.

Categorie