Cyberdefenders Malware Traffic Analysis 5 Walkthrough - Solution




Escenario

Está trabajando como analista de soc en un Centro de operaciones de seguridad (SOC) para una empresa con temática de Acción de Gracias. Una tarde tranquila, escucha que alguien llama a la entrada del analista SOC. Al abrir la puerta, un técnico exhausto del servidor de correo entra dando tumbos y rápidamente cae al suelo. Susurra con voz temblorosa: "Los filtros de correo están caídos... Spam en todas partes..."


Mientras lo ayudas a levantarse, mira al cielo y grita: "¡Se han abierto las puertas del infierno!". El técnico vuelve a colapsar de inmediato y susurra suavemente: "El horror... El horror...".

La interrupción del filtro de correo duró todo el día siguiente. Afortunadamente, se reportaron muy pocos incidentes. Pero un ejemplo te llamó la atención. Durante la interrupción del filtro de correo, uno de los empleados de la empresa decidió jugar a la "ruleta del correo electrónico". El empleado abrió uno de los correos electrónicos maliciosos de su bandeja de entrada y lo trató como un mensaje legítimo.


TU ASIGNACIÓN
Adquirió cuatro correos electrónicos maliciosos que recibió el empleado. También recibió un pcap de tráfico de su computadora infectada. ¿Tu tarea? Averigüe qué correo electrónico se utilizó para comprometer el sistema.


Preguntas

c41-MTA5-email-01: ¿Cuál es el nombre del archivo malicioso?

El nombre del archivo malicioso es: 460630672421.exe. La información se obtuvo con la herramienta emldump.py. Pero antes un poco de análisis.

Primero, con la herramienta files de Linux identificaremos a que tipo de archivo corresponde.


Como se muestra en la imagen es un archivo de tipo email en la RFC 822 hacer referencia a la sintaxis de dicho archivo. 

Segundo, con la herramienta cat de Linux analizamos el contenido del archivo c41-MTA5-email-01.eml.

Encabezado y cuerpo formato de correo


Encabezado de archivo adjunto formato correo

Como se observa en las imágenes se muestran el encabezado, cuerpo y encabezados de archivo adjunto. Lo que nos interesa es el encabezado de archivo adjunto en él se observa la codificación de contenido de transferencia "Content-Transfer-Encoding" se nos indica que está en base64, Luego se nos muestra el tipo de contenido "Content-Type" se indica que el archivo adjunto es un archivo zip y se muestra el nombre del archivo zip. Por último, se nos muestra la disposición del archivo que es un adjunto "Content-Disposition".

Ahora con el la herramienta emldump.py el volcado del archivo zip.



Con la herramienta emldump.py primero ejecutamos el comando de la primera imagen para ver la estructura del archivo c41-MTAS-email-01.eml, luego ejecutamos el comando de la segunda imagen para extraer el archivo zip.


Obtenemos el archivo zip con la herramienta unzip de Linux descomprimimos el archivo zip.


ya podemos responder nuestra respuesta.

c41-MTA5-email-01: ¿Cuál es el nombre de la familia de troyanos a la que pertenece el malware? (Según lo identificado por el conjunto de reglas de amenazas emergentes).

La familia de troyano al cual pertenece el malware es: upatre. Este tipo de malware permite al actor de amenaza descargar y ejecutar malware adicionales. Principalmente se utilizan correos de e-mail para su propagación.   


c41-MTA5-email-01: El malware soltó dos archivos maliciosos con el mismo hash pero con nombres diferentes. ¿Proporcionar el hash SHA256 de esos archivos? (Consulte el informe presentado en 2015).

El hash de los archivos con distintos nombres y mismo hash es: d1818c3fbbb1f09d8998ad44d14ee9a4fbfae5a1bb58128c2ac077a06d7f84b9. Para obtener estos hashes debemos enviar el archivo 460630672421.exe a hybrid-analysis y buscar el informe del año 2015.

Hacemos clic en dicho análisis y nos dirigimos a la parte del informe Extracted Files.


c41-MTA5-email-01: ¿Cuántas solicitudes de DNS inició el malware? (Consulte el informe presentado en 2015).

El número de solicitudes DNS que inicio el malware son: 3 solicitudes. La información se obtuvo del informe (2015) de Hibrid-analysis en la sección Network Analysis.

c41-MTA5-email-02: Varias secuencias contienen macros en este documento. Proporcione el número de la más alto.

El número más alto es: 20.

Con la herramienta emldump.py analizamos el archivo c41-MTA5-email-02.eml.


Aquí el archivo que no interesa es el número 5 application/vnd.ms-excel(Bill Payment_000010818.xls). Con la herramienta emldump.py realizaremos el volcado del archivo.


