
BGT-Pentest-LAB 최종 프로젝트: Xiaomi HyperOS System Updater OTA Signature Verification Bypass (CVE-2024-4309) 심층 분석
⚠️ 교육 목적으로만 사용 — 실제 시스템에서 사용은 금지됩니다.
BGT-Pentest-LAB 사이버 보안 종합 프로젝트의 일환으로 준비되었습니다.
Xiaomi HyperOS System Updater 구성 요소에서 발견된 원격 코드 실행(RCE)을 가능하게 하는 CVE-2024-4309 취약점의 심층 분석, 공격 시뮬레이션, 탐지 엔진 및 대화형 웹 대시보드가 이 저장소에 포함되어 있습니다.
🔴 취약점 개요
|
🎯 공격 벡터
|
flowchart TD
subgraph MITM ["단계 1: 네트워크 접근 장악 (MITM)"]
A["🌐 1. MITM (ARP 스푸핑)"] --> B["🎯 2. DNS 하이재킹 (update.miui.com)"]
end
subgraph INJECTION ["단계 2: 데이터베이스 및 패킷 변조"]
B --> C["💾 3. 해시 주입 (ota_hashes.db)"]
C --> D["📦 4. 악성 OTA 패키지 준비"]
end
subgraph BYPASS ["단계 3: 보안 검사 우회 (Bypass)"]
D --> E["🔓 5. RSA 서명 우회 (Fast Channel)"]
E --> F["⚡ 6. 해시 검증 우회 (strstr 버그)"]
end
subgraph EXPLOIT ["단계 4: 권한 상승 및 침투"]
F --> G["💀 7. RCE 및 영구 루트 (system.img 플래싱)"]
end
%% 스타일 정의
style MITM fill:#0f172a,stroke:#38bdf8,stroke-width:1px,color:#38bdf8
style INJECTION fill:#0f172a,stroke:#818cf8,stroke-width:1px,color:#818cf8
style BYPASS fill:#0f172a,stroke:#f59e0b,stroke-width:1px,color:#f59e0b
style EXPLOIT fill:#0f172a,stroke:#ef4444,stroke-width:2px,color:#ef4444
style A fill:#1e293b,stroke:#0284c7,stroke-width:2px,color:#e2e8f0
style B fill:#1e293b,stroke:#0284c7,stroke-width:2px,color:#e2e8f0
style C fill:#1e293b,stroke:#4f46e5,stroke-width:2px,color:#e2e8f0
style D fill:#1e293b,stroke:#4f46e5,stroke-width:2px,color:#e2e8f0
style E fill:#451a03,stroke:#d97706,stroke-width:2px,color:#fef3c7
style F fill:#451a03,stroke:#d97706,stroke-width:2px,color:#fef3c7
style G fill:#4c0519,stroke:#e11d48,stroke-width:3px,color:#ffe4e6
| 단계 | 동작 | 기술적 세부사항 |
|---|---|---|
| 1 | MITM 포지션 | ARP 스푸핑 또는 가짜 Wi-Fi 핫스팟을 통해 네트워크 트래픽 가로채기 |
| 2 | DNS 하이재킹 | update.miui.com DNS 응답을 공격자 서버로 리디렉션 |
| 3 | 해시 주입 | ota_hashes.db 데이터베이스에 부분적인 악성 해시 주입 |
| 4 | 악성 OTA 패키지 | X-Xiaomi-Fast-Channel: true 헤더가 포함된 가짜 update.zip 생성 |
| 5 | RSA 우회 | MiuiRecoveryVerifier가 Fast Channel 헤더를 보고 RSA 검사 우회 |
| 6 | 해시 우회 | quickHashCheck → strstr() 부분 일치 → 우회 |
| 7 | RCE | 복구 모드에서 악성 system.img 플래싱 → 영구 루트 |
|
🖥️ C2 대시보드 app.py
프리미엄 웹 패널로 공격 시뮬레이션을 단계별로 시각화하는 대화형 대시보드. 킬 체인, 위험 점수, 실시간 로그. |
⚔️ 공격 시뮬레이터 attack.py
가짜 OTA 서버를 사용한 MITM 공격 시뮬레이션. 4개의 REST 엔드포인트, 악성 ZIP 생성, 해시 주입 및 Fast Channel 우회. |
🔍 탐지 엔진 detector.py
3단계 OTA 보안 스캐너. strstr() 탐지, Fast Channel 분석, 위험 점수 및 IoC 보고서. |
|
🔧 수정 데모 fix_demo.py
strstr() vs strcmp() 대화형비교 및 패치 데모. |
📄 보고서 생성기 report_generator.py
PDF 준비 완료 전문 HTML 취약점 분석 보고서 생성기. |
🧪 테스트 스위트 test_suite.py
27개의 자동 단위 테스트. 공격 + 탐지 엔진 통합 테스트. |
| ❌ 취약한 코드 (strstr) | ✅ 패치된 코드 (strcmp) |
|---|---|
|
|
| 🔴 8자면 충분 — 무차별 대입: 2³² | 🟢 64자 필요 — 무차별 대입: 2²⁵⁶ |
📦 CVE-2024-4309-Analysis
├── 📄 README.md # 이 파일
├── 📄 ROADMAP.md # 프로젝트 로드맵 (5단계)
├── 🐳 Dockerfile # 컨테이너 구성
├── 🐳 docker-compose.yml # 서비스 오케스트레이션 파일
├── 🔑 .env.example # 환경 변수 템플릿
├── 📄 .gitignore # Git 제외 규칙
├── 📄 requirements.txt # 의존성 목록 (의존성 제로)
│
├── 📁 docs/
│ ├── 📁 presentations/ # 🎨 발표 자료 (HTML 슬라이드, 인포그래픽)
│ ├── 📁 research/ # 🔬 연구 노트 및 심층 분석
│ └── 📁 references/ # 📚 참고 문헌 및 참조
│
└── 📁 src/
├── 🖥️ app.py # C2 웹 대시보드 (프리미엄 UI)
├── ⚔️ attack.py # OTA MITM 공격 시뮬레이터
├── 🔍 detector.py # 다단계 공격 탐지 엔진
├── 🔧 fix_demo.py # strstr() vs strcmp() 데모
├── 📄 report_generator.py # PDF 준비 완료 HTML 보고서 생성기
└── 🧪 test_suite.py # 27개의 자동 단위 테스트
git clone https://github.com/Winslowe/CVE-2024-4309-Analysis.git
cd CVE-2024-4309-Analysis
cp .env.example .env
docker-compose up -d
대시보드 → http://127.0.0.1:5000
# 터미널 1 — C2 대시보드
python src/app.py
# 터미널 2 — 공격 서버
python src/attack.py
# 터미널 3 — 탐지 엔진
python src/detector.py
python src/test_suite.py
# 또는
python -m pytest src/test_suite.py -v