Zurück zu den Updates
New releaseSep 21, 2026

KTO v3.0.1

Automatisiertes Wi-Fi-Entauthentifizierungstool, das kontinuierlich nach Clients auf einer Ziel-SSID scannt und nicht in der Whitelist befindliche Geräte entfernt. Bietet Whitelist-Unterstützung, Mesh-/Multi-AP-Handhabung, PMF-Erkennung und experimentelle WPA2-PMF-Umgehung via EAPOL-Extraktion.

Teilen

KTO - Kick Them Out

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

Richte es auf eine SSID und es trennt die Geräte in diesem Netzwerk, einschließlich solcher, die sich erneut verbinden. Du gibst ihm den Netzwerknamen; es findet den Access Point, findet die Clients und wählt eine Trennungsmethode, die zur Sicherheit des Netzwerks passt.

Die alten Versionen funktionierten nur wirklich gegen WPA/WPA2 mit offenem Management. Diese hier hat auch Vektoren für PMF (802.11w) und WPA3, ohne Passwort, obwohl diese nur Broadcast sind und Best-Effort (siehe unten).

Nur für autorisierte Nutzung. Führe dies nur gegen Netzwerke aus, die dir gehören oder für die du eine schriftliche Genehmigung zum Testen hast. Unautorisierte Deauthentifizierung ist an den meisten Orten illegal.

Wie es einen Angriff auswählt, und die Whitelist

Standardmäßig bleibt KTO whitelist-sicher: Es sendet Unicast-Deauthentifizierung und Disassoziation, in beide Richtungen, an jeden nicht-whitelisted Client, den es beim Senden gesehen hat. Whitelisted MACs werden niemals angegriffen. Dies trennt jeden Client, der kein PMF ausgehandelt hat, was alle WPA/WPA2 und jeden Nicht-PMF-Client in einem gemischten Netzwerk abdeckt.

PMF (802.11w) ist der Haken. Es schützt Deauth-, Disassoc- und Unicast-Action- Frames, sodass ein PMF- oder WPA3-Client jeden gefälschten Per-Client-Frame ignoriert, einschließlich einer Unicast Channel Switch Announcement. Es gibt keinen whitelist-sicheren Weg darum herum; genau das soll PMF verhindern. Die einzigen Frames, die einen PMF-Client noch erreichen, sind solche, die nicht auf ein einzelnes Gerät gerichtet werden können:

  • CSA Beacon: ein gefälschter AP-Beacon mit einer Channel Switch Announcement, der Clients auf einen toten Kanal zählt. Beacons sind niemals geschützt, also kommt dies durch, aber jeder Client, der es hört, wechselt.
  • Anonyme Reassoziation: eine Reassoziationsanfrage an den AP mit einer Broadcast-Quelle, wodurch viele APs die Broadcast-Adresse selbst deauthentifizieren. Der AP führt den Kick aus, also spielt PMF keine Rolle, aber es trennt jeden Client.

Beide treffen das gesamte BSS und können keine Whitelist berücksichtigen, daher sind sie opt-in über --broadcast (was auch eine Broadcast-Deauth hinzufügt). Verwende es, wenn du PMF/WPA3-Clients trennen musst und akzeptieren kannst, dass whitelisted Geräte ebenfalls ausfallen. --all-vectors ist ein Synonym für das Einschalten der Broadcast-Vektoren.

Fazit: Bei WPA2 funktioniert die Whitelist und Per-Client-Deauth ist ausreichend. Bei WPA3/PMF landet standardmäßig nichts, die Per-Client-Frames (Deauth und auch ein gezieltes CSA) sind geschützt und werden ignoriert, also musst du --broadcast übergeben, um diese Clients zu trennen, und das reißt das gesamte BSS herunter, sodass die Whitelist nicht mehr gilt.

Ein ehrlicher Vorbehalt: WPA3 mit PMF ist darauf ausgelegt, gefälschten Management-Frames zu widerstehen. Kein nicht authentifizierter Angreifer kann einen Kick dagegen garantieren. Diese Vektoren sind Best-Effort und landen bei vielen realen Deployments, aber „funktioniert in jedem Netzwerk" ist kein Versprechen, das jemand über WPA3 machen kann.

Build

Benötigt eine Rust-Toolchain und iw (aus iproute2 / den Wireless-Tools) auf der Zielmaschine.

cargo build --release

Das Binary landet unter target/release/kto. Führe es als root aus.

Verwendung

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

Ohne --auto-monitor muss sich die Schnittstelle bereits im Monitor-Modus befinden. Mit ihm schaltet KTO die Schnittstelle beim Start in den Monitor-Modus und beim Beenden zurück in den Managed-Modus. Wenn du -c nicht übergibst, durchsucht es die gängigen 2,4- und 5-GHz-Kanäle, um das Ziel zu finden, und rastet dann auf dessen Kanal ein.

