
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.
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.
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:
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.
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.
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
| Flag | Standard | Beschreibung |
|---|---|---|
-i, --interface | erforderlich | Drahtlose Schnittstelle |
-t, --target | erforderlich | Ziel-SSID |
-b, --bssid | auto | Einen AP per BSSID anvisieren (band-gesteuerte / Multi-AP-SSIDs) |
-f, --first | aus | Den ersten passenden gefundenen AP angreifen (Auswahl überspringen) |
-c, --channel | auto | Auf einen Kanal einrasten, den Discovery-Sweep überspringen |
--client | keine | Diese MACs immer anvisieren, auch wenn inaktiv/ungesehen |
-w, --whitelist | keine | Kommagetrennte MACs zum Verschonen |
--whitelist-file | keine | Datei mit MACs zum Verschonen, eine pro Zeile (#-Kommentare) |
-n, --count | 8 | Frames pro Burst, pro Vektor |
-s, --sleep | 0.05 | Sekunden zwischen Angriffsrunden (klein = kontinuierlich; erhöhen zum Drosseln) |
--reason | 7 | Deauth-Reason-Code (1 unspecified, 4 inactivity, 7 class-3) |
--broadcast | aus | Auch Broadcast- / AP-weite Vektoren verwenden (ignoriert die Whitelist) |
--scan-only | aus | Clients entdecken, nichts senden |
--auto-monitor | aus | Monitor-Modus beim Start aktivieren, beim Beenden wiederherstellen |
--csa-channel | 14 | Kanal, auf den die CSA-Vektoren Clients treiben |
--all-vectors | aus | Synonym für --broadcast (die Broadcast-Vektoren einschalten) |
--no-deauth | aus | Deauth/Disassoc deaktivieren |
--no-csa | aus | Die Channel-Switch-Vektoren deaktivieren |
--no-anon | aus | Anonyme Reassoziation deaktivieren |
--no-tui | aus | Einfache scrollende Ausgabe statt des Live-Dashboards |
--no-color | aus | Einfache Ausgabe |
Die Schnittstellen-MAC wird automatisch whitelisted, damit KTO sich niemals selbst anvisiert.