Cómo cambiar el hash de un archivo

Iniciado por Car0nte, 27 Enero 2014, 21:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Car0nte

Hola a todos.

Antes de nada, como éste es mi 1er mensaje, me gustaría saludar a todos y felicitaros por el gran trabajo que hacéis.

Bueno... pues eso: quisiera saber cómo poder cambiar el hash de un programa desde el mismo.

Me explico:

Hace unos meses, casi por casualidad y de maneras muy sencilla, descubrí cómo crackear un programa. Digamos que más que un crack era un pseudo-crack.

Funcionaba perfectamente hasta que algunos antivirus empezaron a "detectar" un troyano (que por supuesto NO EXISTE).al que bautizaron como "TR/Kryptik.XM" (suena sofisticadísimo, eh.. sobre todo para un programa que lo único que hace es un "ciérrame")

Bueno, el "crack" constaba de dos archivos EXACTAMENTE IGUALES. De hecho eran el mismo (la única diferencia es que a uno le había asignado 1 icono y al otro otro icono)

Viendo que sólo detectaba el troyano en uno de los archivos aún siendo exactamente iguales.. pensé que la detección se hace a través del hash.

He intentado añadir a los recursos del programa una cadena que varía en valor y longitud, pero al comprobar el md5 SIEMPRE, pese a almacenar distintas cadenas, el hash no varía.

¿Alguien sabe algún método para poder variarlo? ¿o cómo poder burlar a los antivirus? (PALABRA QUE NO TIENE ABSOLUTAMENTE NADA MALO)

Saludos y gracias.

Nota: Esta última versión la estoy haciendo en .NET


Eleкtro

#1
Cita de: Car0nte en 27 Enero 2014, 21:57 PM

Nota: Esta última versión la estoy haciendo en .NET


por poner un ejemplo podrías probar a ofuscar tu ensamblado y/o empaquetarlo.

EDITO: Aqui tienes algunas herramientas ~> VISUAL STUDIO 2013 ELEKTRO ULTIMATE PACK

PD: Las preguntas relacionadas con .NET van en el subforo de .NET.

saludos!








Car0nte

Cita de: Eleкtro en 27 Enero 2014, 22:12 PM
por poner un ejemplo podrías probar a ofuscar tu ensamblado y/o empaquetarlo.

EDITO: Aqui tienes algunas herramientas ~> VISUAL STUDIO 2013 ELEKTRO ULTIMATE PACK

PD: Las preguntas relacionadas con .NET van en el subforo de .NET.

saludos!

Vale, gracias. Mañana me meteré con ello a ver que sale.

En cuanto a lo del subforo de NET.. TIENES TODA LA RAZÓN. (era la 1ª vez que posteo, pero no la que leo)


GRACIAS

engel lex

tenias 2 archivos iguales con icono cambiado y tenia el mismo hash? el programa tenía una función para eso?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

x64core

Yo no creo que ese tipo de detección sea basada en hash, de todas maneras para que un programa calcule un hash diferente de un programa cualquiera solo es necesario cambiarle un byte.

Car0nte

Cita de: engelx en 28 Enero 2014, 03:32 AM
tenias 2 archivos iguales con icono cambiado y tenia el mismo hash? el programa tenía una función para eso?

Creo que no me expliqué bien. A ver.. El crack constaba varios archivos... dos de ellos exactamente iguales. (el mismo código.. la misma compilación, etc) en lo único que se diferenciaban era en el icono (POR SUPUESTO CON ESE CAMBIO EL HASH CAMBIÓ).

El problema vino cuando me dio por postear el crack... a los 2 ó 3 meses Avira y ESET detectaban un troyano en SOLO UNO DE ESOS ARCHIUVOS.

Fui yo el que pensé, que dado que los archivos eran exactamente iguales (a excepción del icono) la detección la deben hacer a través del Hash.

De otra manera, detectaría virus en los dos archivos. (aunque todo esto es una teoría media)

Cita de: x64Core en 28 Enero 2014, 19:12 PM
Yo no creo que ese tipo de detección sea basada en hash, de todas maneras para que un programa calcule un hash diferente de un programa cualquiera solo es necesario cambiarle un byte.


Eso mismo pensaba yo, hasta que hice la prueba. Compilé un pequeño programa que lo único que hace es asignar y guardar una string (ya que es un tipo de variable que cambia de tamaño) de distinto valor y longitud. Es decir que la variable puede ser "Xj34%cfiddj" al ejecutar y guardar el programa y la 2ª vez esa misma variable puede ser "P9056FGts#%%Ffjsjslsnhdsjjs"  multiplicado por 100 (Es sólo un ejemplo) . Bueno pues, al menos en NET, guardando esa variable como recurso comprobé el MD5 en varias ocasiones llevándome la sorpresa de que era exactamente el mismo.

Saludos

Eleкtro

Otra alternativa que se me acaba de ocurrir sin requerir el uso de programas de terceros:



Si le añadiste información de propiedades a tu ensamblado ...quítaselas, en cambio si no le añadiste ninguna ...añádele. Esto producirá un cambio en el tamaño del exe compilado, por lo tanto el hash calculado será distinto.

Saludos








x64core

#7
Cita de: Car0nte en 28 Enero 2014, 22:35 PM
Creo que no me expliqué bien. A ver.. El crack constaba varios archivos... dos de ellos exactamente iguales. (el mismo código.. la misma compilación, etc) en lo único que se diferenciaban era en el icono (POR SUPUESTO CON ESE CAMBIO EL HASH CAMBIÓ).

El problema vino cuando me dio por postear el crack... a los 2 ó 3 meses Avira y ESET detectaban un troyano en SOLO UNO DE ESOS ARCHIUVOS.

