¿Qué es el análisis de malware?
Tabla de contenidos:
Muchos niños rompen cosas no porque sean pequeños seres malvados, sino porque tienen curiosidad por saber «cómo está hecho». Eventualmente, algunos de esos niños crecen y se convierten en Analistas de Ciberseguridad. Hacen básicamente lo mismo, pero en un mundo adulto.
Análisis de malware es el proceso de estudiar una muestra de malware para entender de qué está hecha y cómo funciona. A veces nunca lo sabes a menos que lo pruebes, así que necesitas ejecutar el malware. Y a veces, es necesario examinar minuciosamente el código línea por línea sin activar la ejecución.
Por supuesto, aprender qué es el análisis de malware trae muchos beneficios. Conocer al enemigo significa conocer las formas de ganar. Significa que los Investigadores de Malware ayudan a sus equipos SOC a desarrollar algoritmos de detección más específicos, así como a mejorar su respuesta a incidentes.
La parte emocionante es que el malware moderno se está volviendo cada vez más sofisticado. A menudo, los Analistas de Seguridad tienen que estudiar algo a lo que no tienen acceso. Si hace diez años el malware podía definirse por un solo archivo ejecutable, ahora, un archivo es solo el comienzo de un viaje. Vamos a profundizar un poco más en el análisis de malware y ver cómo hacerlo.
¿Cómo puedes comenzar el análisis de malware?
Es fácil – puedes comenzar el análisis de malware después de obtener una muestra de malware. Las organizaciones que emplean un enfoque de Defensa en Profundidad tienen múltiples herramientas y procesos en su lugar para encontrar regularmente nuevas muestras. Algunos analistas te dirán que no han visto nada conceptualmente nuevo en años, mientras que otros admitirán que tienen nuevas muestras de malware aproximadamente cada mes. Todo depende en gran medida de la profundidad de la investigación.
Analizar malware puede consumir mucho tiempo; por eso, muchos equipos SOC prefieren no profundizar tanto. Sin embargo, el tiempo dedicado a la investigación definitivamente rinde frutos porque nunca es tarde para mejorar la postura de seguridad.
¿Cuáles son los tipos de análisis de malware?
El análisis de malware se puede realizar de diferentes maneras y con el uso de varias herramientas. Hay tres tipos principales de análisis:
- Estático
- Dinámico
- Híbrido
Para averiguar cómo analizar el malware que tienes a mano, intenta responder algunas preguntas primero:
- ¿Cómo podría este malware activar su ejecución?
- ¿De qué maneras intentará evadir la detección?
- ¿Qué partes del código malicioso podemos y no podemos ver?
- ¿Qué herramientas nos ayudarán a analizar todos los aspectos de una muestra de malware dada?
Si tienes una muestra de un archivo malicioso, puedes realizar un análisis estático. Sin embargo, si este archivo está diseñado solo para lanzar etapas adicionales de una cadena de ataque, el análisis estático no mostrará cómo se ejecuta la carga útil principal. Y a veces, la única manera de descubrir esto es ejecutar el malware en un entorno seguro. Así que, veamos cómo realizar diferentes tipos de análisis de malware y cómo pueden ser útiles para un Analista de Ciberseguridad.
Análisis dinámico de malware
El análisis dinámico de malware puede realizarse en un sandbox automatizado o en una máquina virtual donde puedes probar la muestra manualmente. Ten en cuenta que el malware sofisticado buscará señales de estar en un entorno emulado, y el análisis automatizado de malware no es la mejor opción en este caso.
Al igual que cualquier otro software, el malware puede programarse para hacer prácticamente cualquier cosa que pueda hacer un código. Así que quieres entender qué hace el código (como conjunto de instrucciones) y cuál es la lógica detrás de él.
Por ejemplo, algunas herramientas de seguridad inyectan sus DLL en procesos locales. El malware escaneará el entorno y, si encuentra estos archivos, se terminará a sí mismo. Además de esto, los analizadores de malware buscarán:
- Depuradores y otras herramientas utilizadas para el análisis interactivo (llamadas a API como IsDebuggerPresent, CheckRemoteDebuggerPresent, NtQueryInformationProcess).
- Procesos, ventanas, claves del registro, archivos, objetos mutex, etc., para el análisis de malware.
Como sugiere el nombre, el análisis dinámico de malware trata de observar el malware en acción. Quieres interactuar con él de tantas maneras como sea posible y crear una imagen completa de su funcionalidad. Para hacerlo, asegúrate de que usas un entorno completamente aislado; debe estar desconectado de Internet, funcionar en una red solo para anfitriones y la máquina virtual no debe compartir ninguna carpeta con el anfitrión.
Aunque los escáneres de evasión de depuradores están presentes en muchas muestras de malware, los Investigadores de Seguridad utilizan depuradores en el análisis dinámico de malware. Estas herramientas son buenas para identificar llamadas a API riesgosas y asignaciones de memoria. Si el malware utiliza activamente técnicas sin archivos, no será visible en el análisis estático, ya que funciona a través de procesos legítimos, sin necesidad de explotación.
Por ejemplo, un código inyectado en PowerShell asigna memoria en powershell.exe y ejecuta un código ofuscado en un nuevo hilo (que genera un proceso confiable a través de Process Hollowing):
Dentro del depurador, podrás ver cómo el código ejecuta todas las instrucciones con las que está programado. No olvides revisar las cadenas en la memoria y compararlas con el código responsable de estas interacciones de memoria. Busca APIs de inyección, como VirtualAlloc, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread, etc. Además, examina las transacciones NTFS para Process Doppelgänging inyecciones.
Usa herramientas para ocultar depuradores y asegurarte de que puedes analizar malware que evade la detección. Hablaremos más sobre herramientas un poco más adelante. Ahora, veamos cómo realizar un análisis estático de malware.
Análisis estático de malware
El análisis estático de malware es el tipo de análisis que es posible realizar sin ejecutar un código. Este tipo de análisis puede requerir conocimiento avanzado de lenguajes de software de bajo nivel, instrucciones de procesador y los principios de gestión de memoria.
Sin embargo, los analistas de nivel principiante también tienen sus maneras de analizar archivos estáticamente. Por ejemplo, una simple mirada a una extensión de archivo puede decirte qué tipo de archivo es, lo que te permite sugerir si es sospechoso tener este archivo en el lugar donde lo encontraste o no. Luego, puedes buscar su hash o hash difuso en recursos de inteligencia de amenazas como VirusTotal. Ten cuidado al hacer suposiciones, porque incluso si el hash no está en VirusTotal, el archivo puede ser malicioso de todos modos. No olvides analizar otras propiedades estáticas, como la información del encabezado.
El análisis estático se puede realizar a través de herramientas automáticas para el triaje inicial, así como herramientas para el análisis manual para una visión más granular. Los Analistas de Seguridad estudian instrucciones de código, dependencias y lo que significan.
Si abres un archivo ejecutable en un bloc de notas, esto es lo que verás:
Es un código compilado en un formato legible por máquina. Los procesadores saben qué hacer, pero es poco probable que los humanos entiendan algo aquí. Así que necesitas ejecutar este código a través de un desensamblador o descompilador para ponerlo nuevamente en un formato que puedas leer y analizar. Después de hacer eso, el código se verá algo así:
Entender las instrucciones de ensamblaje es necesario para llegar a conclusiones perspicaces. Consulte esta rápida guía para refrescar tu conocimiento, o profundiza con este manual de referencia de Oracle.
También puedes utilizar la suite Sysinternals de Microsoft para analizar cadenas. Sus herramientas también pueden ayudar a identificar cuál ejecutable está asociado con ciertas llamadas a API de Windows e incluso determinar IOCs. Desplázate hasta la última sección de esta publicación del blog para descubrir más sobre herramientas para el análisis de malware. Y ahora, hablemos sobre los pros y los contras del análisis estático y dinámico de malware.
Análisis estático vs Análisis dinámico de malware
Evidentemente, emplear más de un tipo de análisis de malware sería la mejor opción. El análisis estático mostrará cómo opera un archivo ejecutable en particular. Mientras tanto, una cadena de ataque estándar hoy en día a menudo incluye más de un ejecutable. En su lugar, puede ser una colección de scripts y archivos que se activan entre sí. Si ese es el caso, el análisis estático de uno de los archivos no será suficiente para entender cómo funciona toda la carga útil.
Dependiendo de los objetivos y metas del equipo SOC, se pueden gastar algunos recursos en el estudio de muestras de malware. Y es una elección muy individual si optar por análisis estático o dinámico. Muy a menudo, hay una necesidad de mantener un equilibrio adecuado entre los dos, lo que a menudo se llama un análisis híbrido de malware.
Análisis híbrido
El análisis híbrido de malware es una combinación de análisis estático y dinámico de malware.
Cuando se trata de muestras complejas, es mejor analizar el malware en etapas. Por ejemplo, primero haces un análisis estático e identificas qué llamadas a la API podrían estar evadiendo la detección. Luego, en un entorno emulado, realizas un análisis dinámico para ver la muestra en acción y verificar si descarga otros binarios. Y si obtienes estos últimos, puedes realizar un análisis estático de sus internos nuevamente.
Casos de uso del análisis de malware
Cada equipo SOC es único, y los procesos de ciberseguridad pueden estar organizados de manera diferente, dependiendo del contexto empresarial, la escala de la organización y los factores de riesgo. A continuación, recopilamos algunos de los casos de uso en los que el análisis de malware es aplicable.
Detectar Amenazas
Los IOC y los patrones de comportamiento son entradas comunes para varios tipos de actividades de detección de amenazas en programas de software específicos (SIEM, SOAR, EDR/XDR). Obtener datos importantes de malware durante un análisis ayuda a detectar las últimas amenazas.
Obtener Alertas
Recibir alertas precisas es una parte vital de cualquier canal de ciberseguridad. El análisis de malware ayuda a reducir la cantidad de falsos positivos y falsos negativos, asegurando así un mayor nivel de protección cibernética.
Buscar Amenazas
Las nuevas y sofisticadas cepas de malware no son tan fáciles de detectar. Ahí es cuando la caza de amenazas entra en juego. Tener muestras de malware y entender cómo funcionan es la mejor manera de buscar más amenazas que acechan en el medio.
Responder a los Incidentes
Obviamente, no hay una buena postura de ciberseguridad sin la respuesta a incidentes. Se puede elaborar y ejecutar una respuesta adecuada cuando los Ingenieros de Seguridad poseen información detallada sobre cómo es el malware, qué sistemas afecta y qué procesos intenta ejecutar.
¿Cuáles son las etapas del análisis de malware?
Un trabajo analítico no es el más fácil. Lo que es fácil es quedar atrapado en montones de datos o malinterpretar el código. Para que la ciberdefensa sea exitosa, los investigadores dividen sus actividades en unos pocos pasos de análisis de malware.
Evaluación y Triaje
La etapa inicial de un análisis de malware se puede realizar con la ayuda de herramientas de automatización. Para el análisis estático, se requieren algunos pasos de preparación, como descompilar el código. De todos modos, en la primera etapa del análisis de malware, es necesario clasificar las partes del código que requieren atención cercana. También pueden dividirse en niveles de dificultad y prioridad. Después de definir y priorizar el alcance del código malicioso a revisar, es momento de pasar a la siguiente etapa.
Interpretación de Datos
A continuación, los Analistas de Seguridad examinan muestras específicas de malware. Como mencioné antes, se puede hacer analizando las propiedades estáticas o ejecutando malware en un entorno seguro y aislado. Cuando el Analista de Malware obtiene todos los datos que pueden exponerse durante el análisis estático y dinámico, intentan interpretar lo que ven. Pueden probar más las muestras renombrando variables, ejecutando el código y haciendo comentarios sobre los patrones de ejecución.
Ingeniería Inversa
Esta es la parte más desafiante, especialmente si hay una muestra encriptada y no está claro qué hace y por qué. Además, el código podría tener múltiples dependencias que tampoco son tan obvias. Intentar ingenierizar a la inversa el malware es una tarea avanzada. Sin embargo, es clave para un enfoque de Defensa en Profundidad.
Conclusiones y Acciones Futuras
Cuando se formulan los hallazgos del análisis, es momento de documentarlos y tomar medidas futuras. El Analista escribe un informe de malware en el que describe una muestra de malware, las etapas de análisis que se tomaron, y las conclusiones. También pueden dar algunas recomendaciones de remediación.
¿Cuáles son las herramientas para el análisis de malware?
Existe una amplia selección de herramientas para el análisis de malware que los Ingenieros de Seguridad usan diariamente. Comencemos con herramientas de análisis estático:
- PeStudio es ampliamente utilizado por equipos CERT en todo el mundo para capturar artefactos de archivos maliciosos.
- PEiD reconoce fácilmente malware empaquetado y encriptado y proporciona detalles sobre su composición.
- BinText es un extractor de texto que puede encontrar cadenas Ascii, Unicode y de Recursos en un archivo.
- MD5deep calculará los hashes maliciosos. Usado como un analizador de malware, este paquete de software ejecutará muchos archivos a través de varios digests criptográficos.
- Dependency walker escaneará módulos de Windows de 32 bits o 64 bits y creará un árbol de dependencias.
- IDA Pro desensamblará el código binario en un código fuente. También ofrece una capacidad de depuración multiplataforma que puede manejar aplicaciones remotas.
Cuando se trata de analizar malware en sandbox, es posible que ya hayas probado Cuckoo, sin embargo, recomendaría revisar ANY.RUN and Joe Sandbox Cloud. Ambos tienen mapeo MITRE ATT&CK®, utilizan reglas, y ofrecen una vista muy detallada de los comportamientos.
Por supuesto, Wireshark no necesita presentación, ya que sigue siendo una de las herramientas más utilizadas para el análisis de redes en tiempo real. INetSim simula realisticamente servicios de internet en un entorno de laboratorio (las muestras difícilmente reconocerán la simulación). Luego, está la Microsoft Sysinternals suite que ya mencioné anteriormente. Allí encontrarás toda una gama de herramientas para el análisis dinámico de malware. ScyllaHide es otra herramienta interesante que te permitirá ocultar un depurador del malware que deseas ejecutar. Y si te sientes como si estuvieras haciendo un proyecto serio de ingeniería inversa, revisa Ghidra – un conjunto de herramientas desarrollado por la Dirección de Investigación de la NSA.
Aprender a hacer análisis de malware podría parecer aburrido al principio, pero mantente paciente y profundiza para encontrar verdaderos tesoros. Una vez que te sientas cómodo con los datos de bajo nivel, serás capaz de ver lo que no muchas personas verían. Así que, en lugar de pensar que los ingenieros de malware son las personas más inteligentes del mundo, podrás demostrar que incluso el malware más avanzado no hace magia – es solo otra pieza de software que puede ser descompuesta y neutralizada.
Finalmente, para una Detección de Amenazas y Caza de Amenazas rápida y eficiente, suscríbete a SOC Prime Detection as Code Platform – aquí encontrarás miles de reglas basadas en Sigma para detectar los últimos ciberataques. Y si estás listo para compartir tu propia experiencia y monetizar tu conocimiento, únete a nuestra iniciativa global de crowdsourcing, Threat Bounty, que ayuda a hacer del mundo cibernético un lugar más seguro.