Análisis de Malware con CAPA: Fundamentos y Detección de Funcionalidades Maliciosas

El análisis de software potencialmente malicioso presenta el desafío inherente de que ejecutar el binario sospechoso en nuestro entorno podría comprometer nuestra máquina. Esto es así a menos que dispongamos de un entorno aislado como un sandbox, capaz de contener cualquier actividad hostil. Tradicionalmente, el análisis de malware se clasifica en dos categorías: dinámico y estático. Este artículo se enfocará en el análisis estático, utilizando una herramienta destacada conocida como CAPA.

CAPA, abreviatura de Common Analysis Platform for Artifacts, fue desarrollado por el equipo de FireEye Mandiant. Su propósito principal es **identificar las funcionalidades presentes dentro de archivos ejecutables**, que pueden incluir ficheros Portable Executables (PE), binarios ELF, módulos .NET, shellcode e incluso informes de sandbox. CAPA logra esto al examinar un archivo y aplicar un conjunto de **reglas que describen comportamientos comunes**, revelando así **qué acciones es capaz de realizar un programa**, como **comunicaciones de red**, **operaciones de archivos**, **inyección de procesos**, entre otras.

La ventaja principal de CAPA radica en que consolida años de conocimiento en ingeniería inversa en una herramienta automatizada, haciéndola accesible incluso para quienes no son expertos en la materia. Esto es invaluable para analistas y profesionales de la seguridad, permitiéndoles comprender rápidamente las capacidades de un posible malware sin la necesidad de realizar un análisis manual del código.

Esta herrameinta es particularmente útil en el análisis de malware y la caza de amenazas, ya que comprender las funcionalidades de un binario es crucial para la respuesta a incidentes y el desarrollo de medidas defensivas.

Primeros Pasos con CAPA

Para comenzar a utilizar CAPA, se recomienda una familiarización previa con el framework MITRE ATT&CK, aunque no es un requisito indispensable.

Las demostraciones aquí se realizarán en un entorno Windows. CAPA viene preinstalado en la máquina virtual de TryHackMe y los resultados para el binario de ejemplo, cryptbot.bin, ya han sido preprocesados para agilizar el aprendizaje. Estos archivos se encuentran en la ruta C:\Users\Administrator\Desktop\capa y son:

  • cryptbot.txt (salida del comando capa.exe .\cryptbot.bin)
  • cryptbot_vv.txt (salida del comando capa.exe -vv .\cryptbot.bin)
  • cryptbot_vv.json (salida del comando capa.bin -j -vv .\cryptbot.bin > cryptbot_vv.json)

Operación Básica de CAPA

El uso de CAPA es sencillo. Abra una consola de PowerShell, navegue hasta el directorio C:\Users\Administrator\Desktop\capa y ejecute CAPA, especificando el binario a analizar. En este ejemplo, usaremos cryptbot.bin como objetivo.

# Ejecutar en una terminal de Powershell
cd C:\Users\Administrator\Desktop\capa
capa.exe .\cryptbot.bin

La ejecución de este comando puede tomar varios minutos. CAPA mostrará una barra de progreso mientras analiza el programa:

PS C:\Users\Administrator\Desktop\capa> capa.exe .\cryptbot.bin
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...

Además del comando -h (o --help) para obtener información sobre los parámetros disponibles, las opciones más utilizadas son -v (verbose) y -vv (very verbose), que proporcionan resultados más detallados, aunque conllevan un mayor tiempo de procesamiento.

Opción Descripción Ejemplo de Sintaxis
-h o --help Muestra el mensaje de ayuda y sale. capa -h
-v o --verbose Habilita la documentación detallada de resultados. capa.exe .\cryptbot.bin -v
-vv o --vverbose Habilita la documentación de resultados muy detallada. capa.exe .\cryptbot.bin -vv

A continuación, se muestra una salida típica de CAPA. Tenga en cuenta que los resultados pueden variar dependiendo del archivo analizado.

