SOC Prime Bias: Medio

14 Abr 2026 18:48

JavaScript Ofuscado en el Núcleo del Ataque

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
JavaScript Ofuscado en el Núcleo del Ataque
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Un correo electrónico de phishing entregó un archivo JavaScript malicioso dentro de un archivo RAR, comenzando una cadena de infección que termina con la ejecución del malware Formbook. Una vez lanzado, el script escribe varios archivos en la carpeta pública, establece persistencia a través de una tarea programada y comienza una carga útil de PowerShell que descifra contenido cifrado con AES para cargar un DLL .NET malicioso. Ese DLL luego se inyecta en un proceso MSBuild.exe , donde continúa su ejecución y despliega la etapa final del malware. La campaña también incorpora varios métodos de evasión de defensas, incluyendo el parcheo de ETW y AMSI para reducir la detección.

Investigación

Durante el análisis, los investigadores identificaron el dropper JavaScript cbmjlzan.JS, junto con una tarea programada configurada para ejecutar el script copiado cada quince minutos para la persistencia. También rastrearon el comando de PowerShell responsable de decodificar datos en base64 ocultos dentro de archivos de imagen. El contenido descifrado reveló un DLL .NET que se inyectó en proceso MSBuild.exe y se utilizó para entregar Formbook. Se extrajeron indicadores adicionales, incluidos rutas de archivo, nombres de tareas y material criptográfico para apoyar una investigación más profunda y el desarrollo de detecciones.

Mitigación

Las organizaciones deberían bloquear la ejecución de archivos JavaScript no confiables y scripts de PowerShell lanzados desde directorios accesibles al usuario, mientras monitorean de cerca las tareas programadas creadas con nombres inusuales o aleatorios. Se deben aplicar controles de ejecución a proceso MSBuild.exe para prevenir abusos en cadenas de malware. Las herramientas de seguridad también deberían detectar comportamientos de inyección de DLL, manipulación de ETW y AMSI, y firmas conocidas relacionadas con Formbook. La capacitación en concienciación de los usuarios sigue siendo importante para reducir el riesgo que representan los archivos adjuntos de phishing.

Respuesta

Los defensores deberían generar alertas cuando aparezca el archivo JavaScript identificado o la tarea programada relacionada, luego aislar el punto final afectado y recoger evidencia volátil para el análisis. Los archivos maliciosos deben eliminarse, la tarea programada borrarse, y el DLL inyectado examinarse en su totalidad para comprender el flujo de ejecución completo. Cualquier componente del sistema comprometido debe ser reconstruido o restaurado para garantizar la integridad. Los IOC relevantes también deben compartirse con la comunidad de seguridad más amplia para ayudar a otros a detectar actividad similar.

graph TB %% Class definitions classDef action fill:#ffcccc classDef tool fill:#99ccff classDef process fill:#ffff99 classDef file fill:#ccffcc classDef malware fill:#ffcc99 %% Nodes email_phishing[«<b>Acción</b> – <b>T1566.001 Spearphishing con adjunto</b><br/>Adjunto RAR malicioso entregado por correo electrónico»] class email_phishing action tool_wsh[«<b>Herramienta</b> – <b>Nombre</b>: Windows Script Host (JavaScript)<br/><b>Técnica</b>: T1559.001 Component Object Model»] class tool_wsh tool action_copy[«<b>Acción</b> – <b>T1559.001 Component Object Model</b><br/>El script se copia a C:\\Users\\Public\\Libraries»] class action_copy action action_sched[«<b>Acción</b> – <b>T1053 Tarea programada</b><br/>Crea una tarea programada para persistencia»] class action_sched action tool_ps[«<b>Herramienta</b> – <b>Nombre</b>: PowerShell<br/><b>Técnica</b>: T1059.001 Intérprete de comandos»] class tool_ps tool action_decode[«<b>Acción</b> – <b>T1027.004 Compilar tras entrega</b> & <b>T1140 Desofuscar/decodificar</b><br/>Decodificación Base64 y descifrado AES»] class action_decode action action_patch[«<b>Acción</b> – <b>T1027.005 Eliminación de indicadores</b><br/>Parches en vivo de ETW y AMSI»] class action_patch action file_dll[«<b>Archivo</b> – <b>Nombre</b>: Orio.png (contiene DLL .NET cifrada)<br/><b>Técnica</b>: Payload oculto»] class file_dll file process_msbuild[«<b>Proceso</b> – <b>Nombre</b>: msbuild.exe<br/><b>Técnica</b>: T1127.001 Ejecución proxy de herramientas de desarrollo»] class process_msbuild process action_inject[«<b>Acción</b> – <b>T1055.001 Inyección de procesos</b><br/>Inyecta DLL descifrada en msbuild.exe»] class action_inject action malware_formbook[«<b>Malware</b> – <b>Nombre</b>: Formbook<br/><b>Fuente</b>: Payload incrustado en Brio.png»] class malware_formbook malware %% Edges / Flow email_phishing –>|delivers| tool_wsh tool_wsh –>|uses COM to| action_copy action_copy –>|leads to| action_sched tool_wsh –>|launches| tool_ps tool_ps –>|executes| action_decode tool_ps –>|applies| action_patch action_decode –>|produces| file_dll action_patch –>|prepares environment for| file_dll file_dll –>|loaded by| process_msbuild process_msbuild –>|receives| action_inject action_inject –>|extracts final payload from| malware_formbook

Flujo de Ataque

Ejecución de Simulación

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

Justificació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.

  • Narrativa de Ataque y Comandos:
    Un atacante que ha violado una cuenta de bajo privilegio desea descargar una carga maliciosa que está almacenada como una cadena Base64 en un repositorio de scripts comprometido. Para evitar la detección, el atacante crea una línea de comando única en PowerShell que (1) decodifica la cadena Base64, (2) la invoca a través de iex, y (3) crea un objeto AES para descifrar más datos incrustados. La línea de comando exacta se escribe para coincidir con los literales de la regla.

    powershell
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('REPLACED_STRING'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    
    • El atacante reemplaza REPLACED_STRING con una carga legítima Base64 después de eliminar un marcador conocido (VFHDVXDJCF).
    • The -Noexit -nop -c los interruptores suprimen las solicitudes e ignoran la política de ejecución, coincidiendo con la condición de detección.
    • The $aes_var el nombre de la variable se mantiene literal para satisfacer la segunda cláusula de selección.
  • Script de Prueba de Regresión: El siguiente script de PowerShell reproduce la línea de comando exacta de una manera controlada, asegurando que el SIEM reciba la telemetría idéntica.

    # Script de Prueba de Regresión – activa la detección
    $payload = "U2FtcGxlIEJhc2U2NCBTdHJpbmc="   # "Cadena Muestra Base64"
    $marker  = "VFHDVXDJCF"
    $obfuscated = $payload.Replace($marker, "")   # simular el .Replace usado en la detección
    $command = @"
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('${obfuscated}'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    "@
    
    # Ejecutar la línea de comando elaborada
    Invoke-Expression $command
  • Comandos de Limpieza: Eliminar cualquier objeto AES residual y detener la sesión de PowerShell engendrada.

    # Limpieza – terminar el proceso hijo de PowerShell si aún está corriendo
    Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.Path -like "*WindowsPowerShellv1.0powershell.exe" } | Stop-Process -Force
    
    # Opcionalmente borrar cualquier variable temporal
    Remove-Variable -Name payload, marker, obfuscated, command -ErrorAction SilentlyContinue