Introducción al análisis de malware: tipos que existen, síntomas y cómo identificarlos

Telefónica Tech    6 octubre, 2022
Foto: Ed Hardie / Unsplash

Cuando hablamos de malware en muchas ocasiones no nos damos cuenta de la amplitud de esa palabra. Que el malware es algo dañino está claro, y que provoca el mal funcionamiento del equipo una vez afectado, también.

Pero, ¿qué tipos de malware existen, cuáles son los síntomas y cómo podemos identificarlos?

Tipos de malware

Partiendo de la base de que malware es cualquier programa informático diseñado para causar algún daño, podemos realizar la siguiente clasificación, que si bien no es la única sí es la más común:

  • Virus: es un programa que se replica o propaga por los equipos con la ayuda del usuario.
  • Gusanos: es lo mismo que el anterior sin la ayuda del usuario.
  • Troyano: programa que pasa desapercibido.
  • RAT: troyano de acceso remoto.
  • Backdoor: programa que permite acceder remotamente o ejecutar comandos.
  • Downloader o dropper: programa que descarga y ejecuta otro malware.
  • Hacktool: programas utilizados para realizar diferentes tipos de ataques, aunque no tienen por qué ser maliciosos.
  • Ransomware: programa que cifra los ficheros de los usuarios y solicita un rescate para su descifrado.
  • Bot: programa que interactúa con otro de manera automática (comunes en IRC).
  • Rootkit: programa que se oculta y que permite acceder al atacante con privilegios elevados y continuada.
  • Keylogger: programa que captura las pulsaciones de teclado para informar posteriormente al atacante.
  • Software de Minería: programa para realizar minería de criptomonedas como Bitcoin o similares en el equipo afectado.
  • Info Stealer: programa que busca contraseñas o información personal para sustraerlas.
  • Spyware: software que recopila actividad del usuario sin su permiso para enviarlas a su autor.
  • PUP/PUA: programas no deseados como las barras de explorador, entre otras.
  • Adware: malware que muestra continuamente publicidad.

Si os preguntáis si solamente afecta a ordenadores y sistemas operativos Microsoft Windows la respuesta es “no, en absoluto”.

El malware afecta a todos los sistemas operativos, incluyendo todo los más conocidos: Linux, macOS, Windows, Android, iOS… Lo que significa que optar por uno u otro supone estar a salvo de una infección, o al menos no completamente a salvo.

Todos los sistemas operativos pueden verse afectados de un modo u otro por malware.

Síntomas de estar afectado por malware

Los síntomas pueden ser muy variados y muy diferentes dependiendo del sistema operativo, del tipo de dispositivo y, por supuesto, del tipo de malware del que se trate y de cuál sea un propósito. Algunos de los síntomas más comunes incluyen:

  • El ordenador se ralentiza, comienza a ir más lento.
  • Aparecen ventanas con mensajes que te felicitan por haber ganado un móvil o te ha tocado un cheque-regalo de 500 euros para un tienda online.
  • Mensajes de error del sistema operativo; por ejemplo, la pantalla azul característica de Windows.
  • El disco duro empieza a quedarse sin espacio e incluso se llena, sin motivo aparente.
  • Aparecen utilidades, aplicaciones o barras de de herramientas (por ejemplo, en el navegador web) que no recuerdas haber instalado.
  • El ventilador del ordenador empieza a funcionar de forma constante o errática
  • Archivos, como fotografías, cambian de extensión o tipo de archivo
  • Aparece un archivo llamado README que dice, literalmente, que tu información está cifrada

Cualquiera de estos síntomas indica que, muy probablemente, tu ordenador está afectado por alguno de los tipos de malware que hemos mencionado en el apartado anterior.

Cómo se cuela el malware en tu ordenador

Generalmente suelen llegar por correo a modo de phishing, que es un término asociado a los correos recibidos en los que se busca engañar al receptor haciéndose pasar por alguien de confianza como una persona amiga, empresa o servicio de confianza como pueden ser una entidad bancaria, empresas de mensajería o de servicios como agua o luz, etc. Su propósito es manipular al receptor del mensaje para conseguir que ejecuten alguna acción, como abrir una URL o un archivo adjunto.

Otra forma de entrada habitual del malware es en forma de software legítimo disponible en páginas de descarga de software o tiendas de apps de terceras. Y, ¿quién no ha buscado la manera de hacer funciona un programa con un generador de números de serie? Pues no os fieis nunca porque los ejecutables de tipo “cracks.exe” no suelen traer nada bueno.

Otros, en cambio, llegan sin intervención del usuario. Como en el caso de WannaCry —al que acompañaba un ransomware— o antes Conficker, Blaster, Slammer, Sasser…

Dependiendo de cuál sea el malware la solución puede ser más o menos fácil. Eso sí, esperemos que no sea un ransomware porque, aunque también puede tener solución, nunca es recomendable pagar ya que eso dará pie a que ese tipo de ataque se siga produciendo.

