Análisis de malware

Análisis del documento malicioso 4

6 de octubre de por Ninja de seguridad

En la última parte de esta serie de artículos, hemos visto la estructura del documento PDF y todas las palabras clave esenciales que pueden utilizar los analistas para realizar investigaciones y que también utilizan diversas herramientas para describir la naturaleza del documento que se analiza.

A continuación se muestra un repaso de palabras clave importantes relacionadas con el análisis de documentos PDF.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

  1. /AA: Define las Acciones Automáticas que se incrustan en el documento cuando el usuario abre el documento. Cabe señalar que los eventos también se declaran dentro de esto, como el movimiento del cursor, para desencadenar una acción en particular.
  2. /AcroForm: muestra si los formularios de Adobe se utilizan en documentos PDF o no.
  3. /ObjStm: se utiliza para definir una secuencia de objetos que puede ocultar otros objetos específicos. Veremos esto en la última parte de la serie.
  4. /JS: JavaScript incrustado dentro del documento.
  5. /GoTo*: Redirigido al destino especificado en el archivo PDF.
  6. /URI: Recurso al que se accede según lo indicado por la URL
  7. /SubmitForm y /GoToR: Indica los datos enviados a la URL.
  8. /Launch: Esto lanza un programa.

Comencemos el análisis de documentos PDF.

Con pdfid, un analista puede realizar un análisis inicial y rápido de documentos PDF. Como se indicó anteriormente, esta herramienta busca las palabras clave importantes en el documento y describe sus acciones. Esta utilidad es parte de las herramientas PDF de Didier Steven. Veamos esta utilidad en acción.

A continuación se muestra la utilidad pdfid en acción en un archivo PDF malicioso samplepdf.pdf. Ejecute la utilidad pdfid en un documento como el siguiente

Pdfid descubrió las referencias a palabras clave dentro del archivo pdf. Intentemos comprender un poco mejor estas referencias.

Este archivo PDF tiene 1 página (/Page) y tiene al menos una instancia de JavaScript(/Javascript) y Acción automática(/AA) integrada. Este documento pdf también contiene los formularios de Adobe (/AcroForm).

También podemos obtener los metadatos del documento usando el interruptor –extra con la herramienta de identificación de pdf como se muestra a continuación.

Podemos obtener los metadatos necesarios del documento, como la fecha de creación, la fecha de modificación, el valor de entropía para diferentes secciones/flujos; sin embargo, el analista debe tener en cuenta que el autor malicioso puede cambiar fácilmente estos campos y los analistas no deben confiar en ellos para formar la base de cualquier investigación.

Ahora hemos encontrado indicadores de que este archivo es malicioso; Necesitamos saber el contenido del archivo. No podemos hacerlo con pdfid, pero hay otra utilidad disponible conocida como pdf-parser que puede ayudarnos a señalar el objeto y extraer el contenido del archivo PDF.

Veamos pdf-parser en acción:

Pdfparser tiene una opción de búsqueda que puede ayudarnos a buscar los objetos. Hemos visto anteriormente que pdfid descubrió un JavaScript incrustado. Intentemos localizar ese objeto con pdfparser.

Además, nos dará el siguiente resultado.

Esto se puede descifrar como que la utilidad encontró el objeto número 31 que contiene la cadena /Javascript. Dentro de esto, podemos ver una referencia al objeto 32 (si recuerdas, hemos visto en el artículo anterior sobre esto. La palabra clave ‘R’ denota una referencia al objeto y en este caso, el objeto 31 se refiere al Objeto 32 significa que el Objeto 31 va para ejecutar el JavaScript almacenado en el Objeto 32.)

Ahora necesitamos encontrar el objeto 32, y para eso, tenemos el modificador –object para usar con pdf-parser.py. Podemos usarlo como a continuación.

Además, veremos un resultado como el siguiente.

Entonces, este objeto (Objeto 32) contiene un flujo de 1822 bytes de longitud y está comprimido y codificado usando FlateDecode.

Ahora, para descomprimir la secuencia, pdf-parser.py tiene un interruptor –filter y también un interruptor –raw para mantener la salida sin escapar de caracteres especiales.

Este JS busca la versión del visor de PDF (Adobe Acrobat en este caso)

En el código anterior, podemos ver que la variable ‘sc’ parece contener el código de shell. JS comprueba la versión del visor de PDF y, si es inferior a 6.0, intenta explotar una vulnerabilidad del búfer en Collab.CollecEmailInfo pasándole una variable diseñada (plin en este caso) como valor del parámetro msg.

Después de eso, invoca la función start() con app.setTimeout que se utiliza para ejecutar la función después de un período de tiempo específico (10 milisegundos en este caso).

Ahora que sabemos que el código shell está dentro de la variable ‘sc’ y necesitamos analizar cómo funcionará, necesitamos crear un archivo ejecutable a partir del código shell. Para eso primero, necesitamos copiar el contenido de la variable sc y eliminar toda la basura como se muestra a continuación.

Y luego necesitamos convertir Unicode a caracteres hexadecimales. Puede haber un script personalizado simple para construir para reemplazar %u con x.

Usaré el script con escape Unicode2hex que viene con Remnux para realizar la conversión.

t

Ahora que tenemos el código shell en formato hexadecimal, ahora podemos usar una utilidad como shellcode2exe.py para convertir el archivo txt en un archivo exe. Utilice la utilidad shellcode2exe como se muestra a continuación

Y obtendremos el resultado como se muestra a continuación.

Dado que el archivo ejecutable ya está disponible, ahora se puede continuar con el análisis normal mediante el depurador y el desensamblador.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

En este artículo hemos visto cómo podemos analizar la estructura de un archivo PDF identificando palabras clave esenciales, enumerando objetos, identificando vulnerabilidades, extrayendo shellcode y convirtiéndolo en un archivo ejecutable para su posterior análisis. En la siguiente y última parte de esta serie de artículos, veremos otras herramientas para realizar el análisis.