Proyecto Final de BGT-Pentest-LAB: Análisis en profundidad del bypass de verificación de firma OTA del actualizador del sistema Xiaomi HyperOS (CVE-2024-4309).
⚠️ SOLO CON FINES EDUCATIVOS — Prohibido su uso en sistemas reales.
BGT-Pentest-LAB ha sido elaborado en el marco del proyecto final de ciberseguridad.
Este repositorio contiene el análisis en profundidad, la simulación del ataque, el motor de detección y el dashboard web interactivo de la vulnerabilidad CVE-2024-4309, presente en el componente System Updater de Xiaomi HyperOS, que permite la ejecución remota de código (RCE).
🔴 Resumen de la Vulnerabilidad
|
🎯 Vector de Ataque
|
flowchart TD
subgraph MITM ["Fase 1: Intercepción del Tráfico de Red (MITM)"]
A["🌐 1. MITM (ARP Spoofing)"] --> B["🎯 2. DNS Hijack (update.miui.com)"]
end
subgraph INJECTION ["Fase 2: Manipulación de la Base de Datos y Paquetes"]
B --> C["💾 3. Inyección de Hash (ota_hashes.db)"]
C --> D["📦 4. Preparación del Paquete OTA Malicioso"]
end
subgraph BYPASS ["Fase 3: Evasión de los Controles de Seguridad (Bypass)"]
D --> E["🔓 5. Bypass de la Firma RSA (Fast Channel)"]
E --> F["⚡ 6. Evasión de la Verificación de Hash (Bug de strstr)"]
end
subgraph EXPLOIT ["Fase 4: Escalada de Privilegios y Exfiltración"]
F --> G["💀 7. RCE y Root Persistente (Flash de system.img)"]
end
%% Definiciones de Estilo
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| Paso | Acción | Detalle Técnico |
|---|---|---|
| 1 | Posición MITM | El tráfico de red se intercepta mediante ARP Spoofing o un punto de acceso Wi-Fi falso |
| 2 | DNS Hijack | Las respuestas DNS de update.miui.com se redirigen al servidor del atacante |
| 3 | Inyección de Hash | Se inyecta un hash malicioso parcial en la base de datos ota_hashes.db |
| 4 | Paquete OTA Malicioso | Se crea un update.zip falso con la cabecera X-Xiaomi-Fast-Channel: true |
| 5 | Bypass de RSA | MiuiRecoveryVerifier detecta la cabecera Fast Channel y omite la comprobación RSA |
| 6 | Bypass de Hash | quickHashCheck → coincidencia parcial con strstr() → BYPASS |
| 7 | RCE | Se flashea un system.img malicioso en modo Recovery → Root Persistente |
|
🖥️ C2 Dashboard app.py
Dashboard interactivo que visualiza paso a paso la simulación del ataque con panel web premium. Kill chain, puntuación de riesgo, registros en tiempo real. |
⚔️ Attack Simulator attack.py
Simulación del ataque MITM con servidor OTA falso. 4 endpoints REST, generación de ZIP malicioso, inyección de hash y bypass de Fast Channel. |
🔍 Detection Engine detector.py
Escáner de seguridad OTA en 3 fases. Detección de strstr(), análisis de Fast Channel, puntuación de riesgo e informe de IoC. |
|
🔧 Fix Demo fix_demo.py
Comparación interactiva de strstr() vs strcmp()y demostración del parche. |
📄 Report Generator report_generator.py
Generador de informes HTML profesionales de análisis de vulnerabilidades listos para PDF. |
🧪 Test Suite test_suite.py
27 pruebas unitarias automatizadas. Pruebas de integración de Attack + Detector. |
| ❌ Código Vulnerable (strstr) | ✅ Código Parcheado (strcmp) |
|---|---|
|
|
| 🔴 8 caracteres son suficientes — Fuerza bruta: 2³² | 🟢 Se requieren 64 caracteres — Fuerza bruta: 2²⁵⁶ |
📦 CVE-2024-4309-Analysis
├── 📄 README.md # Este archivo
├── 📄 ROADMAP.md # Hoja de ruta del proyecto (5 fases)
├── 🐳 Dockerfile # Configuración del contenedor
├── 🐳 docker-compose.yml # Archivo de orquestación de servicios
├── 🔑 .env.example # Plantilla de variables de entorno
├── 📄 .gitignore # Reglas de exclusión de Git
├── 📄 requirements.txt # Lista de dependencias (cero dependencias)
│
├── 📁 docs/
│ ├── 📁 presentations/ # 🎨 Archivos de presentación (diapositivas HTML, infografía)
│ ├── 📁 research/ # 🔬 Notas de investigación y análisis en profundidad
│ └── 📁 references/ # 📚 Bibliografía y referencias
│
└── 📁 src/
├── 🖥️ app.py # C2 Web Dashboard (UI Premium)
├── ⚔️ attack.py # Simulador de ataques MITM OTA
├── 🔍 detector.py # Motor de detección de ataques en varias fases
├── 🔧 fix_demo.py # Demo de strstr() vs strcmp()
├── 📄 report_generator.py # Generador de informes HTML listos para PDF
└── 🧪 test_suite.py # 27 pruebas unitarias automatizadas
git clone https://github.com/Winslowe/CVE-2024-4309-Analysis.git
cd CVE-2024-4309-Analysis
cp .env.example .env
docker-compose up -d
Dashboard → http://127.0.0.1:5000
# Terminal 1 — C2 Dashboard
python src/app.py
# Terminal 2 — Servidor de Ataque
python src/attack.py
# Terminal 3 — Motor de Detección
python src/detector.py
python src/test_suite.py
# o
python -m pytest src/test_suite.py -v
| Entregable | Archivo | Estado |
|---|---|---|
| Investigación de Vulnerabilidades y Registros | docs/research/ | ✅ |
| Scripts de PoC | src/ (6 archivos) | ✅ |
| Análisis Visual (Infografía) | docs/presentations/ | ✅ |
| C2 Web Dashboard | src/app.py | ✅ |
| Suite de Pruebas Automatizadas | src/test_suite.py (27 pruebas) | ✅ |
| Informe Listo para PDF | report_generator.py | ✅ |
| Soporte Docker | Dockerfile + docker-compose.yml | ✅ |
| Documento | Descripción |
|---|---|
docs/research/ | 🔬 Notas de análisis en profundidad e investigación |
docs/presentations/ | 🎨 Archivos de presentación HTML e infografías |
docs/references/sources.md | 📚 Lista completa de bibliografía |
ROADMAP.md | 🗺️ Hoja de ruta del proyecto en 5 fases |
| Fuente | Enlace |
|---|---|
| Xiaomi Security Bulletin | trust.mi.com/misrc/bulletins/advisory |
| QDebugger Research | ota-security.q-debugger.com |
| CWE-347 | cwe.mitre.org/data/definitions/347 |
| Android RecoverySystem API | developer.android.com |
| Xiaomi OTA Research | github.com/nicene-0 |
👨🏫 Asesor / Instructor
|
👤 Estudiante / Student
📚 Curso / Course
|