JAFF Ransomware via adjunto PDF con Docm

Continuamente recibimos correos de phishing provenientes de los orígenes más diversos, muchas veces incluyendo adjuntos con contenido malicioso. En este caso el adjunto resultaba un poco más interesante, ya que se trataba de un fichero PDF que incluía en su interior un documento DOCM, un documento Word con macros.

El correo electrónico que llegó a nuestros servidores incluía el asunto “Order”, y el contenido del mensaje estaba en blanco, realmente incluía contenido HTML definiendo una entidad tipo párrafo (<p>) con un espacio en blanco (&nbsp;), pero la diversión estaba en el adjunto.

Etapas de ataque

El adjunto era un fichero PDF correctamente formado que incluía en su interior un objeto OLE de tipo DOCM. Estaba diseñado para que una vez se abriera el documento PDF, se extrajera el fichero docm y ejecutara las macros que contiene en su interior. Estas macros descargaban un fichero de datos desde Internet que sería decodificado para posteriormente ejecutarse en el sistema.

Fichero adjunto

Durante los días siguientes llegaron más correos electrónicos con el mismo asunto y ficheros adjuntos similares, siempre de tipo PDF y nombres diferentes:

Parece razonable deducir del listado que los nombres siguen un patrón, seguramente del tipo:

Análisis del fichero PDF

Para hacer el análisis del fichero adjunto, podemos usar peepdf, y a primera vista lo primero que nos llama la atención de la información que nos ofrece sobre el fichero son los objetos con JS (javascript) y el fichero incluido en su contenido:

El documento tiene dos objetos con código javascript (objeto 4 y objeto 12) que son los que permiten extraer su contenido en el sistema.
Detalle del contenido del objeto 4:

Se define un vector con los comandos y parámetros que se ejecutarán al abrir el fichero.
Detalle del contenido del objeto 12:

Esta línea ejecuta “exportDataObject“[1] que extrae el objeto referenciado a un fichero externo, selecciona el “object 2”, y en este caso le asigna el nombre de “444AXGJNEOJ468.docm”. Utilizando peepdf podemos extraer el fichero.

Los datos extraídos están comprimidos, por lo que deberemos descomprimirlos para obtener el fichero en formato OLE.

 

Análisis del fichero DOCM

Una vez extraído el documento OLE el siguiente paso es examinarlo para determinar su contenido y la forma en que intenta comprometer la integridad del equipo.
Es bastante común la inclusión de macros en documentos ofimáticos para dotarlos de funcionalidades y aprovecharlas para realizar acciones dirigidas a descargar malware. En este caso comprobamos que nuestro documento contiene macros:

Las líneas que muestran una “m” al lado del identificador del objeto, indican que dicho objeto contiene código ejecutable, y si lo que aparece es una “M” además este código no se limita a la declaración de variables, si no que existen funciones y realiza acciones.
Para poder examinar el código lo extraemos del fichero:

El código que encontramos es relativamente sofisticado. Anteriormente, en muchos casos estas macros no pasaban de ser un par de funciones normalmente ofuscadas que se limitaban a descargar y ejecutar el malware. En este caso existen algunas subrutinas internas y un procesamiento posterior del fichero descargado, que le da algo más de complejidad.

En la siguiente captura de pantalla se muestran las funciones y procedimientos definidos en la macro.

Otra de las curiosidades de este malware es el uso que hace definiendo un formulario y utilizando las propiedades de objetos definidos en dicho formulario, como variables durante la ejecución del script.

También llama la atención la referencia a un objeto específico de documentos pertenecientes a LibreOffice:

Analizando el código podemos determinar los dominios desde donde se realizará la descarga del fichero que será posteriormente decodificado para ser ejecutado en el sistema. Se utilizan los tres dominios por motivos de “contingencia”, para así intentar asegurar la disponibilidad en caso de que alguno de ellos quedara offline:

                http://stlawyers[.]ca/jt7677g6
                http://essentialnulidtro[.]com/af/jt7677g6
                http://rhiannonwrites[.]com/jt7677g6

Realizando el mismo análisis en los restantes ficheros recibidos, comprobamos que el código es el mismo, pero los dominios varían, este es el listado de los diferentes dominios utilizados:

                http://10minutesto1[.]net/jt7677g6
                http://cafe-bg[.]com/jt7677g6
                http://cifroshop[.]net/jt7677g6
                http://community-gaming[.]de/jt7677g6
                http://cor-huizer[.]nl/jt7677g6
                http://essentialnulidtro[.]com/af/jt7677g6
                http://lcpinternational[.]fr/jt7677g6
                http://mciverpei[.]ca/jt7677g6
                http://mitservices[.]net/jt7677g6
                http://mymobimarketing[.]com/jt7677g6
                http://rhiannonwrites[.]com/jt7677g6
                http://sdmqgg[.]com/jt7677g6
                http://sextoygay[.]be/jt7677g6
                http://stlawyers[.]ca/jt7677g6
                http://studyonazar[.]com/jt7677g6

Una vez ejecutado el ransomware, los ficheros cifrados presentan la extensión .wlu y este es el aspecto de la imagen que se muestra solicitando el pago del rescate para recuperar los datos.

Referencias:

[1] exportDataObject : Extracts the specified data object to an external file.

Parameters

  • cName:The name of the data object to extract.
  • cDIPath(optional): A device-independent path to which to extract the data object. This path may be absolute or relative to the current document. If not specified, the user is prompted to specify a save location. Note: (Acrobat 6.0) The use of this parameter is no longer supported and should not be used. See the security notes above.
  • bAllowAuth(optional, Acrobat 6.0): If true, a dialog box is used to obtain user authorization. Authorization may be required if the data object was encrypted using the encryptForRecipients method. Authorization dialog boxes are allowed if bAllowAuth is true. The default value is false.
  • nLaunch(optional, Acrobat 6.0): nLaunch controls whether the file is launched, or opened, after it is saved. Launching may involve opening an external application if the file is not a PDF file. The values of nLaunch are:
    • If the value is 0, the file will not be launched after it is saved.(Default value)
    • If the value is 1, the file will be saved and then launched. Launching will prompt the user with a security alert warning if the file is not a PDF file. The user will be prompted for a save path.
    • If the value is 2, the file will be saved and then launched. Launching will prompt the user with a security alert warning if the file is not a PDF file. A temporary path is used, and the user will not be prompted for a save path. The temporary file that is created will be deleted by Acrobat upon application shutdown.