Está en la página 1de 20

Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

INCIDENT RESPONSE < HTTPS://DVIRUS.TRAINING/CATEGORY/INCIDENT-


RESPONSE/>

Respuesta a Incidentes – Correos Maliciosos

By dvirus < https://dvirus.training/author/dvirus/>

11 diciembre, 2019 < https://dvirus.training/2019/12/11/analisis-de-correos-


maliciosos/>

No hay comentarios < https://dvirus.training/2019/12/11/analisis-de-correos-


maliciosos/#respond>

1 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Este artículo tiene como objetivo orientar a analistas de seguridad y


administradores de correo en la ejecución de algunos procedimientos
básicos ante incidentes de seguridad relacionados con correos
potencialmente maliciosos.

Preparación:

A continuación una serie de herramientas de extracción y análisis de


correos electrónicos, para esta serie de ejercicios usaremos como
sistema operativo base Debian, Ubuntu o Kali Linux.

Oledump

wget http://didierstevens.com/files/software
/oledump_V0_0_43.zip

Conversor de archivos msg a eml

sudo apt install libemail-outlook-message-perl


libemail-sender-perl

Detección

Los correos sospechosos generalmente son alertados por los usuarios,


en otros casos las herramientas de seguridad como consolas de anti-
spam o algunas funcionalidades de los UTM (Unified Threat
2 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Management) pueden generar alertas de correos sospechosos.

Una vez detectado el correo electrónico, estos deben ser enviados


para análisis, la forma correcta es guardarlo y enviarlo como adjunto.
Reenviar el correo no es la acción más recomendada ya que se
modifican las cabeceras del correo electrónico.

Algunos indicadores a tener en cuenta para detectar correos


sospechosos:

Solicitudes para ejecutar acciones inmediatas


Descargar adjuntos
Dar clic en enlaces
Realizar operaciones financieras
Cambios de credenciales
Mala ortografía (cada vez menos frecuente)
Mensajes relacionados con algún premio (Ganador, Invitación
gratuita a X o Y evento)

Análisis

Las tareas que realizaremos a continuación son manuales y permiten


extraer y analizar elementos que permitan identificar si un correo es
malicioso o no. Es importante que los analistas de seguridad eviten
subir correos electrónicos o sus adjuntos a plataformas públicas de
análisis automático (sandbox) como VirusTotal o Any.Run ya que si
es un correo legítimo y este contiene información sensible, esta

3 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

quedará expuesta en estos portales de análisis públicos.

Iniciaremos con un análisis básico de las propiedades del correo:

Verificamos el tipo de archivo que nos han suministrado.

file email.msg

file --mime email.msg

En este caso se trata de un archivo de outlook , bajo el estándar CDF


(Compound Document Format)

Si intentamos visualizar el archivo con un editor de texto aparecerá


algo como esto:

cat email.msg | more

4 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Para analizarlo con herramientas convencionales de Linux, vamos a


convertirlo a un formato estándar en este caso EML, el cuál nos
permitirá ver la información en texto claro.

msgconvert email.msg

Si la ejecución es exitosa obtendremos un nuevo archivo con


extensión .eml

ls -l email.*

Conservaremos los dos archivos ya que desarrollaremos el análisis de


dos formas, uno directamente sobre el archivo EML y otro sobre el
MSG

Análisis de Cabeceras (headers)

Las cabeceras de un correo contienen información particular del


correo electrónico incluyendo, el emisor, el receptor, fecha, hora,
asunto y algunos elementos del enrutamiento del correo electrónico.

cat email.eml | more

5 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Date: Contiene el día, fecha, hora y la zona horaria del mensaje.

Subject: Contiene el asunto del mensaje

From: El emisor o la dirección que envía el correo electrónico,


dentro de este campo podemos visualizar el nombre del emisor y la
cuenta de correo.

Received: Este campo nos muestra la dirección IP y el dominio desde


