SOC Prime Bias: Crítico

18 Jun 2026 14:32 UTC

ESET Investiga actualización en el arsenal de FishMonger: SprySOCKS para Windows

Author Photo
SOC Prime Team linkedin icon Seguir
ESET Investiga actualización en el arsenal de FishMonger: SprySOCKS para Windows
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Los investigadores de ESET descubrieron dos nuevas variantes de Windows del backdoor SprySOCKS, llamadas WIN_DRV y WIN_PLUS, que están vinculadas al grupo de amenazas FishMonger. La versión WIN_DRV utiliza un controlador de kernel para lograr un sigilo mejorado, incluida la capacidad de ocultar conexiones de red, procesos y archivos. Ambas variantes soportan varios protocolos de comunicación y proporcionan un amplio conjunto de comandos para el control del sistema y el robo de datos.

Investigación

La investigación se basó en muestras de malware descubiertas a través de VirusTotal y la telemetría de ESET, revelando actividad que abarca desde 2023 hasta 2024. Los investigadores analizaron las cadenas de ejecución completas, incluida la carga de DLL, la carga de controladores de kernel a través de DriverLoader y RawWNPF, y la inyección de procesos utilizando técnicas de doppelgänging. El estudio también desveló patrones de comunicación de comando y control y claves de encriptación codificadas compartidas entre múltiples componentes.

Mitigación

Las organizaciones deberían priorizar parches para aplicaciones expuestas a Internet para reducir el riesgo de compromiso inicial a través de vulnerabilidades N-day. La aplicación estricta de firmas de controladores y la monitorización de instalaciones no autorizadas de controladores de kernel son esenciales. Los defensores también deberían monitorear tareas programadas sospechosas, cambios en el registro bajo Image File Execution Options y registros de procesadores de impresión inusuales.

Respuesta

Si se detectan estas amenazas, los sistemas afectados deberían ser aislados inmediatamente para detener movimientos laterales adicionales o robo de datos. Los investigadores deberían realizar una revisión forense detallada para determinar el vector de intrusión original y el alcance completo del compromiso, prestando especial atención a la persistencia a nivel de kernel. Los registros de red también deberían revisarse en busca de comunicación con infraestructuras de comando y control conocidas, mientras que los cambios en el sistema, como nuevos servicios o claves de registro alteradas, deberían ser auditados.

Flujo de Ataque

## Ejecución de Simulación

Requisito previo: La Verificación Pre-vuelo de Telemetría y Línea de Base debe haber sido aprobada.

Justificación: 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 TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.

  • Narrativa de Ataque & Comandos: El adversario ha desplegado con éxito el backdoor SprySOCKS en un host comprometido de Windows. Para establecer un canal de comando y control, el malware abre un socket de escucha en el puerto 53781. Para asegurar que la comunicación sea reconocida por su servidor C2 personalizado, el malware inyecta el valor mágico hex 0xACACBCBC en los paquetes de inicio de sesión iniciales. Esto imita el comportamiento específico del protocolo del grupo FishMonger para facilitar la comunicación confiable a través de tráfico interceptado o desviado.

  • Guion de Prueba de Regresión:

    # Guion de Simulación: Generación de Artefactos de Red de SprySOCKS
    # Este guion imita el comportamiento de red del backdoor SprySOCKS.
    
    $TargetPort = 53781
    $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC)
    $Listener = [System.Net.Sockets.TcpListener]$TargetPort
    
    try {
        Write-Host "[+] Iniciando escucha en puerto $TargetPort..." -ForegroundColor Cyan
        $Listener.Start()
        $Client = $Listener.AcceptTcpClient()
        $Stream = $Client.GetStream()
    
        Write-Host "[+] Conexión establecida. Enviando valor mágico $MagicValue..." -ForegroundColor Yellow
        # Inyectando el valor mágico en el flujo para activar la lógica 'selection1'
        $Stream.Write($MagicValue, 0, $MagicValue.Length)
    
        Start-Sleep -Seconds 5
    }
    catch {
        Write-Error "[-] Simulación fallida: $($_.Exception.Message)"
    }
    finally {
        Write-Host "[+] Limpiando conexiones..." -ForegroundColor Cyan
        $Stream.Close()
        $Client.Close()
        $Listener.Stop()
    }
  • Comandos de Limpieza:

    # Asegúrese de que no queden escuchadores deshonestos activos
    Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection
    Write-Host "[+] Limpieza completa." -ForegroundColor Green