Volver a actualizaciones
Nuevo releaseSep 21, 2026

KTO v3.0.1

Herramienta automatizada de desautenticación Wi-Fi que escanea continuamente clientes en un SSID objetivo y expulsa dispositivos no incluidos en la lista blanca. Incluye soporte para listas blancas, manejo de malla/múltiples AP, detección de PMF y un bypass experimental de PMF WPA2 mediante extracción de EAPOL.

Compartir

KTO - Kick Them Out

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

Apúntalo a un SSID y desconecta los dispositivos de esa red, incluidos los que se reconectan. Le das el nombre de la red; encuentra el punto de acceso, encuentra los clientes y elige un método de desconexión que se ajuste a la seguridad de la red.

Las versiones antiguas solo funcionaban realmente contra WPA/WPA2 con gestión abierta. Esta también tiene vectores para PMF (802.11w) y WPA3, sin necesidad de contraseña, aunque esos son solo de difusión y de mejor esfuerzo (ver más abajo).

Solo para uso autorizado. Ejecuta esto contra redes que poseas o para las que tengas permiso por escrito para probar. La desautenticación no autorizada es ilegal en la mayoría de los lugares.

Cómo elige un ataque, y la lista blanca

Por defecto KTO se mantiene seguro con la lista blanca: envía desautenticación y desasociación unicast, en ambas direcciones, a cada cliente no incluido en la lista blanca que haya visto transmitir. Las MAC en la lista blanca nunca son objetivo. Esto desconecta a cualquier cliente que no haya negociado PMF, lo que cubre todo WPA/WPA2 y cualquier cliente no PMF en una red mixta.

PMF (802.11w) es el problema. Protege los frames de deauth, disassoc y acción unicast, por lo que un cliente PMF o WPA3 ignora cada frame falsificado por cliente, incluido un Channel Switch Announcement unicast. No hay forma segura con la lista blanca de evitar eso; es exactamente lo que PMF está diseñado para prevenir. Los únicos frames que aún llegan a un cliente PMF son aquellos que no pueden dirigirse a un solo dispositivo:

  • CSA beacon: un beacon de AP falsificado que lleva un Channel Switch Announcement que dirige a los clientes a un canal muerto. Los beacons nunca están protegidos, así que esto pasa, pero cada cliente que lo escucha cambia.
  • Reasociación anónima: una solicitud de reasociación al AP con una fuente de difusión, lo que hace que muchos AP desautentiquen ellos mismos la dirección de difusión. El AP hace la expulsión, así que PMF nunca entra en juego, pero desconecta a todos los clientes.

Ambos afectan a todo el BSS y no pueden respetar una lista blanca, por lo que son opcionales mediante --broadcast (que también añade un deauth de difusión). Úsalo cuando necesites desconectar clientes PMF/WPA3 y puedas aceptar que los dispositivos en la lista blanca también caigan. --all-vectors es un sinónimo de activar los vectores de difusión.

En resumen: en WPA2 la lista blanca funciona y el deauth por cliente es suficiente. En WPA3/PMF nada llega por defecto, los frames por cliente (deauth, y también un CSA dirigido) están protegidos e ignorados, así que tienes que pasar --broadcast para desconectar esos clientes, y eso derriba todo el BSS, por lo que la lista blanca ya no aplica.

Una advertencia honesta: WPA3 con PMF está construido para resistir frames de gestión falsificados. Ningún atacante no autenticado puede garantizar una expulsión contra él. Estos vectores son de mejor esfuerzo y funcionan en muchos despliegues reales, pero "funciona en todas las redes" no es una promesa que nadie pueda hacer sobre WPA3.

Compilación

Necesita un toolchain de Rust e iw (de iproute2 / las herramientas wireless) en la máquina objetivo.

cargo build --release

El binario queda en target/release/kto. Ejecútalo como root.

Uso

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

Sin --auto-monitor la interfaz ya tiene que estar en modo monitor. Con él, KTO cambia la interfaz a monitor al iniciar y de vuelta a managed al salir. Si no pasas -c, recorre los canales comunes de 2.4 y 5 GHz para encontrar el objetivo, luego se fija en su canal.

