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
Herramientas/GitHubGitHub/decalage2/collisions
ExplotaciónAnálisis de HashCriptografíaAnálisis de BinariosAprendizaje y Educación
GitHubdecalage2/collisions

collisions

Colisiones de hash y sus explotaciones

Ver Repositorio
9131hace 4 añosAú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

TL;DR conseguir una colisión MD5 de estas dos imágenes ahora es(*) trivial e instantáneo.

Página de MD5 en Wikipedia ⟷ <a href=http://gunshowcomic.com/648>

No juegues con fuego, no confíes en MD5.

(*) Colisionar cualquier par de archivos ha sido posible durante muchos años, pero lleva varias horas cada vez, sin atajos. Esta página proporciona trucos específicos para formatos de archivo y prefijos de colisión precomputados para hacer la colisión instantánea. git clone. Ejecuta el script. Listo.

Colisiones de hash y explotaciones

Por Ange Albertini y Marc Stevens.

  • 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
      • Portable Executable
      • MP4 y otros
        • JPEG2000
      • PDF
        • JPG en PDF
      • ZIP
        • Formatos basados en ZIP
    • Estrategias poco comunes
      • MultiColls: cadena de colisiones múltiples
      • 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 todos!
      • Archivos incriminatorios
    • Fracasos
      • ELF
      • Mach-O
      • Clase Java
      • TAR
    • Resumen de explotaciones
    • Archivos de prueba
  • Referencias
  • Créditos
  • Conclusión

Introducción

El objetivo es explorar ampliamente 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 puede usarse en varios hashes (los mismos trucos JPG se usaron para MD5, malicious SHA-1 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 - a diciembre de 2018 - de los ataques conocidos:

  • obtener un archivo que tenga el hash de otro archivo o un hash dado: imposible

    • incluso sigue siendo poco práctico con MD2.
    • funciona para hashes más simples(*)
  • obtener dos archivos diferentes con el mismo MD5: instantáneo

    • ejemplos: 1 ⟷ 2
  • hacer que dos archivos arbitrarios tengan el mismo MD5: unas pocas horas (72 horas.núcleo)

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

    • ver más abajo
  • obtener dos archivos diferentes con el mismo SHA1: 6500 años.núcleo

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

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

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

# Ataques

MD5 y SHA1 trabajan con bloques de 64 bytes.

Si dos contenidos A y B tienen el mismo hash, entonces añadir el mismo contenido C a ambos mantendrá el mismo hash.``` text
hash(A) = hash(B) -> hash(A + C) = hash(B + C)

Las colisiones funcionan insertando en un límite de bloque un número de bloques de colisión calculados que depende de lo que haya antes en el archivo. Estos bloques de colisión tienen una apariencia muy aleatoria con algunas diferencias menores (que siguen un patrón específico para cada ataque) e introducirán pequeñas diferencias mientras que, finalmente, se logra que los hashes tengan el mismo valor después de estos bloques.

Estas diferencias se aprovechan para crear archivos válidos con propiedades específicas.

Los formatos de archivo también funcionan de arriba hacia abajo, y la mayoría funcionan por fragmentos a nivel de bytes.

Algunos fragmentos 'comentario' pueden insertarse para alinear los fragmentos del archivo con los límites de bloque, para alinear estructuras específicas con las diferencias de los bloques de colisión, para ocultar el resto de la aleatoriedad de los bloques de colisión de los analizadores del archivo, y para ocultar contenido por lo demás válido del analizador (de modo que vea otro contenido).

Estos fragmentos 'comentario' a menudo no son comentarios oficiales reales: solo se utilizan como contenedores de datos que el analizador ignora (por ejemplo, los fragmentos PNG con un ID que comienza en minúscula son auxiliares, no críticos).

La mayoría de las veces, una diferencia en los bloques de colisión se usa para modificar la longitud de un fragmento comentario, que normalmente se declara justo antes de los datos de este fragmento: en el espacio entre la versión más corta y la más larga de este fragmento, se declara otro fragmento comentario para saltar sobre el contenido A de un archivo. Después de este contenido A, simplemente añade otro contenido B.

Dado que los formatos de archivo suelen definir un terminador que hará que los analizadores se detengan después de él, A terminará el análisis, lo que hará que el contenido añadido B se ignore.

Así que normalmente se necesitan al menos dos comentarios - a menudo tres:

  1. alineación
  2. ocultar los bloques de colisión
  3. ocultar un contenido de archivo (para colisiones reutilizables)
Descargar herramienta