업데이트로 돌아가기
New releaseSep 21, 2026

KTO v3.0.1

대상 SSID에서 클라이언트를 지속적으로 스캔하고 화이트리스트에 없는 장치의 연결을 강제로 해제하는 자동화된 Wi-Fi deauthentication 도구입니다. 화이트리스트 지원, 메시/멀티 AP 대응, PMF 탐지, EAPOL 추출을 통한 실험적 WPA2 PMF 우회 기능을 제공합니다.

공유

KTO - Kick Them Out

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

SSID를 지정하면 해당 네트워크의 기기들을 연결 해제시키며, 재연결하는 기기들도 포함됩니다. 네트워크 이름을 주면 액세스 포인트를 찾고, 클라이언트를 찾고, 네트워크의 보안에 맞는 연결 해제 방법을 선택합니다.

예전 버전들은 개방형 관리 WPA/WPA2에 대해서만 실질적으로 동작했습니다. 이 버전은 PMF(802.11w)와 WPA3에 대한 벡터도 갖추고 있으며 비밀번호가 필요 없습니다. 다만 이들은 브로드캐스트 전용이고 최선 노력 방식입니다(아래 참조).

허가된 사용만. 본인이 소유하거나 서면으로 테스트 허가를 받은 네트워크에만 실행하십시오. 무단 디인증은 대부분의 지역에서 불법입니다.

공격 방식을 고르는 방법, 그리고 화이트리스트

기본적으로 KTO는 화이트리스트 안전 모드를 유지합니다. 전송이 확인된 화이트리스트에 없는 각 클라이언트에게 양방향으로 유니캐스트 디인증과 디스어소시에이션을 보냅니다. 화이트리스트에 있는 MAC은 절대 대상이 되지 않습니다. 이는 PMF를 협상하지 않은 모든 클라이언트를 끊어내며, WPA/WPA2 전체와 혼합 네트워크의 비-PMF 클라이언트를 포함합니다.

PMF(802.11w)가 문제입니다. PMF는 디인증, 디스어소시에이션, 유니캐스트 액션 프레임을 보호하므로, PMF 또는 WPA3 클라이언트는 위조된 클라이언트별 프레임을 모두 무시합니다. 유니캐스트 채널 전환 공지(CSA)까지도 마찬가지입니다. 이를 우회하는 화이트리스트 안전 방식은 없습니다. 바로 PMF가 막도록 설계된 것이기 때문입니다. PMF 클라이언트에 여전히 도달하는 프레임은 단일 기기를 겨냥할 수 없는 것들뿐입니다:

  • CSA 비콘: 채널 전환 공지를 담은 위조 AP 비콘으로, 클라이언트들을 죽은 채널로 유인합니다. 비콘은 절대 보호되지 않으므로 이는 통과하지만, 이를 듣는 모든 클라이언트가 전환합니다.
  • 익명 재결합: 브로드캐스트 출처를 사용한 AP로의 재결합 요청으로, 많은 AP가 브로드캐스트 주소를 스스로 디인증하게 만듭니다. AP가 직접 끊으므로 PMF가 개입할 여지가 없지만, 모든 클라이언트를 끊어냅니다.

둘 다 전체 BSS에 영향을 주고 화이트리스트를 존중할 수 없으므로, --broadcast를 통해 옵트인 방식입니다(브로드캐스트 디인증도 추가됩니다). PMF/WPA3 클라이언트를 끊어야 하고 화이트리스트에 있는 기기도 함께 다운되는 것을 감수할 수 있을 때 사용하십시오. --all-vectors는 브로드캐스트 벡터를 켜는 것과 동의어입니다.

요약: WPA2에서는 화이트리스트가 동작하고 클라이언트별 디인증으로 충분합니다. WPA3/PMF에서는 기본적으로 아무것도 통하지 않으며, 클라이언트별 프레임(디인증, 그리고 표적 CSA도)은 보호되어 무시되므로, 해당 클라이언트를 끊으려면 --broadcast를 전달해야 하고, 이는 전체 BSS를 다운시키므로 화이트리스트는 더 이상 적용되지 않습니다.

솔직한 단서 하나: PMF가 적용된 WPA3는 위조된 관리 프레임에 저항하도록 설계되었습니다. 어떤 비인증 공격자도 이에 대한 강제 연결 해제를 보장할 수 없습니다. 이 벡터들은 최선 노력 방식이며 많은 실제 배포 환경에서 통하지만, "모든 네트워크에서 동작한다"는 것은 WPA3에 대해 누구도 할 수 없는 약속입니다.

빌드

Rust 툴체인과 대상 머신에 iw(iproute2 / 무선 도구에서 제공)가 필요합니다.

cargo build --release

바이너리는 target/release/kto에 생성됩니다. root로 실행하십시오.

사용법

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

--auto-monitor 없이는 인터페이스가 이미 모니터 모드여야 합니다. 이를 사용하면 KTO가 시작 시 인터페이스를 모니터로 전환하고 종료 시 관리 모드로 되돌립니다. -c를 전달하지 않으면 대상를 찾기 위해 일반적인 2.4 및 5 GHz 채널을 훑은 다음 해당 채널에 고정합니다.