Muchos routers domésticos anuncian un SSID desde dos radios (2.4 GHz WPA2 y 5 GHz WPA3, diferentes BSSIDs) para band steering. KTO sondea cada BSSID que lleva el SSID y, cuando aparece más de uno, los lista con banda y seguridad y pregunta cuál atacar. Elige el que tu dispositivo objetivo esté usando realmente, o nómbralo de antemano con -b/--bssid. Esto importa: un cliente en el BSSID de 5 GHz WPA3 no caerá si atacas el clon de 2.4 GHz WPA2.

KTO solo desautentica clientes que ha visto transmitir, así que un dispositivo inactivo puede que nunca aparezca por sí solo. Si un dispositivo específico no cae mientras otros sí, nómbralo con --client <MAC>; KTO entonces lo atacará cada ronda sin importar qué. Verifica tres cosas: que está en el BSSID/banda que estás atacando, que su MAC es la que esperas, y, para la rara NIC que ignora el deauth, prueba --all-vectors (que añade los vectores de channel-switch y reasociación incluso en WPA2 simple).

Más ejemplos:

# ya en modo monitor, fijar a un canal conocido
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# SSID con band steering: apuntar al AP exacto donde está el dispositivo
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: por cliente está bloqueado, así que difundir para expulsar (todo el BSS, sin lista blanca)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# perdonar tus propios dispositivos
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# pasivo: listar clientes, no enviar nada
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# lanzar todos los vectores sin importar la seguridad
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

Opciones

FlagPredeterminadoDescripción
-i, --interfacerequeridoInterfaz wireless
-t, --targetrequeridoSSID objetivo
-b, --bssidautoApuntar a un AP por BSSID (SSIDs con band steering / multi-AP)
-f, --firstoffAtacar el primer AP coincidente encontrado (omitir el selector)
-c, --channelautoFijar a un canal, omitir el barrido de descubrimiento
--clientningunoApuntar siempre a estas MACs, incluso si están inactivas/no vistas
-w, --whitelistningunoMACs separadas por comas a perdonar
--whitelist-fileningunoArchivo de MACs a perdonar, una por línea (comentarios con #)
-n, --count8Frames por ráfaga, por vector
-s, --sleep0.05Segundos entre rondas de ataque (pequeño = continuo; subir para limitar)
--reason7Código de razón de deauth (1 unspecified, 4 inactivity, 7 class-3)
--broadcastoffUsar también vectores de difusión / de todo el AP (ignora la lista blanca)
--scan-onlyoffDescubrir clientes, no enviar nada
--auto-monitoroffActivar modo monitor al iniciar, restaurar al salir
--csa-channel14Canal al que los vectores CSA dirigen a los clientes
--all-vectorsoffSinónimo de --broadcast (activar los vectores de difusión)
--no-deauthoffDesactivar deauth/disassoc
--no-csaoffDesactivar los vectores de channel-switch
--no-anonoffDesactivar la reasociación anónima
--no-tuioffSalida de desplazamiento simple en lugar del panel en vivo
--no-coloroffSalida simple

La MAC de la interfaz se añade automáticamente a la lista blanca para que KTO nunca se ataque a sí mismo.

El panel

En un terminal real KTO ejecuta un panel a pantalla completa: detalles del objetivo, una tabla de clientes en vivo, un registro de eventos y un sparkline de tasa de TX, tras una breve animación de arranque. La columna STATE es la parte útil: UP significa que el dispositivo sigue transmitiendo (ignorando el ataque), quiet significa que se ha quedado en silencio, y DOWN significa que ha estado en silencio el suficiente tiempo para contar como desconectado. Los clientes permanecen listados una vez vistos, y KTO los capta de frames de asociación y autenticación además de datos, así que la tabla sigue funcionando durante un ataque de difusión, puedes ver cada dispositivo cambiar a DOWN mientras cae. Cuando varios AP comparten el SSID obtienes una lista para elegir con las teclas de flecha.

Pulsa q (o Esc, o Ctrl-C) para salir. Redirige la salida a algún sitio, o pasa --no-tui, y vuelve a registros de desplazamiento simple, que es lo que quieres para scripts o para registrar en un archivo.

Detención

Salir detiene limpiamente, imprime un resumen de ráfagas por cliente y restaura la interfaz a modo managed si KTO la puso en modo monitor.

Licencia

MIT, ver LICENSE.

Categorías