donde se emitió el correo electrónico, en este ejemplo vemos 3
secciones de Received, estos se leen con un orden cronológico de
abajo hacia arriba, siendo el de más abajo el correo original.

6 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Cada sección received contiene los siguientes elementos

from: Dominio y dirección IP desde donde se envía el correo

by: El servidor de correo realiza la entrega, en este caso puntual


vemos que es un servidor de correo de google.

with: El servicio utilizado para el envío generalmente vamos a


encontrar ESMTP o Microsoft SMTP,

id: El número de identificación del mensaje

Existen herramientas en línea para el análisis de cabeceras.

https://mxtoolbox.com/Public/Tools/EmailHeaders.aspx <
https://mxtoolbox.com/Public/Tools/EmailHeaders.aspx>

https://www.iptrackeronline.com/email-header-analysis.php <
https://www.iptrackeronline.com/email-header-analysis.php>

El análisis de cabeceras es de utilidad para la identificación de los


elementos principales del correo electrónico, validar que cuenta es la
7 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

envía realmente el correo, desde donde proviene y con estos


elementos validar listas negras como primera medida de contención.

Análisis del Cuerpo del Correo (Body)

Continuando con la lectura de el correo, posterior a las cabeceras


encontraremos una línea que hace referencia a los límites del correo
(boundary) este valor se encuentra en el objeto Content-Type.

Según el RFC-1341, este valor (boundary) hace referencia a un


correo con múltiples partes o secciones , es decir indica que el correo
electrónico consta de múltiples partes las cuales podemos identificar
con el código de límite.

El mensaje que estamos analizando contiene múltiples secciones que


hacen referencia al código de límite terminado en 11576.

8 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Es común que al visualizar los correos electrónicos encontremos


secciones codificadas, generalmente en base64 como se observa en la
siguiente imagen.

Si el correo no está codificado, podemos extraer otros elementos de


interés como URLs con un simple grep o mediante el uso de
expresiones regulares

cat email.eml | grep http --color

Sin embargo, lo más probable es que el cuerpo del mensaje al igual


que los adjuntos vengan codificados.

9 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Para leer el contenido ofuscado simplemente copiamos el texto


codificado en base64 y lo de-codificamos haciendo uso de
herramientas como CyberChef o a través del comando base64

https://gchq.github.io/CyberChef/ < https://gchq.github.io


/CyberChef/>

base64 -d encoded.text

Análisis de Adjuntos

A continuación veremos el análisis de correos con un mayor nivel de


profundidad.

Utilizaremos la herramienta oledump.py, un script en python

10 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

desarrollado por Didier Stevens < https://twitter.com


/DidierStevens> la cual permite analizar objetos en formato OLE
(Object Linking and Embedding), un protocolo desarrollado por
Microsoft utilizado principalmente para hacer referencia a archivos
adjuntos o embebidos.

Ejecutamos el script oledump.py y le pasamos como parámetro el


correo electrónico en formato .MSG

oledump.py email.msg

La ejecución del comando nos arroja la siguiente información, la


primera columna corresponde al ID de cada elemento impresos en
orden ascendente, en la segunda columna aparece el indicador de
estado, generalmente es ‘M’ o ‘m’ lo cual indica que el stream o
elemento contienen una macro o código VBA (Visual Basic for
Applications). En algunos casos veremos la letra E que indica la
existencia de código VBA corrupto.

11 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

En este caso, oledump ha detectado una macro en el stream número 4,


antes de analizarla veremos algunos plugins de utilidad a la hora de
analizar correos electrónicos.

oledump.py email.msg -p /home/dvirus/DFIR/email


/plugin_msg.py | more

Le pasamos a oledump un parámetro adicional (-p) que hace


referencia a un plugin, en mi caso la ruta que aparece en el comando
previo, es la ruta donde descargué y descomprimí el instalador de
oledump.

El plugin MSG permite extraer elementos de los mensajes de outlook,


incluyendo el nombre del adjunto, la codificación, e incluso
información que se aloja en las cabeceras del mensaje.