PS C:\Users\Administrator\Desktop\capa> capa.exe .\cryptbot.bin
┌─────────────┬────────────────────────────────────────────────────────────────────────────────────┐
│ md5         │ 3b9d26d2e7433749f2c32edb13a2b0a2                                                   │
│ sha1        │ 969437df8f4ad08542ce8fc9831fc49a7765b7c5                                           │
│ sha256      │ ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c                   │
│ analysis    │ static                                                                             │
│ os          │ windows                                                                            │
│ format      │ pe                                                                                 │
│ arch        │ i386                                                                               │
│ path        │ /home/strategos/Room-CAPA/cryptbot.bin                                             │
└─────────────┴────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────┬───────────────────────────────────────────────────────────────────────────┐
│ ATT&CK Tactic        │ ATT&CK Technique                                                          │
├──────────────────────┼───────────────────────────────────────────────────────────────────────────┤
│ DEFENSE EVASION      │ Obfuscated Files or Information [T1027]                                   │
│                      │ Obfuscated Files or Information::Indicator Removal from Tools [T1027.005] │
│                      │ Virtualization/Sandbox Evasion::System Checks [T1497.001]                 │
│ DISCOVERY            │ File and Directory Discovery [T1083]                                      │
│ EXECUTION            │ Command and Scripting Interpreter::PowerShell [T1059.001]                 │
│                      │ Shared Modules [T1129]                                                    │
│ IMPACT               │ Resource Hijacking [T1496]                                                │
│ PERSISTENCE          │ Scheduled Task/Job::At [T1053.002]                                        │
│                      │ Scheduled Task/Job::Scheduled Task [T1053.005]                            │
└──────────────────────┴───────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│ MAEC Category               │ MAEC Value                                                         │
├─────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ malware-category            │ launcher                                                           │
└─────────────────────────────┴────────────────────────────────────────────────────────────────────┘
┌──────────────────────────┬──────────────────────────────────────────────────────────────────────────┐
│ MBC Objective            │ MBC Behavior                                                             │
├──────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ ANTI-BEHAVIORAL ANALYSIS │ Virtual Machine Detection [B0009]                                        │
│ ANTI-STATIC ANALYSIS     │ Executable Code Obfuscation::Argument Obfuscation [B0032.020]            │
│                          │ Executable Code Obfuscation::Stack Strings [B0032.017]                   │
│ COMMUNICATION            │ HTTP Communication [C0002]                                               │
│                          │ HTTP Communication::Read Header [C0002.014]                              │
│ DATA                     │ Check String [C0019]                                                     │
│                          │ Encode Data::Base64 [C0026.001]                                          │
│                          │ Encode Data::XOR [C0026.002]                                             │
│ DEFENSE EVASION          │ Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] │
│ DISCOVERY                │ File and Directory Discovery [E1083]                                     │
│ EXECUTION                │ Command and Scripting Interpreter [E1059]                                │
│ FILE SYSTEM              │ Create Directory [C0046]                                                 │
│                          │ Delete File [C0047]                                                      │
│                          │ Read File [C0051]                                                        │
│                          │ Writes File [C0052]                                                      │
│ MEMORY                   │ Allocate Memory [C0007]                                                  │
│ PROCESS                  │ Create Process [C0017]                                                   │
└──────────────────────────┴──────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┬──────────────────────────────────────────────┐
│ Capability                                           │ Namespace                                    │
├──────────────────────────────────────────────────────┼──────────────────────────────────────────────┤
│ reference anti-VM strings                            │ anti-analysis/anti-vm/vm-detection           │
│ reference anti-VM strings targeting VMWare           │ anti-analysis/anti-vm/vm-detection           │
│ reference anti-VM strings targeting VirtualBox       │ anti-analysis/anti-vm/vm-detection           │
│ contain obfuscated stackstrings (2 matches)          │ anti-analysis/obfuscation/string/stackstring │
│ reference HTTP User-Agent string                     │ communication/http                           │
│ check HTTP status code                               │ communication/http/client                    │
│ reference Base64 string                              │ data-manipulation/encoding/base64            │
│ encode data using XOR                                │ data-manipulation/encoding/xor               │
│ contain a thread local storage (.tls) section        │ executable/pe/section/tls                    │
│ get common file path                                 │ host-interaction/file-system                 │
│ create directory                                     │ host-interaction/file-system/create          │
│ delete file                                          │ host-interaction/file-system/delete          │
│ read file on Windows (4 matches)                     │ host-interaction/file-system/read            │
│ write file on Windows (5 matches)                    │ host-interaction/file-system/write           │
│ get thread local storage value                       │ host-interaction/process                     │
│ create process on Windows                            │ host-interaction/process/create              │
│ allocate or change RWX memory                        │ host-interaction/process/inject              │
│ reference cryptocurrency strings                     │ impact/cryptocurrency                        │
│ link function at runtime on Windows (5 matches)      │ linking/runtime-linking                      │
│ parse PE header (4 matches)                          │ load-code/pe                                 │
│ resolve function by parsing PE exports (186 matches) │ load-code/pe                                 │
│ run PowerShell expression                            │ load-code/powershell/                        │
│ schedule task via at                                 │ persistence/scheduled-tasks                  │
│ schedule task via schtasks                           │ persistence/scheduled-tasks                  │
└──────────────────────────────────────────────────────┴──────────────────────────────────────────────┘

Como la ejecución de CAPA puede demorar, es más práctico examinar los archivos preprocesados. Puede ver el contenido de cryptbot.txt con el siguiente comando de PowerShell:

PS C:\Users\Administrator\Desktop\capa> Get-Content .\cryptbot.txt

Este comando mostrará en la terminal el mismo contenido que se obtuvo al ejecutar CAPA directamente.

Interpretación de Resultados de CAPA: Información Básica, MITRE y MAEC

Los resultados de CAPA se segmentan en bloques temáticos para facilitar su interpretación. El primer bloque proporciona detalles fundamentales sobre el archivo analizado:

  • Valores Hash: Identificadores criptográficos como MD5, SHA1 y SHA256.
  • Análisis: Indica el tipo de análisis realizado, por ejemplo, static.
  • Sistema Operativo (OS): Especifica el contexto del sistema operativo para las funcionalidades detectadas, como windows.
  • Arquitectura (Arch): Determina si el binario es compatible con arquitecturas como i386 (x86).
  • Ruta (Path): La ubicación del archivo analizado.
┌─────────────┬────────────────────────────────────────────────────────────────────────────────────┐
│ md5         │ 3b9d26d2e7433749f2c32edb13a2b0a2                                                   │
│ sha1        │ 969437df8f4ad08542ce8fc9831fc49a7765b7c5                                           │
│ sha256      │ ae7bc6b6f6ecb206a7b957e4bb86e0d11845c5b2d9f7a00a482bef63b567ce4c                   │
│ analysis    │ static                                                                             │
│ os          │ windows                                                                            │
│ format      │ pe                                                                                 │
│ arch        │ i386                                                                               │
│ path        │ /home/strategos/Room-CAPA/cryptbot.bin                                             │
└─────────────┴────────────────────────────────────────────────────────────────────────────────────┘

