Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
dual-ec-drbg — Prueba de concepto educativa para la puerta trasera Dual_EC_DRBG (CVE-2014-8610) - demostración del ataque de recuperación de estado NIST P-256 | Kitploit
Herramientas/GitHubGitHub/eddieoz/dual-ec-drbg
ExplotaciónCriptografíaCTFPapers e InvestigaciónAprendizaje y EducaciónLabs y Práctica
GitHubeddieoz/dual-ec-drbg

dual-ec-drbg

Prueba de concepto educativa para la puerta trasera Dual_EC_DRBG (CVE-2014-8610) - demostración del ataque de recuperación de estado NIST P-256

Ver Repositorio
hace 6 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

Backdoor Dual_EC_DRBG: Prueba de concepto educativa

Para profesionales de la seguridad | Solo con fines educativos


⚠️ Descargo de responsabilidad

Este repositorio contiene una demostración educativa de la puerta trasera criptográfica Dual_EC_DRBG (CVE-2014-8610), una vulnerabilidad bien documentada revelada tras las filtraciones de Snowden.

Esto es SOLO CON FINES EDUCATIVOS:

  • Demuestra una vulnerabilidad obsoleta de más de 10 años
  • Utiliza parámetros y relaciones matemáticas públicamente conocidos
  • Diseñado para la formación y concienciación en seguridad
  • Sigue prácticas de divulgación responsable

📚 Lo que aprenderás

  1. Contexto histórico: Cómo la NSA supuestamente insertó una puerta trasera en un estándar del NIST
  2. Fundamentos matemáticos: Curvas elípticas y el problema del logaritmo discreto
  3. El mecanismo de la puerta trasera: Por qué Q = d·P crea una llave maestra
  4. Demostración de ataque en vivo: Recuperación del estado a partir de 32 bytes de salida observada
  5. Mitigaciones: Cómo evitar vulnerabilidades similares

🚀 Inicio rápido

Requisitos previos

  • Python 3.8+ (recomendamos usar pyenv)
  • pip

Opción 1: Usar el script de lanzamiento (recomendada)

root@kitploit:~
cd dual-ec-drbg

# One command to setup and run
./run.sh

Este script hará lo siguiente:

  1. Detectar/crear la configuración local de pyenv
  2. Crear un entorno virtual en venv/
  3. Instalar todas las dependencias
  4. Lanzar Jupyter con el notebook

Opción 2: Configuración manual con pyenv

root@kitploit:~
cd dual-ec-drbg

# Set local Python version with pyenv
pyenv local 3.12.12

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

# Launch Jupyter
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb

Opción 3: Python del sistema (no recomendado)

root@kitploit:~
cd dual-ec-drbg
pip install --user -r requirements.txt
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb

Dependencias

  • ecdsa>=0.18.0 - Operaciones con la curva NIST P-256
  • jupyter>=1.0.0 - Interfaz de notebook
  • ipython>=7.0.0 - Python interactivo

📖 Contenido del notebook


🎯 El ataque en resumen

root@kitploit:~
Dual_EC_DRBG State Update:    s_{i+1} = φ(s_i · P)
Dual_EC_DRBG Output:          r_i = φ(s_i · Q)     [truncated]

Backdoor Relationship:        Q = d · P

Attack (knowing d):
1. Observe r_i (30+ bytes of output)
2. Reconstruct candidate R where x(R) ≈ r_i  
3. Compute: s_{i+1} = φ(d⁻¹ · R) = φ(s_i · P)
4. Predict ALL future output!

Time Complexity: O(1) - milliseconds on a laptop
Data Required: 32 bytes of observed output

🧪 Ejecutar la demostración

Modo interactivo

  1. Abre el notebook:

    root@kitploit:~
    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. Ejecuta las celdas secuencialmente (Shift+Enter)

  3. Observa:

    • Tanto el DRBG honesto como el vulnerado producen una salida estadísticamente aleatoria
    • Solo la versión vulnerada es susceptible a la recuperación del estado
    • El ataque tiene éxito en milisegundos

Línea de comandos (opcional)

Extrae y ejecuta el código Python:

