En esta habitación de Tryhackme vamos a realizar una introducción al Malware y su análisis.

El análisis de malware es una forma de respuesta a incidentes, pero también resulta útil para entender las diferentes variantes de malware.

Veremos, de manera introductoria, técnicas y herramientas de análisis.

A la hora de realizarlo es importante considerar:

  • Punto de entrada (PoE o Point of Entry): ¿Ha sido por culpa de spam que pasó el filtro y el usuario abrió un adjunto? En ese caso, podemos revisar los filtros para que no ocurra en el futuro.
  • ¿Cuáles son los indicadores de que se ha ejecutado un malware en la máquina? ¿Hay archivos, procesos o intentos de comunicación que no son los habituales?
  • ¿Cómo actúa el malware? ¿Intenta infectar a otros dispositivos? ¿Encripta archivos o instala puertas traseras (backdoor) o Herramientas de Acceso Remoto (RAT o Remote Access Tool).
  • Y lo que es más importante, ¿cómo podemos prevenir o detectar infecciones futuras?

Comprendiendo las campañas de Malware

Dos categorías básicas:

  • Dirigida: Es decir, que somos el objetivo concreto y se ha creado de manera específica con el propósito de afectar a una víctima concreta. Un ejemplo es el malware Darkhotel, diseñado para robar información como detalles de autenticación de oficiales del gobierno.
  • Masiva: La más común. El propósito es infectar a todos los dispositivos que se pueda y realizar lo que se pueda, independientemente de quién sea la víctima concreta.

Compañías como Kaspersky trazan estas campañas (conocidas como APT’s Advanced Persistent Threats o Amenazas Persistentes Avanzadas) y a menudo informan de los ratios de infección e indicadores, al estilo de la OMS con virus y enfermedades.