MITRE ATT&CK

El framework MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge) es un extenso repositorio global que documenta las tácticas y técnicas empleadas por actores de amenazas en cada fase de un ciberataque. Funciona como un manual estratégico, ofreciendo una visión detallada de las metodologías de los atacantes, desde el acceso inicial hasta la persistencia, escalada de privilegios, evasión de defensas, movimiento lateral, entre otros.

CAPA presenta los resultados en este formato. Algunos resultados pueden incluir o no el identificador de técnica y sub-técnica.

Formato Ejemplo Explicación
ATT&CK Tactic::ATT&CK Technique::Technique Identifier Defense Evasion::Obfuscated Files or Information::T1027 DEFENSE EVASION = Táctica ATT&CK Obfuscated Files or Information = Técnica ATT&CK T1027 = Identificador de Técnica
ATT&CK Tactic::ATT&CK Technique::ATT&CK Sub-Technique::Technique Identifier[.]Sub-technique Identifier Defense Evasion::Obfuscated Files or Information::Indicator Removal from Tools T1027.005 DEFENSE EVASION = Táctica ATT&CK Obfuscated Files or Information = Técnica ATT&CK Indicator Removal from Tools = Sub-Técnica ATT&CK T1027 = Identificador de Técnica 005 = Identificador de Sub-Técnica
┌──────────────────────┬───────────────────────────────────────────────────────────────────────────┐
│ ATT&CK Tactic        │ ATT&CK Technique                                                          │
├──────────────────────┼───────────────────────────────────────────────────────────────────────────┤
│ DEFENSE EVASION      │ Obfuscated Files or Information [T1027]                                   │
│                      │ Obfuscated Files or Information::Indicator Removal from Tools [T1027.005] │
│                      │ Virtualization/Sandbox Evasion::System Checks [T1497.001]                 │
│ DISCOVERY            │ File and Directory Discovery [T1083]                                      │
│ EXECUTION            │ Command and Scripting Interpreter::PowerShell [T1059.001]                 │
│                      │ Shared Modules [T1129]                                                    │
│ IMPACT               │ Resource Hijacking [T1496]                                                │
│ PERSISTENCE          │ Scheduled Task/Job::At [T1053.002]                                        │
│                      │ Scheduled Task/Job::Scheduled Task [T1053.005]                            │
└──────────────────────┴───────────────────────────────────────────────────────────────────────────┘

La integración del framework MITRE ATT&CK en la salida de CAPA es invaluable, ya que ayuda a analistas y defensores a correlacionar el comportamiento de un archivo con los manuales de ataque conocidos, agilizando la investigación durante un incidente.

MAEC

MAEC (Malware Attribute Enumeration and Characterization) es un lenguaje especializado diseñado para codificar y transmitir detalles complejos sobre el malware. Abarca una amplia gama de atributos, incluyendo características de comportamiento, artefactos y correlaciones entre diferentes instancias de malware. Este lenguaje sirve como un sistema estandarizado para rastrear y analizar la complejidad del software malicioso.

┌─────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│ MAEC Category               │ MAEC Value                                                         │
├─────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ malware-category            │ launcher                                                           │
└─────────────────────────────┴────────────────────────────────────────────────────────────────────┘

A continuación, se describen los valores MAEC más comunes que CAPA puede asignar:

Valor MAEC Descripción
Launcher Indica características de activación de acciones específicas, similares a un comportamiento de malware.
Downloader Muestra características de descarga y ejecución de otros archivos, un comportamiento típico en malware más sofisticado.

Cuando CAPA etiqueta un archivo con el valor MAEC "launcher", sugiere que el archivo exhibe comportamientos como:

  • Desplegar cargas maliciosas adicionales.
  • Activar mecanismos de persistencia.
  • Conectarse a servidores C2 (comando y control) o iniciar comunicaciones C2.
  • Ejecutar funciones maliciosas específicas.

Por otro lado, cuando CAPA asigna el valor MAEC "Downloader", indica que el archivo muestra comportamientos como:

  • Obtener cargas útiles o recursos adicionales de internet.
  • Descargar actualizaciones (por ejemplo, para módulos de ataque).
  • Ejecutar etapas secundarias de código.
  • Adquirir archivos de configuración.

Interpretación de Resultados de CAPA: Catálogo de Comportamiento de Malware (MBC)

Esta sección profundiza en el Catálogo de Comportamiento de Malware (MBC) y sus componentes: Objetivos, Micro-Objetivos, Comportamientos MBC, Micro-Comportamientos y Métodos.