Fui yo el que pensé, que dado que los archivos eran exactamente iguales (a excepción del icono) la detección la deben hacer a través del Hash.

De otra manera, detectaría virus en los dos archivos. (aunque todo esto es una teoría media)


Eso mismo pensaba yo, hasta que hice la prueba. Compilé un pequeño programa que lo único que hace es asignar y guardar una string (ya que es un tipo de variable que cambia de tamaño) de distinto valor y longitud. Es decir que la variable puede ser "Xj34%cfiddj" al ejecutar y guardar el programa y la 2ª vez esa misma variable puede ser "P9056FGts#%%Ffjsjslsnhdsjjs"  multiplicado por 100 (Es sólo un ejemplo) . Bueno pues, al menos en NET, guardando esa variable como recurso comprobé el MD5 en varias ocasiones llevándome la sorpresa de que era exactamente el mismo.

Saludos
Eso es totalmente imposible que mantengan el mismo hash a menos que haya una colisión, lo que sucede aquí es otra cosa; en los programas NET
parte de código y datos son empaquetados y luego cargador inicializa todos los datos del programa así como el entorno.

Respecto a la detección, no es de extrañar muchos de los motores antivirus se basan en la estructura de la imagen PE, eso incluye el icono.
Algunos como Avira y ESET especialmente con simplemente establecer la sección de código a escribible , valores de las cabeceras del PE,
Opcodes o bien una combinaciones de ellos junto escaneo de patrones y emulación pueden resultar la detección de virus. Pero si realmente
crees que es detectado por hash lo que puedes hacer es cambiarle un sólo byte en el archivo y así cambiara el hash y volverlo a escanearlo.

Y resolviendo a tu duda, ya que como no sabemos que tipo de aplicación es. No es de extrañar que los cracks sean detectados como virus,
no por ser cracks ( O Talvez las compañias AV's son peores de lo que pensé y se venden :) )  sino porque las aplicaciones legitimas podrian
también tener patrones de virus eso es un problema para ellos, así que agregan excluciones, eso depende de la integridad del archivo,
certificado legitivimo o bien del hash como sucede aquí.


Car0nte

#8
Cita de: Eleкtro en 28 Enero 2014, 23:19 PM
Otra alternativa que se me acaba de ocurrir sin requerir el uso de programas de terceros:


Si le añadiste información de propiedades a tu ensamblado ...quítaselas, en cambio si no le añadiste ninguna ...añádele. Esto producirá un cambio en el tamaño del exe compilado, por lo tanto el hash calculado será distinto.

Saludos

Es una idea!! probaré a ver
Cita de: x64Core en 28 Enero 2014, 23:36 PM
Eso es totalmente imposible que mantengan el mismo hash a menos que haya una colisión, lo que sucede aquí es otra cosa; en los programas NET
parte de código y datos son empaquetados y luego cargador inicializa todos los datos del programa así como el entorno.

Respecto a la detección, no es de extrañar muchos de los motores antivirus se basan en la estructura de la imagen PE, eso incluye el icono.
Algunos como Avira y ESET especialmente con simplemente establecer la sección de código a escribible , valores de las cabeceras del PE,
Opcodes o bien una combinaciones de ellos junto escaneo de patrones y emulación pueden resultar la detección de virus. Pero si realmente
crees que es detectado por hash lo que puedes hacer es cambiarle un sólo byte en el archivo y así cambiara el hash y volverlo a escanearlo.

Y resolviendo a tu duda, ya que como no sabemos que tipo de aplicación es. No es de extrañar que los cracks sean detectados como virus,
no por ser cracks sino porque las aplicaciones legitimas podrian también tener patrones de virus eso es un problema para ellos, así que agregan
excluciones, eso depende de la integridad del archivo, certificado legitivimo o bien del hash como sucede aquí.



Lo del hash es sólo una teoría mía. En cuanto al tipo de archivo "no es nada" es un archivo que sustituye al que se encarga de la actualización (en realidad las actualizaciones consisten en descargar seriales marcados aunque digan que son "pequeñas correcciones ortográficas") y puentea.

Básicamente cuando el programa principal intenta actualizar llama al archivo de actualización se topa con el que yo he sustituido. Lo único que hace es cerrarse. Sencillo pero efectivo (por eso decía que es un pseudo-crack)

Por cierto... vaya lección te has marcado!!  ;-) ;-)

EDITO:

Que conste que en ningún momento estoy haciendo apología del cracking. Hay que respetar el trabajo de los desarrolladores. De hecho, en el instalador advertía que únicamente lo debían utilizar quienes habiendo comprado el software quisieran deshacerse de la "molestas" actualizaciones

Car0nte

#9
Cita de: Eleкtro en 27 Enero 2014, 22:12 PM
por poner un ejemplo podrías probar a ofuscar tu ensamblado y/o empaquetarlo.

EDITO: Aqui tienes algunas herramientas ~> VISUAL STUDIO 2013 ELEKTRO ULTIMATE PACK

PD: Las preguntas relacionadas con .NET van en el subforo de .NET.

saludos!
Magnífico post y gran trabajo  ;-) ;-) ;-)

Empecé a usar un ofuscador (nunca los había utilizado), concretamente  Confuser, además de completo es muy sencillo de usar. Sólo le veo un pequeño problema: al usar el empaquetador el antivirus (Avira) detecta un Troyano.. concretamente "TR/Trooper.MSIL.Gen"

Es increíble que en el celo que las grandes compañías de software ponen para proteger presionen para INVENTAR FALSAS DETECCIONES. Piden respeto para los desarrolladores, pero únicamente sus productos

Saludos

RAZÓN EDITADO: La lié