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
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
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
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.