floure.ARCHIVO / Ciberseguridad
← Volver a la colección3 MIN DE LECTURA

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.

Advent of Cyber día 5

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:


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 output
  • Out-file C:\tools\malstrings.txt indica 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:

  • ParentImage nos muestra que proceso padre ejecutó cmd.exe para ejecutar el chequeo de registro. Con eso podemos ver que fue el archivo C:\Tools\Malware\MerryChristmas.exe.
  • ParentProcessId y ProcessId nos sirven para seguir investigando. Podriamos revisar otros logs por eventos relacionados
  • User identifica la cuenta registrada para el evento. No demuestra por sí solo sus privilegios efectivos ni que se haya creado una cuenta oculta.
  • CommandLine qué comando se ejecutó, en detalle.
  • UtcTime la 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            |
+----------------------------------------+

Conexiones

Abrir red completa ↗
✳

Fin del apunte

Seguir explorando ↗