Las formas utilizadas para distribuir malware hoy en día se basan en la explotación de vulnerabilidades dentro de ciertas aplicaciones. Por lo general, las aplicaciones explotadas son aquellas que los usuarios más utilizan ya que, de esta forma, logran infectar a un mayor número de equipos. Imagino que todos, o muchos de ustedes, han leído alguna vez un documento en formato PDF y utilizado el popular Acrobat Reader. Más allá de que esta aplicación no es el único lector gratuito de este tipo archivos, aún así es el más popular.

Considerando lo explicado anteriormente, se imaginarán que dicha plataforma es muy atacada en búsqueda de posibles exploits. A la fecha existen varios ejemplos, ya que este formato permite la ejecución de JavaScript, entre otros lenguajes, el cual es muy utilizado para distribuir dichos exploits gracias a su gran versatilidad y posibilidad de ofuscación.

En este post les vamos a mostrar un archivo PDF malicioso por dentro y luego procederemos a desofuscarlo, mostrándoles, en cada instancia, cómo obtenemos el código original del exploit.

A continuación pueden observar el código del archivo PDF malicioso. La parte inferior del mismo fue cortada por temas de espacio, pero, para que se lo imaginen, posee aproximadamente 170 lineas más de código ofuscado:

Código archivo PDF

En la parte superior se observa una porción de código en lenguaje JavaScript el cual está ofuscado. Luego de analizar el mismo, logramos determinar que en las lineas 8 y 9 realiza un simple calculo matemático donde iguala la variable "j" al valor "4". Si se observa el exploit ofuscado, verán como se multiplica dicha variable por un número donde el resultado es siempre un número entero. Este número entero representa un carácter en el código ASCII. Desde el Laboratorio de Análisis e Investigación creamos un pequeño script en lenguaje Python, el cual parsea y convierte dicha porción de código en el exploit original. Como resultado obtuvimos lo siguiente:

Exploit code

El shellcode es el código ejecutado luego de que el script haya corrido los exploits satisfactoriamente (y digo esto en plural ya que explota dos de ellos). Dicho código es el encargado de abrir una puerta trasera en el equipo afectado para permitir el ingreso al atacante. Cabe remarcar que es el equipo afectado el que se conecta con el usuario malicioso y no viceversa. Las vulnerabilidades explotadas en éste caso son CVE-2007-5659 y CVE-2008-2992. El heap spray, como se observa en la imagen, es una técnica utilizada en los exploits para facilitar la ejecución de código arbitrario.

Es interesante apreciar cómo un simple archivo de 27 Kb puede realizar tantas acciones maliciosas sin que nos percatemos. El exploit en cuestión es detectado por ESET NOD32 Antivirus como JS/Exploit.Pdfka.NCY Troyano.

Ante estas situaciones les recomendamos siempre disponer de la última versión disponible del software utilizado para leer sus archivos PDF al igual que contar con una solución antivirus con capacidades de detección proactíva.

Javier Aguinaga - Malware Analyst
Joaquín Rodríguez Varela - Malware Lab Engineer