#Catálogo de Comportamiento de Malware (MBC)
┌──────────────────────────┬──────────────────────────────────────────────────────────────────────────┐
│ MBC Objective            │ MBC Behavior                                                             │
├──────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
│ ANTI-BEHAVIORAL ANALYSIS │ Virtual Machine Detection [B0009]                                        │
│ ANTI-STATIC ANALYSIS     │ Executable Code Obfuscation::Argument Obfuscation [B0032.020]            │
│                          │ Executable Code Obfuscation::Stack Strings [B0032.017]                   │
│ COMMUNICATION            │ HTTP Communication [C0002]                                               │
│                          │ HTTP Communication::Read Header [C0002.014]                              │
│ DATA                     │ Check String [C0019]                                                     │
│                          │ Encode Data::Base64 [C0026.001]                                          │
│                          │ Encode Data::XOR [C0026.002]                                             │
│ DEFENSE EVASION          │ Obfuscated Files or Information::Encoding-Standard Algorithm [E1027.m02] │
│ DISCOVERY                │ File and Directory Discovery [E1083]                                     │
│ EXECUTION                │ Command and Scripting Interpreter [E1059]                                │
│ FILE SYSTEM              │ Create Directory [C0046]                                                 │
│                          │ Delete File [C0047]                                                      │
│                          │ Read File [C0051]                                                        │
│                          │ Writes File [C0052]                                                      │
│ MEMORY                   │ Allocate Memory [C0007]                                                  │
│ PROCESS                  │ Create Process [C0017]                                                   │
└──────────────────────────┴──────────────────────────────────────────────────────────────────────────┘

Malware Behavior Catalogue (MBC)

El MBC (Malware Behavior Catalogue) está diseñado para asistir en diversas facetas del análisis de malware, como el etiquetado, el análisis de similitudes y la elaboración de informes estandarizados. Fundamentalmente, actúa como un compendio de objetivos y comportamientos del malware. El MBC puede vincularse con las metodologías ATT&CK y registrar todos los comportamientos y características de código identificados durante el análisis. Es importante destacar que los nombres de los comportamientos MBC pueden o no coincidir con las técnicas ATT&CK correspondientes.

El contenido de MBC se puede representar en dos formatos:

Formato Ejemplo Explicación
OBJECTIVE::Behavior::Method[Identifier] ANTI-STATIC ANALYSIS::Executable Code Obfuscation::Argument Obfuscation [B0032.020] Anti-static Analysis = OBJETIVO Executable Code Obfuscation = COMPORTAMIENTO Argument Obfuscation = MÉTODO BOO32.020 = IDENTIFICADOR
OBJECTIVE::Behavior::[Identifier] COMMUNICATION::HTTP Communication:: [C0002] COMMUNICATION = OBJETIVO HTTP Communication = COMPORTAMIENTO C0002 = IDENTIFICADOR

La diferencia clave entre estos formatos es la inclusión del "MÉTODO" como un detalle adicional, que puede actuar como una sub-técnica.

Objetivo (Objective)

Un Objetivo se basa en las tácticas de ATT&CK en el contexto del comportamiento del malware, aunque no todas las tácticas están incluidas. El MBC también incorpora análisis anti-comportamiento y anti-estático. Estos objetivos están adaptados para el análisis de malware y se utilizan para describir sus características.

Objetivo Explicación
Anti-Behavioral Analysis El malware intenta evadir la detección al obstaculizar el análisis de comportamiento mediante herramientas como sandboxes o depuradores.
Anti-Static Analysis El malware busca obstaculizar o complicar el análisis estático, dificultando la identificación y comprensión de sus acciones.
Collection El malware se enfoca en identificar y recopilar información de la máquina o red objetivo.
Command and Control (C2) El malware establece comunicación con sistemas enfectados para controlar sus acciones, robar datos o realizar otras actividades maliciosas.
Credential Access El propósito principal del malware es sustraer credenciales de cuenta, como nombres de usuario y contraseñas.
Defense Evasion El malware está diseñado para sortear y evadir mecanismos de detección y seguridad del sistema para evitar ser descubierto o mitigado.
Discovery El malware intenta recopilar información detallada sobre la configuración y el entorno del sistema o red, incluyendo hardware, software e infraestructura de red.
Execution El malware busca ejecutar comandos o código no autorizado en el sistema objetivo sin consentimiento del usuario.
Exfiltration El malware tiene como objetivo infiltrarse en un sistema o red para robar y extraer datos sensibles.
Impact El malware está diseñado para manipular, corromper o dañar sistemas y datos informáticos.
Lateral Movement El malware intenta propagarse a través de una red, ya sea activamente mediante acceso a máquinas o pasivamente, como a través de correos electrónicos maliciosos.
Persistence El malware está diseñado para permanecer indetectado y operativo en un sistema durante largos periodos.
Privilege Escalation El malware intenta obtener permisos o control más elevados dentro de un sistema o red.

Micro-Objetivo (Micro-Objective)

Los Micro-Objetivos se relacionan con Micro-Comportamientos, que son acciones exhibidas por software potencialmente malicioso que no son inherentemente maliciosas y pueden servir a diversos propósitos (ej. binarios en aplicaciones de mensajería). Sin embargo, estos comportamientos son frecuentemente explotados, lo que lleva a CAPA a marcarlos.

Micro-Objetivo Descripción
PROCESS Exhibe comportamientos relacionados con procesos, incluyendo la creación, configuración de contextos de hilos, terminación de procesos y verificación de mutex.
MEMORY Muestra comportamientos como la asignación, cambio de protección y liberación de memoria.
COMMUNICATION Exhibe comportamientos de tráfico de red como DNS, FTP, HTTP, ICMP, SMTP, entre otros.
DATA Muestra comportamientos como la verificación de cadenas, compresión, decodificación y codificación de datos.

En la salida final de CAPA, los Objetivos y Micro-Objetivos aparecen únicamente bajo la columna "Objective".

