SOC Prime Bias: Alto

01 Jul 2026 06:50 UTC

LokiBot Después de una Década: Análisis de una Campaña Reciente

Author Photo
SOC Prime Team linkedin icon Seguir
LokiBot Después de una Década: Análisis de una Campaña Reciente
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

LokiBot es un infostealer de larga duración diseñado para recopilar credenciales de navegadores, billeteras de criptomonedas y otras aplicaciones sensibles. Esta reciente campaña se basa en una cadena de ejecución de múltiples etapas que comienza con un adjunto de JScript ofuscado entregado a través de malspam. El malware utiliza inyección de procesos y hashing de API para reducir la visibilidad mientras envía datos robados a su infraestructura de comando y control.

Investigación

La investigación examinó una muestra de LokiBot de múltiples etapas y rastreó su progresión desde un adjunto de JScript a un cargador de PowerShell, luego a un inyector de .NET, y finalmente al payload de LokiBot. Los analistas identificaron el uso de protección ConfuserEx, desencriptación basada en XOR y técnicas de carga reflejada a lo largo de la cadena. El estudio también describió el enfoque personalizado de hashing de API del malware y un método de persistencia defectuoso basado en el registro.

Mitigación

Las organizaciones deben implementar un fuerte filtro de correo electrónico para bloquear adjuntos de JScript maliciosos y malspam antes de la entrega. Monitorear procesos secundarios sospechosos generados por wscript.exe and powershell.exe también es esencial. Además, restringir la ejecución de ensamblados de .NET no confiables y observar cambios inusuales en las claves Run de Windows puede ayudar a reducir la exposición.

Respuesta

Si se detecta LokiBot, aísle inmediatamente el endpoint afectado para detener el robo de datos adicional y la comunicación de comando y control. Los investigadores deben realizar un análisis forense para determinar el punto de entrada original y evaluar el alcance del compromiso de credenciales. Todas las cuentas accedidas desde el host infectado deben someterse a un restablecimiento completo de contraseña, y el entorno debe ser escaneado en busca de artefactos relacionados de JScript y PowerShell.

Flujo de Ataque

Ejecución de Simulación

Requisito Previo: La Verificación Previa de Telemetría y Línea Base 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 tienen como objetivo 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 y Comandos de Ataque: El adversario ha obtenido acceso inicial exitosamente a través de un archivo JScript. Para evitar soltar un .dll archivo detectable en el disco, ejecutan un comando de PowerShell que contiene una cadena codificada en Base64. Este script, una vez decodificado, utiliza la Reflexión .NET capacidad para llamar [System.Reflection.Assembly]::Load para obtener una carga maliciosa directamente en la memoria del proceso actual. Este enfoque «sin archivos» es una característica distintiva de LokiBot.

  • Script de Prueba de Regresión:

    # Script de Simulación de LokiBot
    # Este script está diseñado para coincidir con las cadenas exactas definidas en la regla de detección.
    
    # 1. Simular el componente Base64
    $encodedCommand = "script PowerShell codificado en Base64"
    $dummyPayload = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("CargaFalsa"))
    
    # 2. Simular el componente de Carga de Ensamblado utilizando la cadena exacta de la regla de detección
    # Usamos un try/catch porque esta es una simulación y la "carga" no es un ensamblado real.
    try {
        Write-Host "Ejecutando etapa codificada..."
        Write-Output $encodedCommand
    
        # Esta línea es el principal activador para la regla de detección
        $trigger = "[System.Reflection.Assembly]::Load"
        Write-Host "Intentando cargar ensamblado a través de: $trigger"
    
        # Lo llamamos vía Invoke-Expression para asegurar que aparezca en el ScriptBlockText
        Invoke-Expression "Write-Host 'Activando: $trigger'"
    }
    catch {
        Write-Error "La simulación falló al ejecutar la cadena de activación."
    }
  • Comandos de Limpieza:

    # No se realizan cambios permanentes con el script de simulación.
    # Simplemente limpiando la consola y asegurándonos de que no existan procesos residuales.
    Clear-Host
    Write-Host "Limpieza de simulación completa. No se dejaron archivos."