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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
collisions — Colisiones de hash y explotaciones | Kitploit
Herramientas/GitHubGitHub/corkami/collisions
ExplotaciónAnálisis de HashCriptografíaAnálisis de BinariosAprendizaje y Educación
GitHubcorkami/collisions

collisions

Colisiones de hash y explotaciones

Ver Repositorio
3.4k21038hace 1 añoRevisado por Kitploit

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

Colisiones de hash y explotaciones

Por Ange Albertini y Marc Stevens.

FAQ (TL;DR)

P: ¿Es posible hacer que un archivo obtenga un MD2/MD4/MD5/MD6/SHA1/SHA2/SHA3 arbitrario, o el mismo hash que otro archivo?
R: No.

P: ¿Se pueden crear 2 archivos diferentes con el mismo hash?
R: Con MD5, en unos segundos en un ordenador estándar. Con SHA1, es posible pero no práctico para usuarios finales (Complejidad: 2^61.2 Precio: $11k).

P: ¿Se puede hacer que 2 archivos diferentes obtengan el mismo hash añadiendo datos?
R: Con MD5, en unas horas en un ordenador estándar. Con SHA1, es posible pero no práctico para usuarios finales (Complejidad: 2^63.4 Precio: $45K)

P: ¿Seguirán siendo válidos los 2 archivos?
R: En general, sí, ya que la mayoría de los formatos de archivo toleran datos añadidos. Por otro lado, las firmas de los archivos probablemente se romperán.

P: ¿Se pueden crear 2 archivos diferentes con contenidos arbitrarios y el mismo hash?
R: Sí, puede ser instantáneo apoyándose en estructuras de archivo especiales:

  1. una cabecera de formato especial (o par de cabeceras) con trucos, que actúe como un conmutador entre 2 contenidos (algunos formatos no permiten tales trucos).
  2. colisiones precomputadas, basadas en la(s) cabecera(s) específica(s).
  3. dos contenidos de formatos específicos, ambos presentes después de la colisión (añadidos después del cálculo).

P: ¿Para qué formatos puedo obtener un par de archivos con colisión MD5 instantánea?
R: JPG, PNG, GIF, GZIP, Portable Executable, MP4, JPEG2000, PDF, DOCX/PPTX/XSLX, EPUB, 3MF, XPS. Basta con ejecutar el script específico.

P: ¿Y para SHA1?
R: Para SHA1, JPG en un PDF está calculado e implementado.

P: ¿Qué hay de los formatos ya soportados para MD5 (JPG, PNG...), pero para SHA1 en su lugar?
R: Lo más probable es que también sean compatibles con SHA1, pero sus colisiones no han sido calculadas.

P: ¿Los cálculos son más rápidos para contenidos similares (pero diferentes)?
R: No. Cualquier pequeña diferencia requiere un cálculo completo.

P: ¿Qué formatos no tienen ese atajo?
R: ELF, Mach-O, Java Class, TAR, ZIP (entre otros...)

P: ¿Siguen siendo posibles las colisiones clásicas (en unas horas) con estos formatos?
R: Sí, siempre que se tolere cualquier cantidad de datos añadidos (es decir, probablemente no ZIP o Class).

P: ¿Proporcionas ejemplos de colisiones?
R: Sí.

Tabla de contenidos

  • Introducción
  • Estado
  • Ataques
    • Prefijo idéntico
      • FastColl (MD5)
      • UniColl (MD5)
      • Shattered (SHA1)
    • Colisiones de prefijo elegido
      • HashClash (MD5)
      • Shambles (SHA1)
    • Resumen de ataques
  • Explotaciones
    • Estrategia estándar
      • JPG
        • escaneos personalizados
      • PNG
        • incompatibilidad
      • GIF
      • GZIP
      • LZ4 / Zstandard
      • Portable Executable
      • MP4 y otros
        • JPEG2000
      • PDF
        • JPG en PDF
      • ZIP
        • Formatos basados en ZIP
      • Otros
    • Estrategias poco comunes
      • MultiColls: cadena de colisiones múltiples
        • Hashquines
      • Validez
      • PolyColls: colisiones de diferentes tipos de archivo
        • PE - JPG
        • PDF - PE
        • PDF - PNG
      • PileUps (multi-colisión)
        • PE - PNG - MP4 - PDF
    • Casos de uso
      • ¡A colisionarlos a todos!
      • Archivos incriminatorios
    • Fallos
      • ELF
      • Mach-O
      • Java Class
      • TAR
    • Resumen de explotaciones
    • Archivos de prueba
  • Detección
    • Hashes seguros
  • Referencias
  • Créditos
  • Conclusión

Introducción

El objetivo es explorar en profundidad los ataques existentes - y mostrar de paso lo débil que es MD5 (colisiones instantáneas de cualquier JPG, PNG, PDF, MP4, PE...) - y también explorar en detalle los formatos de archivo comunes para determinar cómo pueden ser explotados con ataques presentes o futuros.

De hecho, el mismo truco de formato de archivo se puede usar en varios hashes (los mismos trucos JPG se usaron para MD5, SHA-1 malicioso y SHA1), siempre que las colisiones sigan los mismos patrones de bytes.

Este documento no trata sobre nuevos ataques (el más reciente fue documentado en 2012), sino sobre nuevas formas de explotación de los ataques existentes.

Estado

Estado actual de los ataques conocidos:

  • conseguir que un archivo obtenga el hash de otro archivo o un hash dado: imposible

    • ni siquiera es práctico con MD2 o MD4.
    • funciona para hashes más simples(*)
  • obtener dos archivos diferentes con el mismo MD5: instantáneo

    • ejemplos: 1 ⟷ 2
  • hacer que dos archivos arbitrarios obtengan el mismo MD5: unas horas (72 horas.core)

    • ejemplos: 1 ⟷ 2
  • hacer que dos archivos arbitrarios de formatos de archivo específicos (PNG, JPG, PE...) obtengan el mismo MD5: instantáneo

    • leer más abajo
  • obtener dos archivos diferentes con el mismo SHA1: 6500 años.core

    • obtener dos PDFs diferentes con el mismo SHA-1 para mostrar una imagen distinta: instantáneo (los prefijos ya están calculados)

(*) ejemplo con crypt - gracias Sven!```

import crypt crypt.crypt("5dUD&66", "br") 'brokenOz4KxMc' crypt.crypt("O!>',%$", "br") 'brokenOz4KxMc'

# Ataques

MD5 y SHA1 funcionan con bloques de 64 bytes.
Descargar herramienta