El talón de Aquiles de PGPcoder, el troyano chantajista

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).