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²⁵⁶ |