Versión Completa : Mala Programacion Del Virus Pgpcoder
eMc-CISCO
junio 2, 2005, 06:09
El talón de Aquiles de PGPcoder, el troyano chantajista
Por Bernardo Quintero (Hispasec) [02-06-2005]
En los últimos días PGPcoder ha hecho correr ríos de tinta en los medios, al presentarse como un troyano que cifra los archivos de los sistemas y solicita dinero a los usuarios afectados si quieren volver a restaurarlos.
La realidad es que, debido a un mal diseño de su creador, el troyano utiliza un algoritmo de cifrado muy simple, basado en valores fijos, que permite invertirlo y recuperar automáticamente los archivos.
Desde el primer día que apareció PGPcoder, también llamado Gpcode, me recordó precisamente al que se considera uno de los primeros troyanos de la historia de los PCs: AIDS.
En el año 1989 se enviaron miles de disquetes por correo postal que contenían un programa de información sobre SIDA. El programa llevaba un contador de las veces que se iniciaba el sistema y, tras contabilizar un número determinado, terminaba por cifrar la información del disco duro, solicitando a los afectados pagar una licencia si querían descifrarlo y recuperar sus archivos.
El responsable fue detenido y los afectados no tuvieron que pagar nada, ya que el algoritmo de cifrado era débil y se distribuyeron herramientas gratuitas para descifrarlo.
El caso de PGPcoder es muy similar, aunque en esta ocasión el autor se ha podido ahorrar los sellos del correo postal gracias a Internet. Cuando se ejecuta en un sistema, cifra todos los archivos que localiza con las extensiones .xls, .doc, .txt, .rtf, .zip, .rar, .dbf, .htm, .html, .jpg, .db, .db1, .db2, .asc y .pgp. Dejando unos archivos de texto, "ATTENTION!!!.txt", con el siguiente mensaje:
Some files are coded.
To buy decoder mail: n781567@yahoo.com
with subject: PGPcoder 000000000032
En definitiva, que si el usuario infectado quiere volver a acceder a sus documentos, hojas de cálculo, fotografías, etc., debe "comprar" el descodificador que supuestamente el autor le enviaría por e-mail.
Las buenas noticias son que el autor del troyano ha programado un algoritmo de cifrado bastante simple sin clave externa, lo que permite invertir el algoritmo para recuperar los archivos sin tener que pasar por el chantaje. Las malas noticias son que es totalmente factible, y casi me atrevería a decir que probable, que a corto plazo cualquiera diseñe un troyano similar basándose en claves aleatorias y/o criptografía de llave pública, y entonces no habrá buenas noticias.
Lo cierto es que en un principio, sin haber analizado el troyano, creía que el diseño era robusto, en especial por el nombre que le había dado el autor y que han utilizado también algunos motores antivirus, PGPcoder, en lo que me parece una clara alusión al archiconocido programa de cifrado PGP.
Sin embargo ayer, por casualidad (examinando algunos logs de VirusTotal), me encontré con un archivo cifrado por PGPcoder, y la simple visualización de su contenido, aunque cifrado, me dejó claro que el algoritmo era débil. A esta misma conclusión podría llegarse a través del análisis del código del troyano.
Lo siguiente que se me vino a la cabeza es que, aprovechando la debilidad del cifrado, e igual que ocurriera en el caso del troyano AIDS, se podrían facilitar herramientas gratuitas para que los afectados pudieran recuperar sus archivos. Es mas, los propios antivirus podrían/deberían detectar los archivos cifrados, todos comienzan con la cabecera "PGPcoder 000000000032", y realizar automáticamente el descifrado.
Sin embargo, realizado un estudio sobre 20 motores antivirus, sólo 3 de ellos reconocen y son capaces de restaurar de forma automática los archivos cifrados por el troyano PGPcoder. Los antivirus que hay que felicitar en esta ocasión son Dr.Web, Kaspersky, y Panda, que reconocen con la siguiente firma los archivos cifrados:
DrWeb :: [Trojan.PGPCrypt]
Kaspersky :: [Virus.Win32.Gpcode.c]
Panda :: [Trj/PGPCoder.Crypt]
Este tipo de iniciativas de las casas antivirus va muy en la línea de la noticia "Firmas antivirus más allá del malware tradicional" http://www.hispasec.com/unaaldia/2404
He evitado dar los detalles concretos del algoritmo en favor de aquellos lectores aficionados al criptoanálisis que quieran ahondar en los detalles del caso a modo de reto. He publicado un ZIP donde pueden encontrar dos archivos de textos, el primero un original en texto claro, y el segundo el mismo una vez cifrado por el troyano PGPcoder. El ZIP se encuentra protegido por la contraseña "hispasec" para evitar que el archivo cifrado por PGPcoder pueda dar positivo con los antivirus perimetrales mientras se descarga.
ZIP (clave: hispasec): http://www.hispasec.com/directorio/laboratorio/pruebas/cifrado_pgpcoder.zip
Otra de las opciones para lograr encontrar un algoritmo de descifrado, mucho más directa, consiste en estudiar el código ensamblador del troyano. Si bien, por razones obvias, no puedo facilitar una copia del mismo, ruego abstenerse de solicitudes por privado.
Como premio simbólico, se enviará una camiseta de Hispasec a los tres primeros lectores que nos envíen un script o programa (incluyendo fuentes) que deberá descifrar otro archivo cifrado por el troyano PGPcoder (mismo algoritmo de cifrado).
pata_de_jaguar
junio 2, 2005, 06:41
y era llamado PGP, naaa que virus mal hecho, por lo menos le sirve de experiencia para otras ocasiones....
xsaza
junio 3, 2005, 01:26
Si es un algoritmo muy simple, entonces yo no se nada, porque la encripcion varia con cada letra, es decir las letras originales iguales no se parecen en nada en el archivo encriptado. Intente hacerme a la camiseta, pero se fueron 3 horas sin resultados.
cesartunaroza
junio 3, 2005, 09:53
Hola a todos quisiera saber si hab escuchado del virus que convierte los documentos de word a .exe, y si alguien tiene una solucion para reparar estos archivos...
alguien me dijo que si se podian recuperar pero no he encontrado nada, les agradeceria su ayuda
pata_de_jaguar
junio 3, 2005, 11:14
sp.vb y ya esta en muchos foros, solo busca...
[SWF] Vindikator
junio 3, 2005, 12:46
Hola a todos quisiera saber si hab escuchado del virus que convierte los documentos de word a .exe, y si alguien tiene una solucion para reparar estos archivos...
alguien me dijo que si se podian recuperar pero no he encontrado nada, les agradeceria su ayuda
¿Y no te funciona simplemente cambiarle tu mismo la extension otra ves?
eMc-CISCO
junio 14, 2005, 09:59
Descifrado del troyano PGPcoder
Por Bernardo Quintero (Hispasec) [09-06-2005]
Desvelamos los detalles del algoritmo utilizado por PGPcoder, un troyano que cifra los archivos de los sistemas que logra infectar y solicita dinero a los usuarios afectados si quieren volver a restaurarlos.
Como ya comentamos en una entrega anterior en Hispasec, aunque el nombre del troyano podía llevar a confusión, el algoritmo de cifrado de PGPcoder no era robusto, y permitía descifrar los archivos de forma automática sin sucumbir al chantaje de su autor.
La semana pasada propusimos un reto consistente en encontrar una solución genérica que permitiera descifrar los archivos modificados por PGPcoder partiendo del criptoanálisis de una muestra, para lo cual facilitamos un archivo de texto cifrado por el troyano y otro donde se podía encontrar la versión original en texto claro.
La solución debería poder descifrar cualquier archivo modificado por el troyano, de hecho cada propuesta de nuestros lectores fue probada con una muestra real, en concreto con una hoja de cálculo que había sido afectada por PGPcoder.
Apenas unas horas después de publicar la noticia recepcionamos las primeras soluciones, entre los que destacamos a los cinco primeros según orden de llegada:
1. Antonio Izquierdo Manzanares
Grupo de Seguridad T.I y C. Dep. Informática
Univ. Carlos III de Madrid
2. Francisco Cuevas Pérez
Gestión de RR.HH.
3. David Guerrero López
Dep. de Sistemas Informáticos y Computación
Universidad Politécnica de Valencia
4. Jaume Martínez Martínez
R&D Engineer
5. Angel Goitia Fuertes
Consultor Senior en Altran SDB
En todas estas primeras soluciones de primera hora se pudo observar claramente que los algoritmos utilizados, basados en bloques de valores fijos, habían sido construidos a partir del análisis de la muestra del archivo cifrado facilitado, tal y como se proponía en el reto, y no fruto de aplicar ingeniería inversa al código del troyano.
El hecho de que, además de la efectividad, se premiara la rapidez en la que se hiciera llegar la solución, también fue en contra de que los primeros participantes no dedicaran muchos esfuerzos en encontrar una relación matemática entre los diferentes valores utilizados.
En el propio código de la primera solución, comentado con detalle por Antonio Izquierdo, podemos encontrar una primera descripción del algoritmo de cifrado: "PGPcoder cifra los ficheros haciendo una operación de suma a cada byte. Cada vez que cifra un byte cambia la clave siguiendo una secuencia predeterminada para realizar dicho incremento. Esa secuencia de incrementos consta de 16 elementos, tras los cuales vuelve a repetirse. Cada 4 secuencias (64 bytes) se repiten las claves de cifrado."
PGPdecoder-Antonio_Izquierdo.zip (clave: hispasec)
http://www.hispasec.com/directorio/laboratorio/pruebas/PGPdecoder-Antonio_Izquierdo.zip
Una mirada al código del gusano simplifica mucho la tarea, ya que se puede observar que el cifrado de PGPcoder se limita a realizar una operación de suma a cada byte del archivo original, comenzando el bucle con la clave 0x3A y modificando su valor para cada uno de los bytes restantes, multiplicando en cada ocasión la clave anterior por 0x25 y sumándole 0x5C.
Desde PandaLabs, responsables de que Panda fuera uno de los pocos motores antivirus que incluyera entre sus firmas la recuperación de archivos cifrados por PGPcoder, también nos hicieron llegar el siguiente ejemplo:
"Suponiendo que tenemos en 'buffer' el contenido del fichero a desencriptar y en 'buffer_size' el tamaño del mismo, el algoritmo en cuestión sería el siguiente:
key = 0x3A;
for (int i = 0; i < buffer_size; i++)
{
buffer[i] = buffer[i] - key;
key = key * 0x25 + 0x5C;
}
Como puede observarse se trata de un algoritmo clásico. A cada byte de información se le substrae o se le suma -para desencriptar o encriptar respectivamente- un valor determinado que comienza con una constante inicial y es recalculado en cada iteración usando su valor anterior."
Recibimos alguna solución utilizando este algoritmo 'optimizado', como es el caso de Daniel Pérez Álvarez, estudiante de Ingeniería Informática, que reconoció haber partido del acceso al código de PGPcoder en lugar de proceder al criptoanálisis de las muestras proporcionadas.
pgpdecoder Daniel Pérez:
http://www.hispasec.com/directorio/laboratorio/pruebas/pgpdecoder.zip
Afortunadamente en esta ocasión ha sido posible proponer este reto gracias a que el autor del troyano no ha utilizado criptografía seria y una estrategia más robusta, ya que de lo contrario podría ser materialmente imposible lograr una solución genérica y automática que fuera efectiva.
Por último agradecer a los participantes su interés, que recibirán en breve una camiseta de Hispasec como premio simbólico por su dedicación, y emplazaros a todos hasta el próximo reto.
vBulletin®, Copyright ©2000-2008, Jelsoft Enterprises Ltd.