Luego con la herramienta oleid analizamos en archivo extraído. 


La herramienta nos indica que hay macros presentes en el documento. Luego la herramienta oledump analizamos el documento para proporcionar más alto.


c41-MTA5-email-02: La macro de Excel intentó descargar un archivo. ¿Proporcionar la URL completa de este archivo?

La url completa del archivo: http://advancedgroup.net.au/~incantin/334g5j76/897i7uxqe.exe. La información se obtuvo con la herramienta Hybrid-Analysis.




 Al ingresar al informe proporcionado por Hybrid-Analysis en la parte Network Analysis/HTTP Traffic.

c41-MTA5-email-02: ¿Cuál es el nombre del objeto utilizado para obtener datos de la URL de descarga? 

El nombre del objeto es Microsoft.XMLHTTP. La información se obtuvo con la herramienta libreoffice y su editor de Macros.

Después de revisar cada uno de los módulos, el módulo llamado Pochemu contiene el objeto utilizado para obtener los datos de la url de descarga.

 


Aquí la líneas importantes son las líneas 9 y 443 del módulo Pochemu.

Public Const zilibobe = "t"  -> Declara una constantes de alcance pública nombrada zilibobe 

Set read_same_ch_from3 = CreateObject("Microsof" + zilibobe + ".XMLH" + UCase(zilibobe) + "TP") -> Se crea el objeto utilizando para obtener los datos de url de descarga.

Set: Se utiliza para asignar una referencia de objeto a una variable o priedad.

CreateObject: Función que crea y devuelve una referencia a un objeto ActiveX.

UCase: Función que devuelve un valor Variant que contiene la cadena especificada como argumento, devuelve la cadena convertida en Mayúscula.

Operador +: Operador de concatenación (unión) entre dos cadenas, el lenguaje también permite utilizar el carácter (ampresand), como operador de concatenación.  

Como resultado de ejecutar todas las operación anteriormente descrita. La instrucción quedaría de la siguiente manera.

Set read_same_ch_from3 = CreateObject("Microsoft.XMLHTTP")

c41-MTA5-email-02: La macro de Excel escribe un archivo en la carpeta temporal. ¿Proporcionar el nombre del archivo?

El nombre del archivo que se escribe en la carpeta temporal es: tghtop.exe. La información se obtuvo con la herramienta VirusTotal.

c41-MTA5-email-03: ¿Proporciona el FQDN utilizado por el atacante para almacenar las credenciales de inicio de sesión?

El FQDN utilizado por el atacante para almacenar las credenciales es: jpmmotos.pt. La información se obtuvo analizando el archivo adjunto del archivo c41-MTA5-email-03.eml con la herramienta emldump.py.


Con la herramienta emldump.py extraemos el archivo html adjunto.



Una vez extraído el archivo adjunto con la herramienta strings y grep de Linux analizamos el código fuente del archivo html.



Como se muestra en la imagen el sitio esta creado Wordpress y su FQDN jpmmotos.pt.

c41-MTA5-email-04: ¿Cuántos FQDN están presentes en el js malicioso?

El número de FQDN que están presente en el js malicioso son: 3. La información se obtuvo extrayendo el archivo adjunto del archivo c41-MTA5-email-04.eml con la herramienta emldump.py


Como se muestra en la imagen hay un archivo zip adjunto el cual lo extraeremos.



Una vez extraído el archivo, lo descomprimimos. Como resultado obtenemos el siguiente archivo.


Con la herramienta cat de Linux observamos el contenido del archivo.


Como se puede observar al parecer es código javascript(js). Con la herramienta js-Beatufy formatearemos el código.


Aquí se observa un código un poco confuso, toca analizar un poco el código. En la primera imagen se observan un conjunto de funciones que devuelven cadenas (strings). Luego, en la segunda imagen se muestra las llamadas a las distintas funciones y se concatenan en una única variable llamada u7.  

Vamos a modificar un poco el código javascript el código de la segunda imagen vamos a envolver el código de la segunda imagen en una función llamada decode y utilizaremos la instrucción de javascript console.log para imprimir la variable u7 por consola.




Posteriormente para ejecutar y depurar nuestro código crearemos una carpeta llamada decodejs y dentro de esta crearemos un archivo index.html y un archivo decode.js, este último contendrá nuestro código javascript modificado. En nuestro archivo index.html incluiremos nuestro archivo decode.js y con las herramientas de desarrollo proporcionado por nuestro navegador web depuraremos el código javascript.



Por último, abrimos el archivo index.html en nuestro navegador web y abrimos las herramientas de desarrollo de nuestro navegador.


Como se observa en la imagen al ejecutar la función decode() en nuestro archivo decode.js se no muestra el código javascript.  Con la herramienta js-Beatufy formatearemos el código jsvascript.