Un ejemplo es el informe de la campaña Crouching Yeti (Energetic Bear que tiene como objetivos al sector industrial, farmacéutico, construcción, educación, etc.

¿Cuál es el ejemplo famoso de un ataque dirigido con malware que afectó a Irán?

Stuxnet

¿Cuál es el nombre del ransomware que usó el exploit Eternalblue en una campaña de ataque masiva?

Wannacry

Cómo identificar si ha sucedido un ataque con Malware

Como en cualquier interacción con un sistema operativo, siempre hay restos de esa actividad, aunque sean trazas diminutas.

Por desgracia, el malware es muy obstructivo, lo que deja un montón de evidencia y es perfecto para analizar.

El proceso de ataque con malware puede dividirse, de forma amplia, en estos pasos:

  1. Entrega (Delivery).
  2. Ejecución.
  3. Mantenimiento de persistencia (aunque no siempre es el caso).
  4. Propagación (no siempre).

Estos pasos generan un montón de datos. Por ejemplo: tráfico de red como comunicación con hosts, interacción con el sistema de archivos en forma de modificaciones, lectura y escritura…

El malware se clasifica de acuerdo a las conductas que produce en los pasos que hemos visto. El famoso Wannacry realiza estos 4 pasos.

1. Entrega

Muchos métodos, como un USB (Stuxnet), adjuntos en PDF a través de campañas de phising o enumeración de vulnerabilidades.

2. Ejecución

Está es la parte principal que suele servir para clasificar malware. ¿Qué es lo que hace?

  • Si encripta archivos es ransomware.
  • Si guarda información, como presionado de teclas o muestra anuncios es spyware, etc.

Sólo comprenderemos esta fase a través del análisis de la muestra, por eso es importantedicho análisis y es lo que vamos a ver.

3. Mantener persistencia

No tiene mucho sentido que el malware se ejecute una vez y ya está, a menos que tenga un objetivo muy específico, como Cerber.

Imagina que se ha instalado un keylogger (programa que registra las pulsaciones de teclas). A menos que escribas información sensible en 30 segundos, no tiene mucho uso.

La persistencia es el motivo por el cual el malware es tan «ruidoso». Emplea muchas técnicas que veremos y sirven para asegurarse de que la ejecución merece la pena.

4. Propagación

Esta es otra razón por la cual el malware se nota tanto. El descubrimiento de hosts genera un montón de tráfico de red y veremos esto.

Resumiendo, hay dos clases de huellas que el malware deja en un huésped tras un ataque:

  • Firmas basadas en el host (Host-Based Signatures): normalmente, es el resultado de la ejecución y persistencia que realiza el malware. Por ejemplo, ¿Ha encriptado un archivo? ¿Ha instalado software adicional? Estos son solo dos ejemplos de muchos, que son útiles para prevenir y chequear futuras infecciones.
  • Firmas basadas en red (Network-Based Signatures): la observación de cualquier comunicación de red que tiene lugar durante la entrega, ejecución y propagación. Por ejemplo, en ransomware, ¿dónde contacta el malware para pagos en bitcoin?

En el caso de Wannacry, buscar un gran número de intentos de comunicación con el protocolo Samba es un indicador de infección debido al uso de Eternalblue.

Nombra el primer paso esencia de un ataque de malware

Delivery

¿Cómo se llama el segundo paso?

Execution

¿Qué tipo de firma se usa para clasificar restos de infección en un host?

Host-Based Signature

¿Cuál es el nombre de la otra clasificación de firma usada después de un ataque de malware?

Network-Based signature

Análisis de malware estático vs Análisis de malware dinámico

Hay dos categorías de análisis de malware:

  • Estático.
  • Dinámico.

Mientras que las herramientas y métodos de cada uno son muy diferentes, son esenciales para comprender cómo se comporta un malware.

Análisis estático

Usado para ganar abstracción a alto nivel de la muestra. Es relativamente simple decidir si un pedazo de código es malicioso o no con este método, aunque no siempre.

En esencia, este método es un análisis de la muestra tal y como se presenta, sin ejecutar el código.

Empleando el uso de técnicas, como el análisis de firma vía chequeos de suma (cheksum), podemos tener un análisis breve, eficiente y seguro, aunque limitado.

Análisis dinámico

Este paso implica ejecutar la muestra y observar qué ocurre. Por supuesto, esto no es seguro, si es ransomware, perderás los archivos, si es capaz de propagarse vía red infectarás a tu red local.

Estas son explicaciones extremadamente simplistas de las técnicas, pero sirven para este estadio inicial de tratamiento del tema.

Discusión de las herramientas de análisis de malware y sus usos

Como veremos, algunas herramientas se solapan en los análisis estático y dinámico.

Herramientas que se proveen para el análisis estático:

C:\Users\Analysis\Desktop\Tools\Static\PE Tools

  • Dependency Walker (depends)
  • PeID
  • PE Explorer
  • PEview+ ResourceHacker

C:\Users\Analysis\Desktop\Tools\Static\Disassembly

  • IDA Freeware
  • WinDbg

C:\Users\Analysis\Desktop\Tools\Sysinternalsuite

  • ResourceHacker

C:\Users\Analysis\Desktop\Tools\Dynamic

Estas herramientas las vamos a usar para tareas futuras, ya que implican depurado (debugging) que está fuera del ámbito que abarca esta habitación, pero las veremos en series futuras.

Conectando al Entorno de Análisis Windows

Iniciamos una instancia Windows, junto a las herramientas adicionales y las tareas que tiene que ejecutar. El host no va a responder, solo el protocolo RPD (Remote Desktop Protocol) 3389.

Accedemos con las credenciales que nos dicen, Remmina es un cliente adecuado para esto.

Obteniendo los chequeos de suma (checksums) MD5 de los archivos

Los chequeos de suma MD5 son un atributo prominente de la comunidad de malware. Como hay muchas variantes de una familia de Ransomware, estos cheksums MD5 son como huellas dactilares criptográficas de los archivos.

Esto permite una indetificación a través de la comunidad, especialmente con sandboxes automatizados.

Por ejemplo, digamos que tenemos 20 archivos de origen desconocido. Puedes identificar sus genes usando sus sumas MD5 en sitios como https://virustotal.com y, si ese checksum MD5 ya ha sido analizado previamente, nos habrá ahorrado el trabajo.

Para la tarea, navegamos a la carpeta Tasks del Escritorio y entramos en el directorio Task 7 donde encontraremos tres archivos:

  • aws.exe
  • NetLogo.exe
  • vlc.exe

Parecen nombres comunes de ejecutables, pero cualquiera puede nombrar como quiera a un ejecutable. Solo porque diga vlc no significa que sea la verdadera aplicación Vlc.

Aquí es donde resulta útil usar la checksum MD5. No importa el nombre que tenga, su MD5 revela la verdadera identidad.

La aplicación HashTab está instalada, ella calcula la suma MD5 de archivos, entre otras, cuando inspeccionas las propiedades con Windows Explorer.

La tarea es identificar las sumas de chequeo MD5. Teóricamente, aparece en la pestaña File Hashes, pero da un mensaje de que HashTab no ha sido licenciado para uso comercial y no aparece nada, yuju.

No pasa nada, tenemos Powershell, la Powershell más lenta del mundo, pero bueno, así que hacemos:

cd .\Desktop
cd .\Tasks
cd ".\Task 7"
Get-FileHash aws.exe -Algorithm MD5 # Hay que definirlo porque, por defecto, nos da el SHA256

Suma de aws.exe

D2778164EF643BA8F44CC202EC7EF157

Suma de NetLogo.exe

59CB421172A89E1E16C11A428326952C

Suma de vlc.exe

5416BE1B8B04B1681CB39CF0E2CAAD9F

Veamos si la suma de chequeo MD5 ha sido analizada previamente

Fuera de la máquina virtual Windows, nos vamos a Virustotal a ver si las sumas de chequeo MD5 han sido analizadas.

¿Virustotal reporta la suma de chequeo MD5 de aws.exe como maliciosa? (Yay/Nay)

nay

¿Y la de Netlogo?

nay

¿Y la vlc?

nay

Identificando si los ejecutables están ofuscados / empaquetados

Hay unas pocas herramientas en esta instancia Windows que son capaces de identificar el compilador/empaquetador de un archivo. Sin embargo PeID tiene una base de datos inmesa que es una gran herramienta para esto.

Es más, solo porque un archivo no tenga la extensión .exe no significa que no sea un ejecutabl.

Por ejemplo, puede tener una extensión .jpg y ser una pieza de código ejecutable. Aunque se sale algo del alcance de esta habitación, esencialmente, los archivos tienen atributos que los identifican dentro de su hex y se conocen como encabezados de archivo.

Ejemplo: el valor hex(adecimal) para un ejecutable siempre es “4D 5A”. De esta manera, si un archivo .jpg tiene un encabezado hexadecimal “4D 5A”, no es un archivo jpg.

Se puede leer más sobre encabezados aquí.

https://www.garykessler.net/library/file_sigs.html

Herramientas PeID

Usando PeID identifica el compilador / empaquetador de los siguientes dos archivos en el directorio Tasks/Tasks 9 para responder a las preguntas.

Analizando con PeID

¿Con qué se ha empaquetado el archivo dll según PeID?

Microsoft Visual C++ 6.0 DLL

¿Y el archivo .bin?

Microsoft Visual C++ 6.0

¿Qué es la ofuscación / empaquetado?

Empaquetar es una forma de ofuscación que los creadores de malware emplean para prevenir el análisis de sus programas. Hay razones legítimas y maliciosas por las cuales el autor de un software puede querer prevenir la decompilación de sus programas.

Puede ser por proteger la propiedad intelectual o que no te copien. Sin embargo, los creadores de malware tratan de prevenir la ingeniería inversa y la comprensión de las conductas del software a fin de prevenir la infección.

La tarea es identifica si el archivo 6F431F46547DB2628 localizado en “Tasks\Tasks 10” está empaquetado usando la herramienta PeID.

¿Qué empaquetador reporta PeID?

FSG 1.0 -> dulek/xt

Visualizando las diferencias entre código empaquetado y no empaquetado

Este es otro ejemplo de por qué PeID es una herramienta excelente. Con su enorme base de datos de empaquetadores conocidos, es uno de los mejores a la hora de identificar ofucadores y empaquetadores dentro de una aplicación.

Pero no lo tiene todo, especialmente si el autor ha escrito uno propio. En casos como este, es más interesante lo que PeID no nos dice.

¿Qué nos idce PeID cuando arrastramos a él el archivo en “Tasks\Task 11”?

PeID en acción

En este caso, es capaz de detectar el empaquetador usado para ofuscar el código. Sin embargo, no es capaz de desofuscar, eso lo tendremos que hacer manualmente más adelante en el proceso.

Después de confirmar que este archivo está empaquetado, abramos una herramienta llamada IDA Freeware. Está localizada en Tools\Static\Disassembly. Nos damos cuenta de cómo la información que nos provee es mínima. Por ejemplo, la pestaña Imports está prácticamente vacía. Extraño, ¿no?

Posible malware según IDA

Podemos ver solamente dos “Imports” en este programa, eso es extraño.

El uso de IDA es algo avanzado, pero básicamente podemos ver el flujo de cómo se ejecuta el programa, indicado por las flechas. Hay poco aquí. Existen algunas características más que indican que está empaquetado, pero eso también se sale del alcance de esta habitación.

Posible malware según IDA

Si abriéramos un archivo que no está ofuscado, deberíamos esperar “Imports” más numerosos y un gráfico o flujo parecido a este.

flujo de un programa no ofuscado

Imports de un programa no ofuscado

Podemos comprobar cómo hay much más información aquí. El código ofuscado es mucho más difícil de analizar, al menos a nivel estático, porque se nos presenta muy poca información.

Introducción a las cadenas (strings)

Las cadenas (strings) son básicamente los contenidos en texto / ASCII de un programa. Esto puede ser cualquier cosa, desde contraseñas para zips autoextraíbles hasta direcciones bitcoin en muestras de ransomware.

Cuando analicemos los contenidos de estas cadenas, podemos pintar a veces un cuadro indicativo de las conductas del programa, por ejemplo con esos monederos de bitcoin usados en programas de ransomware.

La tarea es abrir una línea de comandos en la máquina Windows e investigar el directorio “Tools\Sysinternalssuite

cd C:\Users\Analysis\Desktop\Tools\SysinternalsSuite

Y mantenemos esa terminal abierta.

Vamos a usar el comando strings para las que haya en el archivo del directorio “Task 12”. Para ello:

strings "C:\Users\Analysis\Desktop\Tasks\Task 12\67844C01"

Recibiremos un montón de texto, la mayoría no se entiende, pero hay alguno que es valioso. Vamos haciendo scroll hacia arriba.

Texto al ejecutar strings

Procedemos a contestar la pregunta 1.

¿Cuál es la URL que nos muestra al usar strings?

practicalmalwareanalysis.com

Podemos encontrar programas que tienen un gran número de cadenas y usar “strings” de Sysinternals nos puede mostrar apenas un 10% de ellas. Tampoco es maravilloso hacer scroll en la terminal.

Así que nos vamos a PE Explorer (en “Tools\Static\PE Tools\PE Explorer”) y arrastramos el mismo archivo de la pregunta anterior a la aplicación.

Después de la importación del archivo nos vamos a “View > Imports”

PE Explorer

PE Explorer

Ya podemos contestar a la pregunta 2.

¿Cuántos “Imports” únicos hay?

5

Imntroducción a Imports

IDA Freeware es la herramienta a usar tanto en análisis estático como dinámico. Sin profundizar demasiado en las diferencias, hay dos clasificaciones para herramientas como IDA:

  • Desemsambladores (Disassemblers).
  • Despuradores (Debuggers).

Los primeros invierten el código compilado de un programa desde código máquina hasta instrucciones legibles por los humanos (ensamblador). Esto está limitado por cómo se representa el programa a sí mismo en su estado actual.

Es decir, que si los contenidos de un programa cambian durante la ejecución, el desemsamblador no reflejará esto.

Mientras que los depuradores emplean las mismas técnicas, lo que hacen es, esesencialmente, facilitar la ejecución del programa. De este modo, el analista puede ver los cambios realizados a través de cada «paso» del programa. Estas herramientas son geniales porque muestran un retrato de cómo el programa se presenta a sí mismo.

Sin embargo, si realmente es malicioso, te habrás infectado.

Con suficiente comprensión, un analista puede establecer puntos de ruptura (breakpoints) o pausas en varias fases del programa, de modo que se ejecute hasta ahí.

Por ejemplo, siguiendo con la idea del ransomware, un analista puede crear un punto de ruptura dentro de la aplicación de modo que se detenga antes de encriptar los archivos. Esto le facilita ver los diversos cambios de un programa durante su ejecución (como el desempaquetado o la conexión a un servidor remoto), hasta el punto de la infección maliciosa.

Vamos a ejecutar IDA y seleccionar el archivo uninstall.exe en Notepad++

IDA freeware

Como sabemos que es un ejecutable, elegimos “Portable executable for 80386 (PE) [pe64.dll]”

IDA en acción

Después de pulsar en “Ok”, la aplicación cargará, hay que dejar unos minutos para que decompile.

Hay varias pestañas, similares a las que vimos en PE Explorer, “Imports” y “Exports”.

Tarea, navega hasta “Tasks\Task 13” y abre install.exe con IDA Freeware. Responde a la pregunta.

¿Cuántas referencias hay a la librería “msi” en la pestaña “Imports” de IDA Freeware?

Nos vamos a Windows > Imports y una vez allí, pulsamos en el título Library para que se ordenen por librería y buscamos msi.

9

Resumen práctico

El archivo es ComplexCalculator.exe en “Tasks\Task 14” y, según las preguntas, debemos figurarnos qué herramientas son las mejores en cada caso.

¿Cuál es la suma de chequeo MD5 del archivo? (Tenemos que volver a recurrir a Powershell y a Get-FileHash archivo.exe -Algoritm MD5

F5BD8E6DC6782ED4DFA62B8215BDC429

¿Lo reporta VirusTotal como malicioso? (Yay/Nay) Yandex sí lo hace.

Yay

Analiza las cadenas de texto con Strings, ¿cuál es la última que sale?

d:h:

¿Cuál es el output de PeID cuando intentas detectar qué empaquetador es usado por el archivo?

Nothing found