root@kitploit:~
# Extract code cells to a Python script
jupyter nbconvert --to script dual_ec_drbg_backdoor_poc.ipynb

# Run the script
python dual_ec_drbg_backdoor_poc.py

📊 Salida esperada

root@kitploit:~
[=== HONEST Dual_EC_DRBG ===]
[+] DRBG initialized
    Mode: HONEST
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (a53a7f9b2e1c4247..., 7fe342e2fe1a7f9b...)

[=== BACKDOORED Dual_EC_DRBG ===]
[+] DRBG initialized
    Mode: BACKDOORED
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (b23d7c9a3f8e5156..., 9ab456d3c7e2f1a8...)
    Secret d = 0x4f3e2d1c0b9a8f7e...

[=== ATTACK EXECUTION ===]
[+] Observed output: a1b2c3d4e5f6...
[+] Found 2 candidate points on curve
...
[OK] PERFECT MATCH - All future output predicted!

🔍 Hallazgos clave

Por qué esta puerta trasera es insidiosa

  1. Estadísticamente indetectable: La salida supera todas las pruebas de aleatoriedad
  2. Matemática, no código: No hay código malicioso que detectar
  3. Arquitectura de llave maestra: Un solo secreto (d) compromete todas las instancias
  4. Baja probabilidad de detección: La puerta trasera es indetectable sin d

Impacto histórico


🛡️ Mitigaciones

Nunca uses

  • ❌ Dual_EC_DRBG (obsoleto desde 2014)

Usa en su lugar

  • ✅ /dev/urandom o getrandom() (Linux)
  • ✅ BCryptGenRandom() (Windows)
  • ✅ CryptoKit (Apple)
  • ✅ Hash_DRBG, HMAC_DRBG, CTR_DRBG (NIST SP 800-90A Rev 1)

Auditoría de seguridad

  • Audita las dependencias en busca de uso de Dual_EC
  • Verifica las fuentes de generación de números aleatorios en sistemas críticos
  • Exige una generación de parámetros verificable

📚 Referencias

  1. NIST SP 800-90A Rev 1 - Estándar DRBG actual (Dual_EC eliminado)
  2. Shumow & Ferguson 2007 - Advertencia original sobre la puerta trasera
  3. Bernstein et al. - Dual EC: A Standardized Back Door
  4. Checkoway et al. - Juniper Analysis
  5. Reuters - NSA and RSA

🤝 Contribuciones

Este es un recurso educativo. Se aceptan mejoras:

  • Visualizaciones adicionales
  • Contexto histórico ampliado
  • Más variantes de ataque

📜 Licencia

Licencia MIT: consulta el archivo LICENSE para obtener más detalles.

Úsalo de forma responsable y ética. Este código es solo para fines educativos.


🎓 Para instructores

Este notebook es adecuado para:

  • Cursos de criptografía
  • Formación en concienciación sobre seguridad
  • Presentaciones en conferencias
  • Retos CTF

Tiempo de presentación recomendado: 45-60 minutos


Creado con fines educativos para comprender y prevenir vulnerabilidades criptográficas.

Descargar herramienta
SecciónDescripción
1. Contexto históricoCronología de 1997 a 2024, actores clave, filtraciones de Snowden
2. Fundamentos matemáticosCurvas elípticas, ECDLP, las matemáticas de la puerta trasera
3. Parámetros NIST P-256Parámetros reales de la curva FIPS 186-4
4. Especificación del algoritmoEspecificación del DRBG NIST SP 800-90
5. ImplementaciónClases DRBG honesto vs. con puerta trasera
6. Implementación del ataqueAtaque de recuperación del estado con el secreto d
7. Demostración en vivoSimulación de ataque estilo Juniper
8. MitigacionesLecciones aprendidas y mejores prácticas
EventoFechaImpacto
Estandarización NIST2006Dual_EC se vuelve oficial
RSA BSAFE como predeterminado2004-2013Pago de $10M por usar un valor predeterminado débil
Filtraciones de Snowden2013Concienciación pública
Puerta trasera de Juniper2015Atacantes explotaron la debilidad de Dual_EC
Retirada por NIST2014Desaprobación oficial