Para finalizar, para obtener los FQDN utilizados por el atacante, basta con observar la primera línea de código javascript.


Como se observa en la imagen hay tres url separados por un espacio.

c41-MTA5-email-04: ¿Cuál es el nombre del objeto utilizado para manejar y leer archivos?

El nombre del objeto utilizado para manejar y leer archivos es: ADODB.Stream. La información se obtuvo del archivo que anteriormente estuvimos analizando en la pregunta anterior en la quinta línea.


El objeto ADODB.Stream en su versión ADO 2.5. Se utiliza para leer, escribir y administrar un flujo de datos binarios o texto.

El objeto Stream se obtener de tres maneras:
  • Desde una URL que apunta a un documento, una carpeta o un objeto de registro.
  • Instanciando un objeto Stream para almacenar datos para una aplicación.
  • Al abrir el objeto Stream predeterminado asociado con un objeto Record.
c41-MTA5.pcap: La víctima recibió varios correos electrónicos; sin embargo, el usuario abrió un solo archivo adjunto. Proporcione el nombre del archivo adjunto.

El nombre del archivo adjunto es: fax000497762.zip. La información se obtuvo con la herramienta BrimSecurity.


Como se puede ver en la imagen BrimSecurity alerta de la presencia de malware. Aquí se debe analizar las comunicaciones. Con la herramienta NetworkMiner en su pestaña session filtraremos por los FQDN ya extraído anteriormente del archivo  js malicioso.

Como se observa en la imagen hay FQDN que está asociado a nuestro archivo js malicioso que a su vez estaba como archivo adjunto en el archivo fax000497762.zip  

c41-MTA5.pcap: ¿Cuál es la dirección IP de la máquina víctima?
La dirección IP de la máquina víctima es: 10.3.66.103. La información se obtener analizando los hallazgos de la pregunta anterior.


c41-MTA5.pcap: ¿Cuál es el nombre de host de la máquina víctima?
El nombre de host de la máquina víctima es: Strout-PC. La información se obtuvo de los hallazgos de la pregunta anterior.


 
c41-MTA5.pcap: ¿Cuál es el FQDN que alojó el malware?
El FQDN que alojó el malware es: kennedy.sitoserver.com. La información se obtuvo de los hallazgos de la pregunta anterior.


c41-MTA5.pcap: El archivo adjunto abierto escribió varios archivos en la carpeta TEMP. Proporcione el nombre del primer archivo escrito en el disco.

El primer archivo escrito en disco es: 7997551.exe. La información se obtuvo del archivo js malicioso que esta como adjunto en el archivo. fax000497762.zip.



c41-MTA5.pcap: Uno de los archivos escritos en el disco tiene el siguiente hash md5 "35a09d67bee10c6aff48826717680c1c"; ¿Qué clave de registro verifica este malware para determinar su existencia?
La clave de registro que verifica el este malware para determinar su existencia es:  interface\{9a83a958-b859-11d1-aa90-00aa00ba3258}. La información se obtuvo con la herramienta Wireshark y pestr.

Primero extraemos todo los objetos con la herramienta Wireshark (File/Export Objects/HTTP).


Hacemos clic en el botón Save All seleccionamos el directorio donde queremos guardar nuestros archivos, luego con la herramienta md5sum de Linux calculamos los hashes de los archivos y lo filtramos con el hash dado en nuestra pregunta.


Una vez identificado el archivo con el respectivo hash procedemos a cambiar de nombre para una mejor manipulación en este caso utilizare el nombre "extract_exe.exe".

Por último, con la herramienta pestr extraeremos los string del archivo.



Obtenemos nuestra clave de registro que consulta el malware para comprobar su existencia.

c41-MTA5.pcap: Uno de los archivos escritos en el disco tiene el siguiente hash md5 "e2fc96114e61288fc413118327c76d93" envió una solicitud de publicación HTTP a la página "upload.php". Proporcione la IP del servidor web. (IP no está en PCAP)
La dirección IP del servidor web es: 78.24.220.229. La información se obtuvo enviando el hash a VirusTotal (recordar la IP no está en el archivo PCAP).


c41-MTA5.pcap: El malware inició el tráfico de devolución de llamada después de la infección. Proporcione la IP del servidor de destino.
La dirección de IP del servidor de destino es: 109.68.191.31. La información se obtuvo con la herramienta Wireshark.



Como se observa en la imagen se muestran un alto número de paquetes entre el host infectado (10.3.66.103) y el host resaltado en la imagen. 

Consultaremos si la dirección IP está en Lista negra (BlackList).


La dirección IP se encuentra en lista negra. 

Happy Hack!!! 

Comentarios