Diferentes programas, un mismo Hash MD5
By: Date: mayo 29, 2007 Categories: Hackers, Tools y Retos,Programación

Es interesante como las colisiones en algoritmos seguros cambian la visión de seguridad que se pueda tener, ya había visto hash idénticos claro para diferentes archivos incluso para intentar romper contraseñas vía colisión, lo que en teoría resulta mas “fácil? que 2 programas binarios con código arbitrario con un mismo hash y sin embargo estos programas compilados se pueden hacer, sin mucho esfuerzo, esperaba un super cluster para tal proeza, no fue necesario.

Se puede obtener más información de la siguiente URL

http://www.mscs.dal.ca/~selinger/md5collision/

2 programas diferentes un mismo hash

Descarga de archivo con programas y codigo fuente

En la imagen programa1 y programa2 son programas que fueron separados de las extrañanas de programa0, programa cero es el resultado de compilar el siguiente codigo


/* Copyright (C) 2006 Peter Selinger. This file is distributed under
the terms of the GNU General Public License. See the file COPYING
for details. */

#include

#define CRIB "b166892819484778de58f421f1dce377" \
"e5fa2b5cbb9c194eb9568939b0b8de62" \
"aa7dc6987a0483f6e8e7b6c2229a147f" \
"b5c4cf5c182f974654d2d034d912ef27" \
"5724a172127f667e72dbfa7bfab11b26" \
"ab922e1073418d940f6c5458ad6baf4"

int main_good(int ac, char *av[])
{
printf ("Programa 1,Last Dragon, Prueba de MD5\n");
return 0;
}

int main_evil(int ac, char *av[])
{
printf ("Programa 2, Last Dragon, prueba de MD5\n");
return 0;
}

static char *str1 = CRIB "0";
static char *str2 = CRIB "1";

int main(int ac, char *av[]) {
if (memcmp(str1, str2, 191) == 0) {
return main_good(ac, av);
} else {
return main_evil(ac, av);
}
}

5 thoughts on “Diferentes programas, un mismo Hash MD5

  1. Mozilla Firefox 2.0.0.4 Windows XP

    En algunos casos la MD5 en los programas se usa para crear un StrongName en el caso de .Net puedes decidir si usas SHA1 o puedes usar MD5 el cual no se recomienda y no es tan seguro, pero quizas por cuestiones de procesamiento (pocket PC, clientes web) necesitas usarlo.

    Se ha probado que se pueden tronar los Strong names y crear clones para que un programa piense que esta “certificado” o que es quien dice ser y de esa manera meter codigo malicioso al sistema, quizas una dll modificada de la capa de datos o algo por el estilo.

    Entonces si tienes la capacidad de hacer que un programa tenga la misma hash MD5 que otro, entonces facilmente podrias meter codigo a la aplicacion que de alguna manera te beneficie, pero quizas es mucho alucine y podria ser que a ultimas salgas mejor viendo como tronar la DB para acceder que hacer todo el merequetengue ese.

    Por otro lado, el SHA1 tambien se ha comprobado que se pueden “crear” colisiones y sin mucha inversion de poder de procesamiento, segun mencionan unas 56 horas, igual voy a buscar informacion sobre eso y ahi se las paso.

    Chido el experimento, saludos

  2. Mozilla Firefox 2.0.0.4 Windows XP

    Pero para meter codigo tienes mil maneras mas simples y la comprobacion de firmas solo se hace a modo de log en la mayoria de los sistemas, es muyy raro que te encuentres con un sistema que bloquee una aplicacion por firma incorrecta. Además no creo que haya absolutamente ninguna aplicacion que pudas sustituir (por la falsa en este caso), que tenga un sistema de proteccion md5 sin ser root. Otra cosa si hablamos de Windows..
    BTW, podria servir para meter una puerta… nada mas discreto^^

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *