Ciberseguridad
Advent of Cyber día 6
Prácticas / TryHackMe
La muestra del laboratorio juega con señales de entorno y reglas YARA. Una evasión concreta no vuelve invisible al programa frente a toda detección; solo nos muestra una limitación de esa prueba.
Contexto histórico: recorrido de Advent of Cyber 2024. Las capturas y respuestas corresponden al ejercicio original.
Objetivos:
- Utilizar sandboxes para testear
- Reglas YARA para detectar patrones maliciosos
- Técnicas de evasión de malware
- Implementar una técnica de evasión para evitar las reglas de detección YARA
Herramientas y conocimientos:
- Malware
- YARA
Sandbox
Un sandbox intenta aislar la ejecución y observar el comportamiento del código. Su aislamiento depende de la implementación; no garantiza que el sistema anfitrión quede fuera de riesgo. Usualmente se instalan además algunas herramientas para monitorear el comportamiento.
La ausencia de C:\Program Files no identifica de manera fiable un sandbox. El laboratorio muestra comprobaciones de entorno; no son una regla universal para distinguir equipos reales de entornos de análisis. MITRE: evasión de virtualización y sandbox.
En C se vería de esta forma:
#include <stdio.h>
#include <stdlib.h>
void registryCheck() {
const char *registryPath = "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion";
const char *valueName = "ProgramFilesDir";
// Prepare the command string for reg.exe
char command[512];
snprintf(command, sizeof(command), "reg query \"%s\" /v %s", registryPath, valueName);
// Run the command
int result = system(command);
// Check for successful execution
if (result == 0) {
printf("Registry query executed successfully.\n");
} else {
fprintf(stderr, "Failed to execute registry query.\n");
}
}
int main() {
const char *flag = "[REDACTED]";
registryCheck();
return 0;
}
Ejecuta una consulta y revisa el código de salida de system(). La función void no retorna el valor del registro ni demuestra que detectó un sandbox.
YARA
Herramienta usada para identificar y clasificar malware basado en patrones de código. Puede evaluar cadenas, estructuras y condiciones sobre los datos que se le entregan. YARA no monitoriza comportamiento o Sysmon automáticamente por existir una regla.
Por ejemplo:
rule SANDBOXDETECTED
{
meta:
description = "Detects the sandbox by querying the registry key for Program Path"
author = "TryHackMe"
date = "2024-10-08"
version = "1.1"
strings:
$cmd= "Software\\Microsoft\\Windows\\CurrentVersion\" /v ProgramFilesDir" nocase
condition:
$cmd
}
$cmd es el identificador del patrón definido. La condición da coincidencia si aparece en los datos analizados; no prueba intención maliciosa ni escribe un log por sí sola. El programa que ejecuta YARA decide cómo usar el resultado.
Pruebas
Vamos a ejecutar powershell, dirigirnos a C:\Tools y correr el comando: .\JingleBells.ps1, esto se mantendrá ejecutado y va a monitorear los event logs. Alertará si encuentra que se buscó la cadena anterior.

Ejecutaremos un malware preconfigurado:
C:\Tools\Malware\MerryChristmas.exe.
Si todo sale bien, saltará el EDR (Endpoint detection and response) y nos dará la bandera de la pregunta 1.

Ahora, podríamos ofuscar el comando del malware, de modo que técnicamente nos saltaríamos la regla YARA. Por ejemplo la línea:
const char *registryPath = "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion";
const char *valueName = "ProgramFilesDir";
El fragmento siguiente conserva una cadena Base64. Guardarla así no ejecuta ni decodifica el comando: falta el recorrido que la interpreta. Tampoco garantiza eludir detecciones:
const char *encodedCommand = "RwBlAHQALQBJAHQAZQBtAFAAcgBvAHAAZQByAHQAeQAgAC0AUABhAHQAaAAgACIASABLAEwATQA6AFwAUwBvAGYAdAB3AGEAcgBlAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAQwB1AHIAcgBlAG4AdABWAGUAcgBzAGkAbwBuACIAIAAtAE4AYQBtAGUAIABQAHIAbwBnAHIAYQBtAEYAaQBsAGUAcwBEAGkAcgA=";

Floss
Floss es una herramienta que extrae y decodifica cadenas, especializado en malwares.
Para usarlo:
PS C:\Tools\FLOSS> floss.exe C:\Tools\Malware\MerryChristmas.exe |Out-file C:\tools\malstrings.txt
El comando hace lo siguiente:
floss.exe C:\Tools\Malware\MerryChristmas.exeEscanea las strings.|pipe similar al de linux para redirigir el outputOut-file C:\tools\malstrings.txtindica donde guardar el resultado
Con esto obtenemos lo siguiente:
La primera bandera

YARA rules en sysmon logs
Sysmon produce eventos. YARA evalúa patrones sobre archivos, memoria u otros datos que recibe de un integrador; no selecciona Event IDs de Windows por defecto. En el laboratorio un monitor conecta esas piezas. Afortunadamente con el monitor EDR que levantamos con anterioridad, ya tenemos el ID que necesitamos:
Iremos al windows event viewer -> Apllications and services logs -> Microsoft -> Windows -> Sysmon -> Operational -> Filter Current Log
Vamos a la pestaña XML y editaremos manualmente:

ParentImagenos muestra que proceso padre ejecutó cmd.exe para ejecutar el chequeo de registro. Con eso podemos ver que fue el archivoC:\Tools\Malware\MerryChristmas.exe.ParentProcessIdyProcessIdnos sirven para seguir investigando. Podriamos revisar otros logs por eventos relacionadosUseridentifica la cuenta registrada para el evento. No demuestra por sí solo sus privilegios efectivos ni que se haya creado una cuenta oculta.CommandLinequé comando se ejecutó, en detalle.UtcTimela hora y fecha en que ocurrió. Nos podría ayudar a saber en qué rango horario enfocar nuestra investigación.
Con todo este proceso hemos logrado obtener todas las respuestas como están detalladas más arriba :)
Procedamos al Advent of Cyber día 7
Fuentes: YARA, reglas y condiciones, FLOSS y Sysmon.
+----------------------------------------+
| Floure & |
| Tachibana's guild |
| [Hikari · Nozomi] |
| SEAL: sha256/12: ffe20380b81a |
| STATUS: LITURGY_IN_PROGRESS |
+----------------------------------------+