Viele Heimrouter werben mit einer SSID von zwei Funkmodulen (2,4 GHz WPA2 und 5 GHz WPA3, unterschiedliche BSSIDs) für Band Steering. KTO erfasst jede BSSID, die die SSID trägt, und wenn mehr als eine auftaucht, listet es sie mit Band und Sicherheit auf und fragt, welche angegriffen werden soll. Wähle die, auf der dein Zielgerät tatsächlich ist, oder benenne sie vorab mit -b/--bssid. Das ist wichtig: Ein Client auf der 5-GHz-WPA3-BSSID wird nicht getrennt, wenn du den 2,4-GHz-WPA2-Klon angreifst.

KTO deauthentifiziert nur Clients, die es beim Senden gesehen hat, daher taucht ein inaktives Gerät möglicherweise nie von selbst auf. Wenn ein bestimmtes Gerät nicht getrennt wird, während andere es werden, benenne es mit --client <MAC>; KTO wird es dann in jeder Runde treffen, unabhängig davon. Prüfe drei Dinge: Es ist auf der BSSID/dem Band, die/das du angreifst, seine MAC ist die, die du erwartest, und für die seltene NIC, die Deauth ignoriert, versuche --all-vectors (was die Channel-Switch- und Reassoziations-Vektoren auch bei reinem WPA2 hinzufügt).

Weitere Beispiele:

# bereits im Monitor-Modus, auf einen bekannten Kanal einrasten
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# band-gesteuerte SSID: den genauen AP anvisieren, auf dem das Gerät ist
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: Per-Client ist blockiert, also per Broadcast kicken (gesamtes BSS, keine Whitelist)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# eigene Geräte verschonen
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# passiv: Clients auflisten, nichts senden
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# jeden Vektor darauf werfen, unabhängig von der Sicherheit
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

Optionen

FlagStandardBeschreibung
-i, --interfaceerforderlichDrahtlose Schnittstelle
-t, --targeterforderlichZiel-SSID
-b, --bssidautoEinen AP per BSSID anvisieren (band-gesteuerte / Multi-AP-SSIDs)
-f, --firstausDen ersten passenden gefundenen AP angreifen (Auswahl überspringen)
-c, --channelautoAuf einen Kanal einrasten, den Discovery-Sweep überspringen
--clientkeineDiese MACs immer anvisieren, auch wenn inaktiv/ungesehen
-w, --whitelistkeineKommagetrennte MACs zum Verschonen
--whitelist-filekeineDatei mit MACs zum Verschonen, eine pro Zeile (#-Kommentare)
-n, --count8Frames pro Burst, pro Vektor
-s, --sleep0.05Sekunden zwischen Angriffsrunden (klein = kontinuierlich; erhöhen zum Drosseln)
--reason7Deauth-Reason-Code (1 unspecified, 4 inactivity, 7 class-3)
--broadcastausAuch Broadcast- / AP-weite Vektoren verwenden (ignoriert die Whitelist)
--scan-onlyausClients entdecken, nichts senden
--auto-monitorausMonitor-Modus beim Start aktivieren, beim Beenden wiederherstellen
--csa-channel14Kanal, auf den die CSA-Vektoren Clients treiben
--all-vectorsausSynonym für --broadcast (die Broadcast-Vektoren einschalten)
--no-deauthausDeauth/Disassoc deaktivieren
--no-csaausDie Channel-Switch-Vektoren deaktivieren
--no-anonausAnonyme Reassoziation deaktivieren
--no-tuiausEinfache scrollende Ausgabe statt des Live-Dashboards
--no-colorausEinfache Ausgabe

Die Schnittstellen-MAC wird automatisch whitelisted, damit KTO sich niemals selbst anvisiert.

Das Dashboard

Auf einem echten Terminal führt KTO ein Vollbild-Dashboard aus: Ziel-Details, eine Live- Client-Tabelle, ein Ereignisprotokoll und eine TX-Rate-Sparkline, nach einer kurzen Boot- Animation. Die STATE-Spalte ist der nützliche Teil: UP bedeutet, das Gerät sendet noch (steckt den Angriff weg), quiet bedeutet, es ist verstummt, und DOWN bedeutet, es war lange genug still, um als getrennt zu gelten. Clients bleiben aufgelistet, sobald sie gesehen wurden, und KTO erfasst sie aus Assoziations- und Auth-Frames sowie Daten, sodass die Tabelle während eines Broadcast-Angriffs weiter funktioniert, du kannst beobachten, wie jedes Gerät auf DOWN umspringt, wenn es ausfällt. Wenn mehrere APs die SSID teilen, bekommst du eine Liste zur Auswahl mit den Pfeiltasten.

Drücke q (oder Esc oder Ctrl-C) zum Beenden. Leite die Ausgabe irgendwohin oder übergib --no-tui, und es fällt auf einfache scrollende Logs zurück, was du für Skripte oder das Logging in eine Datei willst.

Beenden

Das Beenden stoppt sauber, gibt eine Per-Client-Burst-Zusammenfassung aus und stellt die Schnittstelle auf den Managed-Modus zurück, wenn KTO sie in den Monitor-Modus versetzt hat.

Lizenz

MIT, siehe LICENSE.

Kategorien