많은 가정용 라우터는 밴드 스티어링을 위해 하나의 SSID를 두 개의 라디오(2.4 GHz WPA2와 5 GHz WPA3, 서로 다른 BSSID)에서 광고합니다. KTO는 해당 SSID를 가진 모든 BSSID를 조사하고, 둘 이상이 나타나면 밴드와 보안 정보와 함께 목록을 보여주고 어느 것을 공격할지 묻습니다. 대상 기기가 실제로 있는 것을 고르거나, -b/--bssid로 미리 지정하십시오. 이는 중요합니다: 5 GHz WPA3 BSSID에 있는 클라이언트는 2.4 GHz WPA2 복제본을 공격해도 끊기지 않습니다.

KTO는 전송이 확인된 클라이언트만 디인증하므로, 유휴 기기는 스스로 나타나지 않을 수 있습니다. 다른 기기는 끊기는데 특정 기기가 끊기지 않으면 --client <MAC>로 지정하십시오. 그러면 KTO가 매 라운드마다 해당 기기를 공격합니다. 세 가지를 확인하십시오: 공격 중인 BSSID/밴드에 있는지, MAC이 예상한 것인지, 그리고 디인증을 무시하는 드문 NIC의 경우 --all-vectors(일반 WPA2에서도 채널 전환 및 재결합 벡터를 추가)를 시도하십시오.

더 많은 예시:

# already in monitor mode, lock to a known channel
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# band-steered SSID: target the exact AP the device is on
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: per-client is blocked, so broadcast to kick (whole BSS, no whitelist)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# spare your own devices
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# passive: list clients, send nothing
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# throw every vector at it regardless of security
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

옵션

FlagDefaultDescription
-i, --interfacerequired무선 인터페이스
-t, --targetrequired대상 SSID
-b, --bssidautoBSSID로 하나의 AP를 대상 지정 (밴드 스티어링 / 다중 AP SSID)
-f, --firstoff발견된 첫 번째 일치 AP를 공격 (선택기 건너뜀)
-c, --channelauto채널에 고정, 탐색 훑기 건너뜀
--clientnone유휴/미확인 상태여도 항상 이 MAC들을 대상으로 지정
-w, --whitelistnone제외할 MAC, 쉼표로 구분
--whitelist-filenone제외할 MAC 파일, 한 줄에 하나 (# 주석)
-n, --count8벡터당 버스트당 프레임 수
-s, --sleep0.05공격 라운드 사이의 초 (작으면 연속, 높이면 스로틀)
--reason7디인증 사유 코드 (1 unspecified, 4 inactivity, 7 class-3)
--broadcastoff브로드캐스트 / AP 전체 벡터도 사용 (화이트리스트 무시)
--scan-onlyoff클라이언트를 탐색하고 아무것도 보내지 않음
--auto-monitoroff시작 시 모니터 모드 활성화, 종료 시 복원
--csa-channel14CSA 벡터가 클라이언트를 몰아넣을 채널
--all-vectorsoff--broadcast의 동의어 (브로드캐스트 벡터 켜기)
--no-deauthoff디인증/디스어소시에이션 비활성화
--no-csaoff채널 전환 벡터 비활성화
--no-anonoff익명 재결합 비활성화
--no-tuioff라이브 대시보드 대신 일반 스크롤 출력
--no-coloroff일반 출력

인터페이스 MAC은 자동으로 화이트리스트에 등록되어 KTO가 자기 자신을 대상으로 삼지 않습니다.

대시보드

실제 터미널에서 KTO는 짧은 부팅 애니메이션 후 전체 화면 대시보드를 실행합니다: 대상 세부 정보, 라이브 클라이언트 테이블, 이벤트 로그, TX-rate 스파크라인. STATE 열이 유용한 부분입니다: UP은 기기가 여전히 전송 중(공격을 견디는 중)임을, quiet은 조용해졌음을, DOWN은 연결 해제로 간주할 만큼 충분히 오래 조용했음을 의미합니다. 클라이언트는 한 번 보이면 계속 목록에 남고, KTO는 데이터뿐 아니라 어소시에이션 및 인증 프레임에서도 이들을 포착하므로 브로드캐스트 공격 중에도 테이블이 계속 동작하며, 각 기기가 끊길 때 DOWN으로 바뀌는 것을 지켜볼 수 있습니다. 여러 AP가 SSID를 공유하면 화살표 키로 선택할 수 있는 목록이 표시됩니다.

q(또는 Esc, 또는 Ctrl-C)를 눌러 종료하십시오. 출력을 다른 곳으로 파이프하거나 --no-tui를 전달하면 일반 스크롤 로그로 대체되며, 이는 스크립트나 파일 로깅에 적합합니다.

중지

종료하면 깔끔하게 멈추고, 클라이언트별 버스트 요약을 출력하며, KTO가 모니터 모드로 전환한 경우 인터페이스를 관리 모드로 복원합니다.

라이선스

MIT, LICENSE 참조.

카테고리