Comportamientos MBC (MBC Behaviors)

La columna "MBC Behavior" incluye comportamientos y micro-comportamientos, con o sin sus métodos e identificadores. Aquí una selección de los más relevantes:

Objetivo Comportamiento Identificador Explicación
ANTI-BEHAVIORAL ANALYSIS Virtual Machine Detection B0009 El malware verifica si se está ejecutando en un entorno virtual.
ANTI-STATIC ANALYSIS Executable Code Obfuscation B0032 El código ejecutable se ofusca intencionalmente para dificultar el análisis estático.
EXECUTION Command and Scripting Interpreter E1059 El malware puede usar intérpretes de comandos y scripting para ejecutar comandos maliciosos.
DISCOVERY File and Directory Discovery E1083 El malware es capaz de enumerar archivos y directorios para buscar específicos.
ANTI-STATIC ANALYSIS, DEFENSE EVASION Obfuscated Files or Information E1027 El malware puede ofuscar archivos o información mediante codificación, cifrado u otros medios.

Micro-Comportamiento (Micro-Behavior)

En el análisis de malware, los "comportamientos de bajo nivel" se refieren a operaciones que el malware exhibe y que no son inherentemente maliciosas, pero pueden servir a diversos objetivos. Estos se registran a menudo como "Micro-Comportamientos" en el análisis de las Características de Comportamiento del Malware. Ejemplos incluyen la creación de sockets TCP o la evaluación de condiciones específicas en cadenas. Es vital recordar que un comportamiento de bajo nivel no es sinónimo de inofensivo, ya que puede formar parte de un plan malicioso más amplio.

Micro-Objetivo Micro-Comportamientos Identificador Explicación
MEMORY Allocate Memory C0007 El malware utiliza la asignación de memoria para desempaquetarse y ejecutar sus actividades.
PROCESS Create Process C0017 El malware puede crear procesos a través de WMI o shellcode, o procesos suspendidos.
COMMUNICATION HTTP Communication C0002 El malware es capaz de iniciar comunicaciones HTTP.
DATA Check String C0019 El malware puede examinar cadenas para identificar características específicas.
DATA Encode Data C0026 El malware es capaz de codificar datos utilizando Base64 y XOR.
FILE SYSTEM Create Directory C0046 El malware puede crear directorios.
FILE SYSTEM Delete File C0047 El malware tiene la capacidad de eliminar archivos.
FILE SYSTEM Read File C0051 El malware puede leer archivos.
FILE SYSTEM Writes File C0052 El malware tiene la capacidad de escribir en archivos.

En la salida final de CAPA, tanto los comportamientos como los micro-comportamientos se muestran únicamente bajo la columna "Behavior".

Métodos (Methods)

Los Métodos se relacionan estrechamente con los comportamientos y ofrecen un nivel adicional de detalle, actuando como sub-técnicas. Aquí, algunos ejemplos de los métodos encontrados en la salida de ejemplo:

Comportamiento Métodos o Sub-técnica Identificador Explicación
Executable Code Obfuscation Argument Obfuscation B0032.020 Los parámetros de llamadas a API se calculan en tiempo de ejecución para dificultar el análisis.
Executable Code Obfuscation Stack Strings B0032.017 Las cadenas se construyen y descifran en la pila al usarse, luego se descartan para evitar referencias obvias.
HTTP Communication Read Header C0002.014 Lectura de encabezados HTTP.
Encode Data Base64 C0026.001 El malware puede codificar datos usando Base64.
Encode Data XOR C0026.002 El malware puede codificar datos usando XOR.
Obfuscated Files or Information Encoding-Standard Algorithm E1027.m02 Uso de algoritmos estándar (ej. Base64) para codificar el malware, archivos o información.

Al entender estos componentes, podemos interpretar la salida de CAPA. Por ejemplo, si vemos:

┌─────────────────────────────┬──────────────────────────────────┐
│ MBC Objective               │ MBC Behavior                     │
├─────────────────────────────┼──────────────────────────────────┤
| DATA                        │ Encode Data::Base64 [C0026.001]  │
└─────────────────────────────┴──────────────────────────────────┘

Esto nos indica que el archivo utiliza el esquema de codificación Base64 bajo el objetivo de manipulación de datos, un comportamiento que podría ser para codificar información. El identificador C0026.001 proporciona un punto de referencia para este comportamiento específico.

Interpretación de Resultados de CAPA: Namespaces

Nuestra discusión ahora se centrará en dos conceptos principales: Funcionalidades (Capabilities) y Espacios de Nombres (Namespaces). En esta sección, exploraremos los Espacios de Nombres.

