Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-4309-Analysis — 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). | Kitploit
Herramientas/GitHubGitHub/winslowe/cve-2024-4309-analysis
Análisis de VulnerabilidadesExplotaciónCriptografíaPruebas de PenetraciónSeguridad MóvilAprendizaje y EducaciónRespuesta a IncidentesExplotación de BinariosLabs y Práctica
GitHubwinslowe/cve-2024-4309-analysis

CVE-2024-4309-Analysis

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).

Ver Repositorio
125hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🛡️ CVE-2024-4309

Xiaomi HyperOS System Updater — OTA Signature Verification Bypass & RCE


CVSS RCE Python


Status Course License Docker Tests Zero Deps


⚠️ SOLO CON FINES EDUCATIVOS — Prohibido su uso en sistemas reales.




📋 Resumen del Proyecto / Project Overview

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

CampoValor
CVE IDCVE-2024-4309
ComponenteSystem Updater (HyperOS)
Gravedad🔴 Crítica (CVSS 9.1)
CWECWE-347: Improper Crypto Signature Verification
ImpactoRCE persistente, acceso root
SoluciónHyperOS 1.0.4.0+

🎯 Vector de Ataque

MétricaValor
Attack VectorAdjacent Network
ComplexityLow
PrivilegesNone
User InteractionNone
ScopeChanged
CVSS VectorAV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N



💀 Flujo del Ataque / Attack Kill Chain

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
📖 Explicación Detallada — Haga clic para ver el detalle técnico de cada paso
PasoAcciónDetalle Técnico
1Posición MITMEl tráfico de red se intercepta mediante ARP Spoofing o un punto de acceso Wi-Fi falso
2DNS HijackLas respuestas DNS de update.miui.com se redirigen al servidor del atacante
3Inyección de HashSe inyecta un hash malicioso parcial en la base de datos ota_hashes.db
4Paquete OTA MaliciosoSe crea un update.zip falso con la cabecera X-Xiaomi-Fast-Channel: true
5Bypass de RSAMiuiRecoveryVerifier detecta la cabecera Fast Channel y omite la comprobación RSA
6Bypass de HashquickHashCheck → coincidencia parcial con strstr() → BYPASS
7RCESe flashea un system.img malicioso en modo Recovery → Root Persistente



⚙️ Herramientas Desarrolladas / Developed Tools




🖥️ 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.




🐛 Causa Raíz / Root Cause

❌ Código Vulnerable (strstr) ✅ Código Parcheado (strcmp)
// NativeVerifier.cpp — BUG!
bool quickHashCheck(const char* hash) {
    for (int i = 0; i < count; i++) {
        if (strstr(whitelist[i], hash))
            return true;  // Coincidencia de subcadena ⚠️
    }
    return false;
}
// NativeVerifier.cpp — FIXED
bool quickHashCheck(const char* hash) {
    for (int i = 0; i < count; i++) {
        if (strcmp(whitelist[i], hash) == 0)
            return true;  // Coincidencia exacta ✅
    }
    return false;
}
🔴 8 caracteres son suficientes — Fuerza bruta: 2³² 🟢 Se requieren 64 caracteres — Fuerza bruta: 2²⁵⁶



🗂 Estructura del Repositorio / Repository Structure

Descargar herramienta