Malware Cliente Castle RAT: Tácticas, Técnicas y Oficio
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
CastleRAT es un troyano de acceso remoto observado por primera vez en marzo de 2025, distribuido en variantes Python y C compilado. Recoge metadatos del sistema, pulsaciones de teclas, contenidos del portapapeles, capturas de pantalla y detalles de dispositivos multimedia, para luego exfiltrar esta información a un servidor C2 usando cifrado RC4. El malware puede obtener cargas adicionales, iniciarlas a través de rundll32 y establecer persistencia mediante tareas programadas y métodos de bypass de UAC.
Investigación
El equipo de investigación de amenazas de Splunk realizó ingeniería inversa de las implementaciones en Python y C, mapeando sus comportamientos a técnicas MITRE ATT&CK que incluyen descubrimiento del sistema, keylogging, captura de pantalla, enumeración de dispositivos de audio/video, resolutores de caída sin regreso y duplicación de controladores para escalamiento de privilegios. La investigación enfatizó la dependencia de CastleRAT en binarios legítimos de Windows (rundll32, ComputerDefaults.exe) y su uso de www.ip-api.com para obtener la dirección IP pública.
Mitigación
Los defensores deben detectar conexiones salientes sospechosas a dominios desconocidos, patrones de tráfico cifrados con RC4, y ejecuciones de rundll32 usando cargas DLL basadas en ordinales. Monitorear tareas programadas creadas para iniciar CastleRAT, intentos de bypass de UAC aprovechando ComputerDefaults.exe y procesos lanzados con banderas de audio silenciosas del navegador. Bloquear el acceso a ubicaciones de resolutores de caída sin regreso conocidas, incluyendo páginas de Steam Community abusadas.
Respuesta
Cuando se identifica actividad de CastleRAT, aislar el host afectado, eliminar los procesos maliciosos y retirar tareas programadas o artefactos de persistencia asociados. Recopilar evidencia forense como jerarquías de procesos, argumentos de la línea de comandos, y cambios en el registro. Realizar una búsqueda exhaustiva de complementos DLL adicionales y canales C2, y luego implementar medidas de remediación y reforzamiento en todo el entorno.
mermaid graph TB %% Class definitions classDef technique fill:#e6f7ff %% Node definitions t1016_001[«<b>Técnica</b> – T1016.001 Descubrimiento de Configuración de Red del Sistema<br/>Recoge detalles del sistema como el nombre del equipo, nombre de usuario, GUID de la máquina, versión del sistema operativo y dirección IP pública para enviar al C2»] class t1016_001 technique t1115[«<b>Técnica</b> – T1115 Datos del Portapapeles<br/>Recoge datos del portapapeles de Windows y los exfiltra, a menudo usando acciones de pegado simuladas»] class t1115 technique t1036[«<b>Técnica</b> – T1036 Suplantación<br/>Nombra archivos eliminados y variables de entorno para aparentar ser componentes legítimos de Python o Java»] class t1036 technique t1056_001[«<b>Técnica</b> – T1056.001 Captura de Entrada: Keylogging<br/>Intercepta las pulsaciones de teclas, las escribe en un archivo local, cifra el archivo con RC4 y lo envía al atacante»] class t1056_001 technique t1559[«<b>Técnica</b> – T1559 Comunicación entre Procesos<br/>Genera un proceso de shell oculto con sus flujos estándar redirigidos a través de tuberías anónimas, permitiendo la ejecución remota de comandos sin consola visible»] class t1559 technique t1123[«<b>Técnica</b> – T1123 Captura de Audio<br/>Enumera dispositivos de captura de medios a través de Media Foundation»] class t1123 technique t1125[«<b>Técnica</b> – T1125 Captura de Video<br/>Enumera dispositivos de captura de medios a través de Media Foundation»] class t1125 technique t1218_011[«<b>Técnica</b> – T1218.011 Ejecución de Proxy de Binario del Sistema: Rundll32<br/>Carga función de exportación de DLL malicioso por ordinal»] class t1218_011 technique t1055_001[«<b>Técnica</b> – T1055.001 Inyección de Proceso: Inyección de Librería de Enlace Dinámico<br/>Usa rundll32.exe para cargar una DLL maliciosa»] class t1055_001 technique t1547_010[«<b>Técnica</b> – T1547.010 Ejecución de Inicio Automático en Arranque o Inicio de Sesión: Monitores de Puerto<br/>Descarga complementos DLL adicionales del C2, los descifra con RC4, y los carga»] class t1547_010 technique t1053[«<b>Técnica</b> – T1053 Tarea/Trabajo Programado<br/>Crea una tarea programada para iniciar el malware al inicio»] class t1053 technique t1113[«<b>Técnica</b> – T1113 Captura de Pantalla<br/>Captura periódicamente capturas de pantalla y las exfiltra»] class t1113 technique t1102_001[«<b>Técnica</b> – T1102.001 Servicio Web: Resolutor de Caída sin Regreso<br/>Recupera configuraciones o cargas útiles de sitios web externos benignos»] class t1102_001 technique t1127[«<b>Técnica</b> – T1127 Ejecución de Proxy de Utilidades de Desarrollador Confiable<br/>Usa ComputerDefaults.exe y duplicación de controladores para burlar el UAC y ejecutar código con privilegios elevados»] class t1127 technique t1027[«<b>Técnica</b> – T1027 Archivos u Información Ofuscada<br/>Usa cifrado RC4 para comandos y cargas de datos»] class t1027 technique t1048_001[«<b>Técnica</b> – T1048.001 Exfiltración a Través de Protocolo Alternativo: Protocolo No C2 Cifrado Simétricamente<br/>Envía datos cifrados al C2»] class t1048_001 technique t1132_001[«<b>Técnica</b> – T1132.001 Codificación de Datos: Codificación Estándar<br/>Codifica datos antes de la transmisión»] class t1132_001 technique %% Connections showing attack flow t1016_001 u002du002d>|leads_to| t1115 t1115 u002du002d>|leads_to| t1036 t1036 u002du002d>|leads_to| t1056_001 t1056_001 u002du002d>|leads_to| t1559 t1559 u002du002d>|leads_to| t1123 t1123 u002du002d>|leads_to| t1125 t1125 u002du002d>|leads_to| t1218_011 t1218_011 u002du002d>|leads_to| t1055_001 t1055_001 u002du002d>|leads_to| t1547_010 t1547_010 u002du002d>|leads_to| t1053 t1053 u002du002d>|leads_to| t1113 t1113 u002du002d>|leads_to| t1102_001 t1102_001 u002du002d>|leads_to| t1127 t1127 u002du002d>|leads_to| t1027 t1027 u002du002d>|leads_to| t1048_001 t1048_001 u002du002d>|leads_to| t1132_001
Flujo de Ataque
Detecciones
Posible Ejecución por Actividad de Tarea Programada con PowerShell (vía powershell)
Ver
Solicitud DNS de la Comunidad de Steam Realizada por un Proceso Sospechoso (vía dns_query)
Ver
IoCs (HashSha256) para detectar: Detrás de los Muros: Técnicas y Tácticas en el Malware Cliente Castle RAT
Ver
Posible Ejecución por Actividad de Tarea Programada con PowerShell (vía powershell)
Ver
Solicitud DNS de la Comunidad de Steam Realizada por un Proceso Sospechoso (vía dns_query)
Ver
Ejecución de Simulación
Requisito previo: la Comprobación Previa de Telemetría y Línea de Base debe haber pasado.
Fundamento: 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 narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a 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 de Ataque y Comandos:
- Etapa 1 – Desplegar el binario de CastleRAT:El atacante copia
CastleRAT.exeal directorio%APPDATA%del víctima para mezclarse con los datos del usuario. - Etapa 2 – Ejecutar keylogging:Usando un pequeño cargador C# en memoria, el atacante invoca
SetWindowsHookExpara instalar un gancho de teclado de bajo nivel, haciendo que Sysmon registre la API en el CallTrace del evento de creación del proceso. - Etapa 3 – Escalamiento de privilegios:El mismo cargador luego llama a
DuplicateHandlepara duplicar un manejo de un proceso del sistema con privilegios (por ejemplo,lsass.exe), permitiendo que el malware se ejecute con derechos de SYSTEM. Ambas llamadas a la API aparecen en el mismo CallTrace de Sysmon, satisfaciendo los criterios de la regla de detección.
- Etapa 1 – Desplegar el binario de CastleRAT:El atacante copia
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de CastleRAT – activa SetWindowsHookEx y DuplicateHandle # ------------------------------------------------- $castlePath = "$env:APPDATACastleRAT.exe" # 1. Soltar un complemento mínimo que cargue la carga real (simulado aquí) $payload = @" using System; using System.Runtime.InteropServices; public class Loader { [DllImport("user32.dll")] public static extern IntPtr SetWindowsHookEx(int idHook, IntPtr lpfn, IntPtr hMod, uint dwThreadId); [DllImport("kernel32.dll", SetLastError = true)] public static extern bool DuplicateHandle(IntPtr hSourceProcessHandle, IntPtr hSourceHandle, IntPtr hTargetProcessHandle, out IntPtr lpTargetHandle, uint dwDesiredAccess, bool bInheritHandle, uint dwOptions); public static void Execute() { // Instalar un gancho de teclado de bajo nivel (WH_KEYBOARD_LL = 13) SetWindowsHookEx(13, IntPtr.Zero, IntPtr.Zero, 0); // Duplicar un manejo del proceso actual (simulado) IntPtr dupHandle; DuplicateHandle((IntPtr)-1, (IntPtr)0x1234, (IntPtr)-1, out dupHandle, 0, false, 0); } } "@ # Compile el código C# sobre la marcha Add-Type -TypeDefinition $payload -Language CSharp # Copiar el proceso actual de PowerShell (actúa como CastleRAT.exe) al camino de destino Copy-Item -Path $PSCommandPath -Destination $castlePath -Force # Ejecutar la carga maliciosa [Loader]::Execute() # Mantener el proceso vivo brevemente para asegurar que Sysmon registre la pila de llamadas Start-Sleep -Seconds 5
«@
# Compile the C# code on‑the‑fly
Add-Type -TypeDefinition $payload -Language CSharp
# Copy the current PowerShell process (acts as CastleRAT.exe) to the target path
Copy-Item -Path $PSCommandPath -Destination $castlePath -Force
# Execute the malicious payload
[Loader]::Execute()
# Keep the process alive briefly to ensure Sysmon logs the call stack
Start-Sleep -Seconds 5
-
Comandos de Limpieza:
# Remover el binario simulado de CastleRAT Remove-Item -Path "$env:APPDATACastleRAT.exe" -Force # Opcionalmente descargar cualquier gancho (no necesario para el complemento, pero incluido por completitud) # No se requiere descarga explícita para la llamada SetWindowsHookEx con devolución de llamada NULA utilizada arriba.