#Capacidad y Namespace
┌──────────────────────────────────────────────────────┬──────────────────────────────────────────────────────┐
│ Capability                                           │ Namespace                                            │
├──────────────────────────────────────────────────────┼──────────────────────────────────────────────────────┤
│ reference anti-VM strings                            │ anti-analysis/anti-vm/vm-detection                   │
│ reference anti-VM strings targeting VMWare           │ anti-analysis/anti-vm/vm-detection                   │
│ reference anti-VM strings targeting VirtualBox       │ anti-analysis/anti-vm/vm-detection                   │
│ contain obfuscated stackstrings (2 matches)          │ anti-analysis/obfuscation/string/stackstring         │
│ reference HTTP User-Agent string                     │ communication/http                                   │
│ check HTTP status code                               │ communication/http/client                            │
│ reference Base64 string                              │ data-manipulation/encoding/base64                    │
│ encode data using XOR                                │ data-manipulation/encoding/xor                       │
│ contain a thread local storage (.tls) section        │ executable/pe/section/tls                            │
│ get common file path                                 │ host-interaction/file-system                         │
│ create directory                                     │ host-interaction/file-system/create                  │
│ delete file                                          │ host-interaction/file-system/delete                  │
│ read file on Windows (4 matches)                     │ host-interaction/file-system/read                    │
│ write file on Windows (5 matches)                    │ host-interaction/file-system/write                   │
│ get thread local storage value                       │ host-interaction/process                             │
│ create process on Windows                            │ host-interaction/process/create                      │
│ allocate or change RWX memory                        │ host-interaction/process/inject                      │
│ reference cryptocurrency strings                     │ impact/cryptocurrency                                │
│ link function at runtime on Windows (5 matches)      │ linking/runtime-linking                              │
│ parse PE header (4 matches)                          │ load-code/pe                                         │
│ resolve function by parsing PE exports (186 matches) │ load-code/pe                                         │
│ run PowerShell expression                            │ load-code/powershell/                                │
│ schedule task via at                                 │ persistence/scheduled-tasks                          │
│ schedule task via schtasks                           │ persistence/scheduled-tasks                          │
└──────────────────────────────────────────────────────┴──────────────────────────────────────────────────────┘

El formato de este bloque de salida es el siguiente:

Formato Ejemplo Explicación
Capability (Rule Name)::TLN (Top-Level Namespace)/Namespace reference anti-VM strings::Anti-Analysis/anti-vm/vm-detection Reference anti-VM strings = Capacidad (Nombre de la Regla) Anti-Analysis = TLN o Espacio de Nombres de Nivel Superior anti-vm/vm-detection = Espacio de Nombres

Namespaces

CAPA utiliza espacios de nombres para agrupar elementos con un propósito común.

Espacio de Nombres de Nivel Superior (TLN) Explicación
anti-analysis Contiene reglas para detectar comportamientos de malware que evaden el análisis, como ofuscación, empaquetado y técnicas anti-depuración.
collection Agrupa reglas relacionadas con la recopilación de información por el malware para exfiltración u otros fines. Representa el aspecto de "recopilación de datos".
communication Incluye reglas sobre los diferentes comportamientos de comunicación del malware, como transferencia de datos, C2 y otras interacciones de red.
compiler Contiene reglas para identificar el entorno de construcción o compilador específico utilizado para generar el ejecutable, actuando como una "firma" del proceso de compilación.
data-manipulation Agrupa reglas que gestionan comportamientos de alteración de datos dentro del ejecutable, abarcando cifrado de cadenas y codificación de datos.
executable Contiene reglas relacionadas con atributos en ejecutables, como secciones PE o información de depuración.
host-interaction Agrupa reglas de interacción con el sistema anfitrión, como la lectura, escritura o modificación de archivos y directorios en disco.
impact Incluye reglas sobre las posibles consecuencias o el impacto del comportamiento del programa, como acceso remoto, exfiltración de datos o corrupción.
internal Reglas internas del sistema no destinadas al uso directo o informe por parte del analista, sino para el funcionamiento interno de CAPA.
lib Bloques de construcción utilizados para crear otras reglas.
linking Contiene reglas para identificar comportamientos relacionados con el enlazado o la carga dinámica de código externo o bibliotecas durante la ejecución del programa.
load-code Agrupa reglas relacionadas con la carga o ejecución dinámica de código durante la ejecución del programa, similar a la "inyección de código en tiempo de ejecución".
malware-family Incluye reglas que asocian comportamientos con familias de malware u organizaciones específicas, ayudando a la detección y clasificación.
nursery Un repositorio para reglas que aún no han sido completamente desarrolladas.
persistence Contiene reglas relacionadas con comportamientos para mantener el acceso o lograr persistencia en sistemas infectados.

Por ejemplo, consideremos el TLN Anti-Analysis. Bajo este, encontramos espacios de nombres como anti-vm/vm-detection y obfuscation. Cada espacio de nombres tiene un conjunto de reglas agrupadas. Para anti-vm/vm-detection, tenemos reglas y sus archivos de configuración como reference-anti-vm-strings-targeting-virtualbox.yml y reference-anti-vm-strings-targeting-virtualpc.yml. Lo mismo ocurre con obfuscation, con reglas como obfuscated-with-dotfuscator.yml y obfuscated-with-smartassembly.yml. Todos estos siguen bajo el TLN Anti-Analysis.

Interpretación de Resultados de CAPA: Funcionalidades (Capabilities)

Continuando con el análisis de resultados, examinemos las funcionalidades de CAPA.

