
AirStrike는 통합된 웹 기반 인터페이스를 통해 Wi-Fi 침투 테스트를 간소화하고 강화하도록 설계된 고급 무선 보안 평가 프레임워크입니다.
_ _ ____ _ _ _
/ \ (_) _ __ / ___| | |_ _ __ (_)| | __ ___
/ _ \ | || '__|\___ \ | __|| '__|| || |/ / / _ \
/ ___ \ | || | ___) || |_ | | | || < | __/
/_/ \_\|_||_| |____/ \__||_| |_||_|\_\ \___|
AirStrike는 브라우저에서 Wi-Fi 평가 도구를 오케스트레이션하기 위한 Flask + Socket.IO 웹 인터페이스입니다. 이 빌드는 의도적으로 제품군에서 가장 안정적인 세 가지 공격, 즉 비인증(Deauthentication), 크래킹(핸드셰이크 캡처 + aircrack-ng), **이블 트윈(Evil Twin)**에 초점을 맞춥니다.
aircrack-ng와 구성 가능한 워드리스트로 브루트포싱합니다.hostapd/dnsmasq를 통해 대상 SSID를 복제하고 DHCP/DNS 스푸핑을 설정하며, 선택적으로 캡티브 포털을 앞세울 수 있습니다.UI, API 및 코드 경로를 간결하게 유지하기 위해 다른 모든 실험적 공격 스텁은 제거되었습니다.
pippython -m venv .venv
source .venv/bin/activate
pip install -e . # installs deps + the `airstrike` console script
# or: pip install -r requirements.txt
$PATH에서 사용 가능한 외부 CLI 도구:
aircrack-ng 제품군 (airmon-ng, airodump-ng, aircrack-ng)iw, ip, ifconfig/net-toolshostapd, dnsmasq, iptables, dnsspoofsudo python run.py
실행기는 sudo를 강제하고, 필요한 환경 변수를 내보내며, /etc/hosts에 127.0.0.1 airstrike.local이 포함되도록 보장합니다.
서버는 기본적으로 **127.0.0.1:5000(루프백 전용)**에 바인딩됩니다. http://airstrike.local:5000 또는 http://127.0.0.1:5000으로 접속하세요. (sudo airstrike는 콘솔 스크립트를 통해 동일한 작업을 실행합니다.)
기본 루프백 바인딩에서는 로그인이 없습니다 — 단일 운영자 머신의 경우 루프백 바인딩 자체가 접근 제어이므로 대시보드로 바로 이동합니다. (AIRSTRIKE_BIND_ALL=1로 패널을 외부에 노출하면 로그인 게이트가 자동으로 켜집니다. 이때 AIRSTRIKE_PASSWORD를 설정하거나 AIRSTRIKE_REQUIRE_AUTH=1 / AIRSTRIKE_DISABLE_AUTH=1로 인증을 강제로 켜거나 끌 수 있습니다.) Scan 탭에서 네트워크를 발견하고 하나를 선택한 다음 Attack으로 전환하세요. 공격이 시작되기 전에도 여전히 승인을 확인하며, 모든 시작/중지는 airstrike-audit.log에 기록됩니다. 실시간 로그와 캡처 요약은 Results 아래에 있습니다.
다른 머신에서 접근하려면 SSH 터널을 사용하는 것이 좋습니다 (ssh -L 5000:127.0.0.1:5000 <host>). 모든 인터페이스에 노출(AIRSTRIKE_BIND_ALL=1)하면 패널이 평문 HTTP로 제공되므로 권장되지 않습니다 — THREAT_MODEL.md를 참조하세요.
app/config.py의 config 딕셔너리에 있으며, Settings 탭에서 실시간으로 편집할 수 있습니다.AIRSTRIKE_PASSWORD(로그인), AIRSTRIKE_SECRET_KEY(영구 세션), AIRSTRIKE_BIND_ALL=1(모든 인터페이스에 노출 — 권장되지 않음), AIRSTRIKE_ORIGINS(루프백이 아닐 때 Socket.IO CORS 허용 목록), AIRSTRIKE_AUDIT_LOG(감사 파일 경로).captures/ 안에 BSSID별로 저장됩니다.run.py는 app.cli:main으로 가는 얇은 셤(shim)입니다(airstrike 콘솔 스크립트로도 설치됨). 루트를 강제하고 airstrike.local을 매핑하며 Socket.IO를 시작합니다.백엔드는 단일 설치 가능한 app/ 패키지입니다(원래 플랫 레이아웃에서 재구성됨 — PR #8 참조):
app/engine/ – 프레임워크에 독립적인 공격 워커(deauth, 핸드셰이크 캡처/크래킹, 이블 트윈); Flask 없이 임포트 가능.app/core/ – 공유 인프라: 네트워크/모니터 모드 유틸리티, sudo, 로깅, 그리고 validation, auth, audit 모듈.app/services/ – 블루프린트와 엔진 사이의 오케스트레이션(공격/스캔/설정).app/blueprints/ – Flask 라우트; app/__init__.py는 create_app() 팩토리.app/static/ · app/templates/ – 프런트엔드(공격별 구성은 app/static/js/modules/attacks/에 있음).run.py · pyproject.toml – 엔트리 포인트 셤 + 패키징.tests/ – pytest 스위트(팩토리/라우트 계약, 파서, 보안/인증 회귀 테스트).utils/network_utils.set_managed_mode를 사용하세요.airodump-ng, hostapd)는 공격 로그 창에 표시됩니다. 패키지 관리자로 설치한 후 AirStrike를 다시 시작하세요.AirStrike는 루트로 실행되므로 자체 보안이 중요합니다. 하드닝에는 다음이 포함됩니다: 셸 실행 없음(argv만 사용), OS에 바인딩되는 모든 값에 대한 입력 검증, 로그인 게이트 + CSRF + 동일 출처(same-origin) 강제, 기본 루프백 바인딩, XSS 이스케이프, 인증된 Socket.IO 채널, 승인 게이트 + 감사 로그. 전체 신뢰 모델, 잔여 위험(특히: TLS 없음 — SSH 터널 사용), 그리고 안전한 운영 체크리스트는 **THREAT_MODEL.md**에 있습니다. pytest로 테스트 스위트를 실행하세요.
AirStrike는 능동적이고 공격적인 공격(비인증, 핸드셰이크 캡처, 로그 AP)을 수행합니다. 소유하지 않았거나 서면 승인을 받지 않은 네트워크에 대해 실행하는 것은 대부분의 관할권에서 불법입니다(예: 미국 CFAA, 비인증에 대한 FCC §333, 영국 CMA, 독일 StGB §202c). 이 도구는 실험실/연구/포트폴리오용입니다: 자신의 장비 또는 승인된 작업 범위 내에서만 사용하세요. 앱 내 승인 게이트는 사용자의 확인을 기록할 뿐이며 권한을 부여하지는 않습니다. 사용 방법에 대한 책임은 사용자에게 있습니다.