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 comandocapa.exe .\cryptbot.bin)cryptbot_vv.txt(salida del comandocapa.exe -vv .\cryptbot.bin)cryptbot_vv.json(salida del comandocapa.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.