Capacidad Espacio de Nombres de Nivel Superior (TLN) Espacios de Nombres Archivo YAML de Reglas Notas
reference anti-VM strings Anti-Analysis anti-vm/vm-detection reference-anti-vm-strings.yml
reference anti-VM strings targeting VMWare Anti-Analysis anti-vm/vm-detection reference-anti-vm-strings-targeting-vmware.yml
reference anti-VM strings targeting VirtualBox Anti-Analysis anti-vm/vm-detection reference-anti-vm-strings-targeting-virtualbox.yml
reference HTTP User-Agent string Communication http/client reference-http-user-agent-string.yml
check HTTP status code Communication http check-http-status-code.yml
reference Base64 string Data Manipulation encoding/base64 reference-base64-string.yml
encode data using XOR Data Manipulation encoding/XOR encode-data-using-xor.yml
contain a thread local storage (.tls) section Executable pe/section/tls contain-a-thread-local-storage-tls-section.yml
get common file path Host-Interaction file-system get-common-file-path.yml
create directory Host-Interaction file-system/create create-directory.yml
delete file Host-Interaction file-system/delete delete-file.yml
read file on Windows Host-Interaction file-system/read read-file-on-windows.yml
write file on Windows Host-Interaction file-system/write write-file-on-windows.yml
get thread local storage value Host-Interaction process get-thread-local-storage-value.yml Esta regla se encuentra bajo el TLN Nursery.
allocate or change RWX memory Host-Interaction process/inject allocate-or-change-rwx-memory.yml
create process on Windows Host-Interaction process create create-process-on-windows.yml
reference cryptocurrency strings Impact impact/cryptocurrency reference-cryptocurrency-strings.yml Esta regla se encuentra bajo el TLN Nursery.
link function at runtime on Windows Linking runtime-linking link-function-at-runtime-on-windows.yml
parse PE header load-code load-code/pe parse-pe-header.yml resolve-function-by-parsing-pe-exports.yml
resolve function by parsing PE exports load-code load-code/pe resolve-function-by-parsing-pe-exports.yml
run PowerShell expression load-code load-code/PowerShell run-powershell-expression.yml
schedule task via at persistence scheduled-tasks schedule-task-via-at.yml
schedule task via schtasks persistence scheduled-tasks schedule-task-via-schtasks.yml

Para ilustrar, consideremos la capacidad "reference anti-VM strings":

  • Su archivo de reglas YML asociado es reference-anti-vm-strings.yml.
  • Se encuentra bajo el espacio de nombres anti-vm/vm-detection.
  • Y, a su vez, bajo el espacio de nombres de nivel superior Anti-Analysis.

Esto indica que CAPA, usando la regla reference-anti-vm-strings.yml, detecta si el malware busca entradas de registro específicas de VMware, la presencia de herramientas de VMware, o elementos relacionados con máquinas virtuales. Esta búsqueda es una táctica del malware para evadir la detección, razón por la cual CAPA marca este comportamiento.

Otro ejemplo es la capacidad "schedule task via schtasks":

  • Su archivo de reglas YML asociado es schedule-task-via-schtasks.yml.
  • Está bajo el espacio de nombres scheduled-tasks.
  • Y bajo el espacio de nombres de nivel superior persistence.

Esto revela que CAPA puede identificar comportamientos relacionados con tareas programadas en sistemas Windows. Podría haber patrones reconocibles que sugieran que el ejecutable se registra como una tarea programada, utilizando las reglas definidas en schedule-task-via-schtasks.yml, para mantener la persistencia.

Es importante notar que el nombre de la Capacidad (Capability) y el nombre del archivo YAML de la regla son generalmente idénticos, con la salvedad de que los espacios en el nombre de la capacidad son reemplazados por guiones en el nombre del archivo YAML.

Sin embargo, existen excepciones. Por ejemplo, la capacidad "reference cryptocurrency strings" se esperaría bajo el TLN Impact, pero en realidad se encuentra bajo Nursery, que es un espacio para reglas en desarrollo.

Con esta información, podemos interpretar la salida de CAPA. Tomemos como ejemplo:

┌───────────────────────────────────────────┬───────────────────────────────────────────┐
│ Capability                                │ Namespace                                 │
├───────────────────────────────────────────┼───────────────────────────────────────────┤
│ reference Base64 string                   │ data-manipulation/encoding/base64         │
└───────────────────────────────────────────┴───────────────────────────────────────────┘

Esta entrada indica que la funcionalidad "reference Base64 string" se halla en el TLN "data-manipulation" y el namespace "encoding/base64", apuntando al archivo de reglas reference-base64-string.yml. Esto significa que el archivo analizado presenta la capacidad de utilizar el esquema de codificación Base64.

Ampliando el Análisis con CAPA: Resultados Detallados y Explorador Web

Para profundizar en los detalles que desencadenan las reglas de CAPA, utilizamos el parámetro -vv (very verbose), que proporciona una salida mucho más exhaustiva.

Opción Descripción Ejemplo de Sintaxis
-v o --verbose Habilita la documentación detallada de resultados. capa.exe -v .\cryptbot.bin
-vv o --vverbose Habilita la documentación de resultados muy detallada. capa.exe -vv .\cryptbot.bin

Al ejecutar:

PS C:\Users\Administrator\Desktop\capa> capa.bin -vv .\cryptbot.bin
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...

La salida será extensamente detallada y puede tardar un tiempo considerable. En un entorno de laboratorio, este archivo ya está preprocesado como cryptbot_vv.txt en C:\Users\Administrator\Desktop\capa. Puede inspeccionar su contenido con Get-Content cryptbot_vv.txt en PowerShell.

Manejar miles de líneas de texto en una terminal o editor de texto puede ser desafiante. Para una revisión más eficiente, se puede generar la salida en formato JSON con los parámetros -j y -vv:

PS C:\Users\Administrator\Desktop\capa> capa.bin -j -vv .\cryptbot.bin > cryptbot_vv.json
loading : 100%|████████████████████| 485/485 [00:00<00:00, 1108.84 rules/s]
/ analyzing program...