¿Qué hacer si nos llega algo y no sabemos qué es?

De entrada, nunca debemos abrir y menos aún ejecutar un archivo cuyo origen o propósito desconocemos, incluso cuando llega, por ejemplo por email, de un remitente conocido o de confianza. En ese caso lo mejor es preguntar al remitente.

También existen herramientas online que son útiles para conocer de qué se trata.

Plataformas de Análisis online para el análisis de malware

Las más utilizadas son estas:

Algunas requieren registro y, en general, una vez registrados se dispone de un número limitado de muestras. Si os dedicáis al mundo de la Ciberseguridad necesitaréis otro tipo de licencia ya que la versión gratuita se os quedará pequeña enseguida.

¿Son infalibles estas herramientas? No, por desgracia no lo son. Pero sí suelen ser de gran ayuda. Incluso cuando no son capaces de detectar la familia de malware a la que pertenece suelen dar al menos pistas que ayuden a identificarlo con algo de investigación adicional.

Algún Indicador de Compromiso (IoC) obtendrás de estas plataformas, como en este ejemplo:

Técnicas de detección que utiliza el malware

Los programadores de malware conocen muy bien estas plataformas y son capaces de añadirles ciertos códigos que identifican dónde están siendo ejecutados.

Las principales medidas que buscan en estos entornos son:

  • Número de cores del procesador.
  • Tamaño del disco duro.
  • Que el ratón se mueva.
  • Dirección MAC de la tarjeta de red.
  • Alguna clave de registro perteneciente a máquinas virtuales.
  • Nombre de la máquina o usuario autenticado.
  • Ciertos procesos en ejecución (Antivirus, EDR, etc.)
  • Idioma del teclado.
  • Sistema operativo instalado.
  • El nombre del malware o su ruta de ejecución.
  • Si el programa está en modo depuración.
  • Dirección IP de salida a internet.
  • Número de documentos abiertos o recientes.
  • Fecha y hora de ejecución (Sleep)

En caso de detectar algunas de éstas herramientas —incluso máquinas virtuales que utilizan algunas de estas herramientas— el malware no se llega a ejecutar, o bien proporciona datos de salida falsos para enmascarar su naturaleza.

Ejemplos de persistencia

Si el malware se ve en un entorno amigable, es decir, cree que no está siendo detectado, entonces suele crear una clave en el Registro de Windows (método más común) para arrancarse cada vez que el usuario inicia sesión. De esta forma se asegura que si apaga el equipo o el proceso falla inesperadamente volverá a iniciarse en cada sesión.

Hay varios sitios en los que crear la clave, AutoStart (HKLM / HKCU\ … RunOnce o Run), WinLogon Process (HKLM\ … Winlogon), BootExecute Key (HKLM\ … Session Manager), Startup Keys (HKLM / HKCU\ … User Shell Folders), Services (HKLM\ … RunservicesOnce o Runservices), Browser Helper Objects (BHO), AppInit DLL’s (HKLM\ … AppInit_DLL), etc. O simplemente acaba en el directorio de inicio del usuario o de todos los usuarios para tener más posibilidades de infección (siempre y cuando tenga permisos).

Herramientas como Autoruns nos ayudan a identificar si algo no nos cuadra, si tenemos algún nombre desconocido en alguna de estas claves o algún ejecutable que no conozcamos, esta utilidad te permite borrar la clave directamente, eso sí, con cuidado de saber lo que se está haciendo, el Registro de Windows es muy delicado, una vez que borres la clave, ya no podrás recuperarla, así que antes de nada, ¡BACKUP del Registro!

Ocultando el Malware final

El malware, en general, no llega tal cuál sale del proceso de compilado. De esta forma sería más rápido analizarlo. No, no, se suele utilizar programas llamados Crypters que pueden cifrar, ofuscar, comprimir, añadirle otros iconos y funciones que sean capaces de detectar procesos antivirus, detección de depuradores, ejecución en máquinas virtuales, etc.

El programa que crea el malware con las opciones mencionadas se llama Builder, y el que lo extrae de sí mismo y lo descifra para ejecutarlo se llama Stub. Una vez descifrado hay dos opciones:

  • descargarlo a disco (Scantime)
  • ejecutarlo en memoria (Runtime)

Es más común ejecutarlo en memoria para dificultar así su detección por parte de los Antivirus.

Existe mucho malware que no se ha subido aún a plataformas de análisis online por esta razón, al ejecutarse en memoria no se dispone de él en un fichero para poderlo subir y que se encarguen de decirnos qué tipo de malware es o a donde se conecta. Los analistas de malware los aterrizan al disco duro para que puedan ser analizados de dos formas que veremos a continuación.

Pero antes, seguro que os estaréis preguntando como de fácil es conseguir este tipo de malware. Es más fácil de lo que os creéis.