Otro plugin de utilidad para este caso es plugin_vba_dco.py el cuál


nos muestra algunas funciones utilizadas por el código malicioso.

oledump.py email.msg -p /home/dvirus/DFIR/email


12 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

/plugin_vba_dco.py

De esta forma confirmamos la existencia de un script VBA

Ahora analizaremos el stream #4 el cual contiene código VBA,


pasamos el parámetro -s4 para hacer referencia al stream de interés.

oledump.py email.msg -s4 | more

13 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

El resultado muestra algunas cadenas interesantes, sin embargo,


debido a que el VBA se mostraba como corrupto vamos a pasar un
parámetro para ver con mayor claridad la macro.

oledump.py email.msg -s4 --vbadecompresscorrupt

El resultado nos arroja el código embebido en el documento de word


adjunto al correo electrónico.

Con estos pasos hemos confirmado información sobre el adjunto y la


existencia de código VBA.

Extraemos el archivo adjunto, en este caso el archivo .doc que


14 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

identificamos previamente, le pasamos a oledump el parametro -d


(dump) y lo redirigimos a un archivo con el nombre que observamos
previamente, puede ser cualquier nombre.

oledump.py -s4 -d email.msg > "Your Invoice.doc"

Validamos las caracteristicas del archivo exportado para comprobar


que el proceso sea correcto.

file Your\ Invoice.doc

Al analizar el resultado observamos que efectivamente hemos


exportado un documento de word de una página y 6 palabras,
bastante sospechoso.

Ejecutamos nuevamente oledump sobre el archivo extraído y


obtenemos nueva información.

15 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Los streams 6 y 7 nos muestran la letra M, lo cual hace referencia a


las macros, mientras que el stream 8 muestra la letra m lo que indica
la existencia de atributos de una macro. Nuestro interés se centra en
los streams 6 y 7.

oledump.py -s6 Your\ Invoice.doc | more

Usando el plugin vba_dco para visualizar propiedades del


documento.

oledump.py Your\ Invoice.doc -p /home/dvirus


/DFIR/email/plugin_vba_dco.py

16 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Exportamos los scripts sobre los streams 6 y 7 respectivamente.

oledump.py -s6 -v Your\ Invoice.doc >


Yacjrozanb.vba

oledump.py -s7 -v Your\ Invoice.doc >


Zzjcjvohytfm.vba

Obtenemos 2 archivos los cuales nombré con base en el nombre de


cada stream

Al visualizar los archivos obtendremos el código que debemos


analizar, pero el análisis de los scripts JS no forman parte de este
artículo.

17 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

Por ahora generamos un hash de cada script

sha256sum *.vba

Contención

Si confirmamos que el correo es malicioso podemos generar los


siguientes IOCs (Indicadores de Compromiso)

Direcciones IP
Nombres de dominio
Cuentas de correo
Hash del archivo word
Hash de los archivos VBA

Acciones a desarrollar:

Búsqueda de correos entregados en los buzones por asunto o


remitente para identificar a las posibles victimas
Bloqueo en el antispam y servidor de correo de las cuentas y
18 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

dominios de riesgo.
En los firewalls y proxies, bloqueo de URLs maliciosas para evitar
el acceso o descarga de archivos.

Referencias

https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html <
https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html>

oledump.py < https://blog.didierstevens.com/programs/oledump-


py/>

< https://dvirus.training/2020/01 Análisis y →


/09/analisis-y-recuperacion-de-archivos- recuperación de
con-tsk/> archivos con TSK

19 of 20 1/25/20, 3:36 PM
Respuesta a Incidentes – Correos Maliciosos – D-V... https://dvirus.training/2019/12/11/analisis-de-cor...

© 2020 D-Virus | DFIR < Powered by WordPress < To the


https://dvirus.training/> https://wordpress.org/> top ↑

20 of 20 1/25/20, 3:36 PM

También podría gustarte