Este proceso también puede ser lento, por lo que el archivo cryptbot_vv.json ya está disponible en el directorio de ejemplo.

CAPA Web Explorer

Una forma excelente de explorar los resultados detallados es a través de CAPA Web Explorer, disponible tanto en línea como en una versión local (capa_web_explorer_offline.html en el escritorio de la VM de TryHackMe). Una vez cargado, busque el botón "Upload from local" en la esquina inferior izquierda y cargue el archivo cryptbot_vv.json. La interfaz web facilita la exploración de los resultados.

Veamos un ejemplo. Para la capacidad "reference anti-VM strings targeting VMWare" (y su regla reference-anti-vm-strings-targeting-vmware.yml), el explorador muestra los "features" que fueron detectados:

rule:
  meta:
    name: reference anti-VM strings targeting VMWare
    namespace: anti-analysis/anti-vm/vm-detection
    authors:
      - michael.hunhoff@mandiant.com
      - "@johnk3r"
    scopes:
      static: file
      dynamic: file
    att&ck:
      - Defense Evasion::Virtualization/Sandbox Evasion::System Checks [T1497.001]
    mbc:
      - Anti-Behavioral Analysis::Virtual Machine Detection [B0009]
    references:
      - https://github.com/LordNoteworthy/al-khaser/blob/master/al-khaser/AntiVM/VMWare.cpp
    examples:
      - al-khaser_x86.exe_
      - b83480162ede09d4aa6d4850f9faa0a4c3834152752fd04cfdb22d647aa1f825:0x17D80
  features:
    - or:
      - string: /VMWare/i
      - string: /VMTools/i
      - string: /SOFTWARE\\VMware, Inc\.\\VMware Tools/i
      - string: /VMWare/i
      - string: /VMTools/i
      - string: /SOFTWARE\\VMware, Inc\.\\VMware Tools/i
      - string: /vmnet\.sys/i
      - string: /vmmouse\.sys/i
      - string: /vmusb\.sys/i
      - string: /vm3dmp\.sys/i
      - string: /vmci\.sys/i
      - string: /vmhgfs\.sys/i
      - string: /vmmemctl\.sys/i
      - string: /vmx86\.sys/i
      - string: /vmrawdsk\.sys/i
      - string: /vmusbmouse\.sys/i
      - string: /vmkdb\.sys/i
      - string: /vmnetuserif\.sys/i
      - string: /vmnetadapter\.sys/i
      - string: /\\\\.\\HGFS/i
      - string: /\\\\.\\vmci/i
      - string: /vmtoolsd\.exe/i
      - string: /vmwaretray\.exe/i
      - string: /vmwareuser\.exe/i
      - string: /VGAuthService\.exe/i
      - string: /vmacthlp\.exe/i
      - string: /vmci/i
        description: VMWare VMCI Bus Driver
      - string: /vmhgfs/i
        description: VMWare Host Guest Control Redirector
      - string: /vmmouse/i
      - string: /vmmemctl/i
        description: VMWare Guest Memory Controller Driver
      - string: /vmusb/i
      - string: /vmusbmouse/i
      - string: /vmx_svga/i
      - string: /vmxnet/i
      - string: /vmx86/i
      - string: /VMwareVMware/i
      - string: /vmGuestLib\.dll/i
      - string: /vmGuestLib\.dll/i
      - string: /Applications\\VMwareHostOpen\.exe/i
      - string: /vm3dgl\.dll/i
      - string: /vmdum\.dll/i
      - string: /vm3dver\.dll/i
      - string: /vmtray\.dll/i
      - string: /VMToolsHook\.dll/i
      - string: /vmmousever\.dll/i
      - string: /VmGuestLibJava\.dll/i
      - string: /vmscsi\.sys/i

El explorador web resalta que la cadena "string: /VMWare/i" fue referenciada. Esto significa que CAPA detectó la presencia de esta cadena (usando expresiones regulares y condiciones de la regla) en el archivo, lo que es un indicador de que el malware busca la presencia de VMware.

Otro ejemplo es la capacidad "schedule task via schtasks" (regla schedule-task-via-schtasks.yml):

rule:
  meta:
    name: schedule task via schtasks
    namespace: persistence/scheduled-tasks
    authors:
      - 0x534a@mailbox.org
    scopes:
      static: function
      dynamic: thread
    att&ck:
      - Persistence::Scheduled Task/Job::Scheduled Task [T1053.005]
    examples:
      - 79cde1aa711e321b4939805d27e160be:0x401440
  features:
    - and:
      - match: host-interaction/process/create
      - or:
        - and:
          - string: /schtasks/i
          - string: /\/create /i
        - string: /Register-ScheduledTask /i

Aquí, el explorador señala "string: /schtasks/i" y "string: /\/create /i". Esto indica que CAPA encontró estas cadenas en el archivo, sugiriendo el uso de comandos schtasks con el parámetro /create, un método común para establecer persistencia.

Caja de Búsqueda Global

El CAPA Web Explorer incluye una caja de búsqueda global y opciones de filtrado, que son extremadamente útiles para navegar por grandes volúmenes de información, superando la experiencia de un editor de texto convencional.

Etiquetas: malware-analysis capa Static-Analysis mitre-att&ck maec

Publicado el 7-21 06:36