A menudo sale a la luz el Builder con el que se genera un malware, incluso su código fuente. Esto permite ampliar las capacidades del mismo y diferentes evoluciones por parte de terceros. Esta es la razón por la que se suele ver cómo ciertos tipos de malware comparten código: si el código está disponible nada impide a otro utilizarlo.

Volvamos ahora a los dos métodos que hay para analizar malware.

1. Análisis estático, sin ejecutar el malware

Durante un análisis estático no se llega a ejecutar la muestra, así que estamos a salvo de infectarnos. Los métodos utilizados son varios, principalmente:

  • Desempaquetado del malware, si lo está (Crypters).
  • Obtención de las cadenas (comando strings, acordaros de strings -e l, además del otro). Usad también Floss, obtendréis resultados que seguramente no esperéis.
  • Identificación de muestras con reglas Yara (es mejor si sabemos lo que vamos a analizar, el tiempo corre…).
  • Enumeración de funciones API o Application Programming Interfaces (no van a estar todas, pero te pude dar una idea del comportamiento).
  • Desensamblado y decompilado (a menudo, el pseudocódigo en C/C++ es más entendible) del  malware.
  • Comprensión del flujo del malware.
  • Obtención de la configuración del malware (si la tiene), el comportamiento, IOC, información útil, etc.

2. Análisis dinámico, ejecutando el malware (¡cuidado!, te vas a infectar)

Le toca el turno al análisis dinámico. Este pretende certificar lo que hemos visto en el análisis estático. Hay veces que en el análisis estático no se ve de forma rápida lo que sucede, por ejemplo, en funciones donde están cifrados los datos, se le aplica el algoritmo que sea y mágicamente aparece la cadena que estábamos buscando.

¿Os acordáis de esas herramientas de análisis online? Pues son una ayuda para identificas posibles API en donde debemos poner breakpoints o puntos de ruptura en el debugger para poner especial atención en ellas.

En un análisis dinámico se miran los procesos que se crean, la creación o modificaciones de ficheros o claves del Registro de Windows, tráfico de red, servicios que se crean o modifican, Mutex utilizados y con todo esto y lo que habíamos visto en el análisis estático deberíamos tener una idea exacta de lo que estamos analizando, deberíamos ponerle un nombre al malware.

Herramientas de ayuda para el analista

Existen una serie de herramientas en las que apoyarnos a la hora de estos análisis como los desensambladores (para convertir el lenguaje máquina a ensamblador) como son IDA, Ghidra, Radare, etc. Aquí podemos ver un ejemplo, es así como solemos ver el Malware.

Tenemos los decompiladores (herramientas que convierten el código del Malware en un lenguaje a alto nivel más fácil de interpretar para para un humano). ¿Siempre se puede hacer esto? No, depende  del lenguaje y compilador utilizados. DnSpy (.Net) y Jadx (Java) son bastante fiables.

Por otro lado, tenemos los que te muestran un pseudocódigo que ayudan mucho en la compresión del código como por ejemplo los tres que se mencionaron como desensambladores. Pero cuidado, aunque no son 100% fiables, sin duda, hay que utilizarlos.

Los depuradores son programas que nos ayudan a entender el comportamiento del malware según se esté ejecutando, así que cuidado, un ejecutar de más y te has infectado. Los más utilizados actualmente son x64dbg y Windbg.

De nuevo, los tres que se mencionaron como desensambladores tienen esta función, así que el que más le guste al analista. Aún se siguen utilizando otros más antiguos como Ollydbg e Immunity Debugger (igual que el anterior con el plus de poder ejecutar scripts de Python para automatizar análisis), aunque cada vez menos. Este último es utilizado a la hora de analizar exploits gracias a scripts destinados al análisis de estos. ¿Alguien conoce Mona

Otras herramientas de apoyo son las utilidades de Sysinternals (Process Explorer, Process Monitor, Tcpview, Autoruns, etc.). Un capturador de tráfico, siempre es necesario saber qué se está enviando por la red y hacia dónde como, por ejemplo, Wireshark. La herramienta Yara para poder utilizar miles de reglas que existen para la detección de casi cualquier cosa.

Tratar de realizar un listado de herramientas es complicado ya que cada uno suele utilizar las que más le gusta para cada tipo y cada Malware es un mundo, no se utilizan las mismas. Os animo a investigar sobre ellas.

Reflexión final

Cada día salen cientos y cientos de nuevos malware de todo tipo, así que no nos podemos despistar. Hay que estar al día sobre las diferentes familias que existen y sus evoluciones y visitar todas las plataformas online en donde los afectados suben las muestras para conocer qué les ha afectado, así que tenéis un buen punto de partida para detectar tanto lo antiguo como lo nuevo.

Usadlas para comprender el comportamiento, para buscar nuevos sitios a los que se conectan para enviar la información que buscan, para generar reglas propias de detección, para buscar nuevas muestras aún sin catalogar, etc. Sin duda, el mundo del análisis de malware es apasionante y en constante evolución.

Autor: Servicio de Análisis de Malware