Dentro del Banana RAT de SHADOW-WATER-063: Del servidor de construcción al fraude bancario
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Banana RAT es un troyano bancario utilizado por el actor de amenazas motivado por ganancias financieras SHADOW-WATER-063 para robar credenciales y llevar a cabo transacciones fraudulentas dirigidas a bancos brasileños. El malware se entrega a través de un archivo por lotes malicioso y depende de la ofuscación en capas de PowerShell, la ejecución en memoria y el cifrado AES-256 para evitar la detección. Mantiene la persistencia a través de una tarea programada oculta y se comunica con su servidor de comando y control a través de HTTP y TLS. La campaña también cuenta con una capacidad de interceptación de QR de Pix dirigida al ecosistema de pagos instantáneos de Brasil.
Investigación
Los analistas de Trend Micro MDR obtuvieron tanto las herramientas del lado del servidor como las cargas útiles del lado del cliente, lo que les permitió reconstruir la cadena completa de ataque desde un ofuscador polimórfico basado en FastAPI hasta el iniciador de PowerShell y la etapa final de compilación en memoria de C#. Su análisis descubrió la infraestructura del atacante, el flujo de trabajo de ofuscación y un conjunto de capacidades que incluían transmisión de pantalla, manipulación de entrada y alteración de códigos QR. La operación se vinculó con el ecosistema más amplio de troyanos bancarios Tetrade, aunque los investigadores notaron varias diferencias arquitectónicas.
Mitigación
Los defensores deben bloquear la solicitud inicial HTTP GET al punto de entrega del malware en el borde de la red, monitorear el comportamiento específico de la tarea programada oculta y aplicar controles estrictos sobre PowerShell y csc.exe ejecución. Las defensas en el punto final también deben detectar actividad sin archivos de PowerShell, carga de DLL en memoria y creación de archivos en rutas engañosas como ProgramDataMicrosoftDiagnosisETW. La capacitación sobre concienciación del usuario también debe abordar archivos por lotes maliciosos y enlaces de phishing distribuidos a través de canales como WhatsApp.
Respuesta
Si se detecta actividad de Banana RAT, aísle el punto final afectado inmediatamente, termine el proceso malicioso de PowerShell, elimine la tarea programada oculta y elimine cualquier archivo dejado en directorios públicos y disfrazados. Los investigadores deben recopilar la línea de comando completa de PowerShell, preservar cualquier artefacto de compilación de C# y revisar el tráfico de red conectado a los dominios de comando y control. Las credenciales expuestas deben restablecerse, y los equipos financieros deben ser alertados para buscar signos de actividad bancaria fraudulenta.
"graph TB %% Definiciones de clases classDef technique fill:#99ccff %% Definiciones de nodos step_A["<b>Técnica</b> – <b>T1204.001 Ejecución de Usuario</b>: Enlace malicioso entregado vía WhatsApp o correo electrónico para descargar el archivo por lotes."] class step_A technique step_B["<b>Técnica</b> – <b>T1027.014 Archivos Ofuscados</b>: El archivo por lotes ejecuta código PowerShell ofuscado."] class step_B technique step_C["<b>Técnica</b> – <b>T1027.016 Inserción de Código Basura</b>: Nueve capas de ofuscación personalizadas, renombrado de variables, XOR, AES."] class step_C technique step_D["<b>Técnica</b> – <b>T1036.008 Suplantación</b>: Deja caer msedge.txt en Documentos Públicos imitando la ruta de Microsoft ETW."] class step_D technique step_E["<b>Técnica</b> – <b>T1564.005 Ocultar Artefactos</b>: Escribe archivo malicioso en ProgramData Microsoft Diagnosis ETW para mezclarse con archivos legítimos."] class step_E technique step_F["<b>Técnica</b> – <b>T1620 Carga de Código Reflectiva</b>: Usa csc.exe para compilar DLLs de C# en memoria."] class step_F technique step_G["<b>Técnica</b> – <b>T1134.001 Suplantación de Token</b>: Duplica el token del SISTEMA y lanza PowerShell en sesión interactiva."] class step_G technique step_H["<b>Técnica</b> – <b>T1134.002 Crear Proceso con Token</b>: Lanza un proceso con el token duplicado."] class step_H technique step_I["<b>Técnica</b> – <b>T1571 Puerto No Estándar</b>: Comunicación C2 sobre puerto HTTPS 443 usando protocolo personalizado AES-256-CBC."] class step_I technique step_J["<b>Técnica</b> – <b>T1048.002 Exfiltración sobre Protocolo Alternativo</b>: Exfiltración de datos cifrados usando protocolo asimétrico cifrado non-C2."] class step_J technique step_K["<b>Técnica</b> – <b>T1140 Desofuscación y Decodificación</b>: PowerShell descifra la carga envuelta en AES en memoria."] class step_K technique step_L["<b>Técnica</b> – <b>T1659 Inyección de Contenido</b>: PowerShell utiliza Net.WebClient o Start-BitsTransfer para obtener la carga del servidor web del atacante."] class step_L technique step_M["<b>Técnica</b> – <b>T1566 Phishing</b>: Enlace malicioso entregado vía WhatsApp/correo electrónico para descargar el archivo por lotes."] class step_M technique %% Conexiones step_A –>|conduce_a| step_B step_B –>|conduce_a| step_C step_C –>|conduce_a| step_D step_D –>|conduce_a| step_E step_E –>|conduce_a| step_F step_F –>|conduce_a| step_G step_G –>|conduce_a| step_H step_H –>|conduce_a| step_I step_I –>|conduce_a| step_J step_J –>|conduce_a| step_K step_K –>|conduce_a| step_L step_L –>|conduce_a| step_M "
Flujo de Ataque
Detecciones
Tarea Programada Sospechosa (vía auditoría)
Ver
Llamar Métodos SOSPECHOSOS de .NET desde PowerShell (vía PowerShell)
Ver
La Posibilidad de Ejecución a Través de Líneas de Comando de PowerShell Ocultas (vía cmdline)
Ver
Cadenas Sospechosas de PowerShell (vía PowerShell)
Ver
Llamar Funciones API de Windows Sospechosas desde PowerShell (vía PowerShell)
Ver
Archivos Sospechosos en el Perfil Público del Usuario (vía file_event)
Ver
Descarga de Archivo Sospechoso IP Directa (vía proxy)
Ver
IOCs (HashSha256) para detectar: Dentro del Banana RAT de SHADOW-WATER-063: Del Servidor de Construcción al Fraude Bancario
Ver
IOCs (SourceIP) para detectar: Dentro del Banana RAT de SHADOW-WATER-063: Del Servidor de Construcción al Fraude Bancario
Ver
IOCs (DestinationIP) para detectar: Dentro del Banana RAT de SHADOW-WATER-063: Del Servidor de Construcción al Fraude Bancario
Ver
Detección de Comunicación C2 de SHADOW-WATER-063 [Conexión de Red de Windows]
Ver
Detección de Acceso Inicial y Ejecución del Banana RAT [Windows PowerShell]
Ver
Ejecución de Simulación
Prerequisito: La Verificación de Telemetría y Línea Base Previa debe haber pasado.
Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (comunicación C2) diseñada para activar la regla de detección. Los comandos y la narrativa reflejan directamente las TTPs identificadas y buscan generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
El actor de amenazas ha desplegado el Banana RAT en el punto final de la víctima. Para mantener la persistencia y recibir comandos, el RAT inicia comunicación saliente hacia su infraestructura C2 con codificación fija:- Beacon HTTP (IP 24.199.90.58:80): Abre un socket TCP sin procesar y envía una solicitud HTTP GET mínima.
- Beacon HTTPS (IP 162.141.111.227:443): Usa
Invoke-WebRequestcon TLS al servidor C2. - Beacon Basado en Dominio: Realiza un consulta DNS para
c.windowsk-cdn.com, que el C2 monitoriza para el volumen de consultas.
Las tres acciones se ejecutan secuencialmente para maximizar la oportunidad de impactar al menos en una opción en la regla Sigma.
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de Comunicación C2 de Banana RAT (TC-20260522-A1B2C) # ------------------------------------------------- # 1. Beacon HTTP a 24.199.90.58:80 try { $httpClient = New-Object System.Net.Sockets.TcpClient("24.199.90.58",80) $stream = $httpClient.GetStream() $writer = New-Object System.IO.StreamWriter($stream) $writer.WriteLine("GET / HTTP/1.1") $writer.WriteLine("Host: 24.199.90.58") $writer.WriteLine("Connection: Close") $writer.WriteLine() $writer.Flush() $reader = New-Object System.IO.StreamReader($stream) $response = $reader.ReadToEnd() $writer.Dispose() $reader.Dispose() $httpClient.Close() } catch { Write-Error "HTTP beacon failed: $_" } # 2. Beacon HTTPS a 162.141.111.227:443 try { Invoke-WebRequest -Uri "https://162.141.111.227" -UseBasicParsing -TimeoutSec 10 } catch { Write-Error "HTTPS beacon failed: $_" } # 3. Consulta DNS para dominio malicioso try { Resolve-DnsName -Name "c.windowsk-cdn.com" -Type A -ErrorAction Stop } catch { Write-Error "DNS query failed: $_" } # Fin de la simulación -
Comandos de Limpieza:
# ------------------------------------------------- # Limpieza – eliminar cualquier socket restante o archivos temporales # ------------------------------------------------- # La simulación no crea artefactos persistentes. # Asegúrese de que no queden conexiones de red residuales: Get-NetTCPConnection -RemotePort 80,443 ` | Where-Object {$_.RemoteAddress -in @("24.199.90.58","162.141.111.227")} ` | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Limpiar caché de DNS para evitar afectar pruebas subsecuentes Clear-DnsClientCache