Investigadores de Sucuri, Palo Alto Networks Unit 42 y Expel han destapado una oleada coordinada de ataques que comprometen sitios WordPress para inyectar JavaScript malicioso, redirigir a páginas “ClickFix” (retos falsos tipo verificación de navegador) y, en su versión más avanzada, cargar el malware desde la caché del navegador sin descargar archivos visibles. El objetivo: engañar al usuario para que ejecute comandos (PowerShell/Run/File Explorer) o active cargas embebidas, evitando controles de seguridad y ampliando el alcance a Windows y macOS (con stealers como DeerStealer y Odyssey Stealer).
Qué está pasando
- Vector inicial – WordPress.
Sucuri detectó que sitios WordPress servían JavaScript de terceros tras modificaciones en el archivo de temafunctions.php
. El código hacía un POST abrazilc[.]com
, que devolvía un payload dinámico con:- Un script remoto (
porsasystem[.]com/6m9x.js
→…/js.php
) para redirigir al usuario. - Un iframe 1×1 oculto que imitaba rutas de Cloudflare (p. ej.,
cdn-cgi/challenge-platform/scripts/jsd/main.js
) para camuflar la actividad.
- Un script remoto (
- Infra TDS.
El dominioporsasystem[.]com
aparece ligado a Kongtuke/404 TDS, un sistema de distribución de tráfico usado para encadenar redirecciones y entregar lures ClickFix. - Kits “ClickFix” listos para usar.
Unit 42 detalla el kit IUAM ClickFix Generator, que monta landing pages que simulan retos de verificación (Cloudflare/CDN) y manipulan el portapapeles o OS detection para servir malware compatible. Microsoft ya había alertado de constructores comerciales (Impact Solutions, etc.) que prometen saltarse Defender SmartScreen, persistencia y bypass AV. - Nuevo truco: “cache smuggling”.
Expel describe una variante que no descarga ficheros ni abre nuevas conexiones desde el script. En su lugar:- La página “ClickFix” (en el caso observado, disfrazada de Fortinet VPN Compliance Checker) convence al usuario de lanzar Explorador y pegar un comando (FileFix/RunFix).
- Un PowerShell oculto (vía
conhost.exe
) extrae desde la caché del navegador un supuesto JPEG ya guardado cuando se visitó la página; en realidad contiene un ZIP con la carga, que se descomprime y persiste por tarea programada. - Ningún archivo se “descarga” explícitamente durante la ejecución, lo que evita detecciones basadas en eventos de red/descarga.
Indicadores y técnicas observadas
Principales IoCs reportados
Tipo | Valor | Comentario |
---|---|---|
Dominio C2/TDS | porsasystem[.]com | Referenciado en 17 sitios; parte de Kongtuke/404 TDS |
Script remoto | hxxps://porsasystem[.]com/6m9x.js | Redirecciones / carga de JS |
Loader/control | brazilc[.]com | Responde con payload dinámico tras POST desde functions.php |
Rutas señuelo | cdn-cgi/challenge-platform/scripts/jsd/main.js | Imitación de recursos Cloudflare en iframe 1×1 |
Bloquee/monitorice dominios y YARA/Sigma sobre patrones de rutas cdn-cgi falseadas embebidas en iframes invisibles.
Mapeo MITRE ATT&CK (alto nivel)
- Initial Access: T1190 (Exploited Web Component / plugin/theme vulnerable).
- Defense Evasion: T1140 (decode/obfuscate), T1036 (masquerade con rutas Cloudflare), T1027.010 (contenido en cache – smuggling).
- Command Execution (User): T1204 (User Execution) → patrones ClickFix/FileFix/RunFix.
- Persistence: T1053.005 (Scheduled Task), T1547 (startup entries).
- Collection/Exfil: T1056/T1114 (clipboard/email, según stealer).
Cómo se comprometen los WordPress
- Vulnerabilidades en plugins/temas o credenciales débiles → escritura en
functions.php
(o drop-ins similares). - Inyección que incluye/require un loader remoto encubierto con menciones a Google Ads (para “blanquear” el contenido).
- Redirecciones selectivas (geolocalización/UA) y iframes ocultos que simulan recursos de CDN.
- en los casos más modernos, sin descarga visible: la carga se prefetch/cachea como imagen/asset y luego se desempaqueta localmente.
Recomendaciones inmediatas para propietarios de sitios WordPress
1) Contención rápida
- Ponga el sitio en modo mantenimiento y bloquee tráfico sospechoso con WAF (Wordfence/Sucuri/Cloudflare).
- Snapshot (ficheros + BD) para análisis forense.
2) Búsqueda de inyecciones
- Revise
wp-content/themes/*/functions.php
,wp-content/plugins/*
, y archivos mu-plugins (wp-content/mu-plugins
). - Busque inclusiones remotas y evals ofuscados:
grep -Rin --include="*.php" -E "base64_decode|eval\(|gzuncompress|str_rot13|file_get_contents\(|curl_init\(|porsasystem|brazilc|cdn-cgi/challenge" ./wp-content
- Compare con checksums del tema/plug-ins originales; reemplace por versiones limpias.
3) Cuentas y tareas sospechosas
- Liste usuarios admin creados recientemente; rotación de passwords y roles.
- Examine wp_cron y hooks anómalos; auditoría de .htaccess/web.config.
4) Endurecimiento
- Actualice núcleo, temas, plugins (solo repos confiables).
- Desinstale lo innecesario; auto-updates y bloqueo de edición desde panel:
// wp-config.php define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); // si el proceso de despliegue lo permite
- CSP/SRI para JS de terceros y Subresource Integrity en assets críticos.
- 2FA para administradores, IP allowlist para
/wp-admin
, y WAF a nivel CDN.
5) Monitorización
- File Integrity Monitoring (FIM) y alertas por cambios en PHP.
- Server-side scanning diario y backups inmutables (3-2-1).
Detección en endpoints y red
- EDR: alerte sobre PowerShell lanzado desde
conhost.exe
con parámetros ofuscados y cadenas[System.Net.WebClient]
,Expand-Archive
, tareas programadas recién creadas. - Proxy/DLP: reglas para Content-Type
image/jpeg
con tamaños atípicos que contienen estructura ZIP (magic bytes50 4B 03 04
). - DNS/Proxy: blocklists para
porsasystem[.]com
,brazilc[.]com
y dominios cdn-cgi look-alike. - Sigma (idea rápida):
title: Suspicious Conhost-Spawned PowerShell logsource: { category: process_creation, product: windows } detection: selection: ParentImage|endswith: '\conhost.exe' Image|endswith: '\powershell.exe' condition: selection level: high
Consejos para usuarios (y equipos de help desk)
- Desconfíe de “verificaciones de navegador”, “comprobadores de VPN” o “Cloudflare checks” que le pidan copiar/pegar comandos en Ejecutar/Explorador/Terminal.
- No pegue comandos desde páginas web. Si ya lo hizo, desconecte, avise a TI y solicite revisión EDR.
- Revise tareas programadas creadas tras el incidente y limpie caché del navegador.
- En macOS, vigile ejecuciones de binarios no firmados tras visitar páginas “ClickFix”.
Por qué “cache smuggling” preocupa
Los controles tradicionales (proxy/AV) miran descargas o conexiones salientes. Si la carga maliciosa ya está en caché como un JPEG y el script local solo la extrae y ejecuta, se evitan varios puntos de intercepción. Mitigar esto exige:
- CSP estricta y aislar orígenes externos.
- Inspection a nivel endpoint (contenido real de archivos en caché) y reglas de DLP/AV para múltiples firmas (ZIP dentro de
image/*
). - Educación contra FileFix/ClickFix/RunFix: la ingeniería social sigue siendo el detonante.
Checklist rápido para CISOs / equipos web
- Inventario WordPress (propietarios, versión, plugins, hardening).
- WAF + CDN con bot-management y bloqueo de iframes ocultos no autorizados.
- FIM + EDR con casos de uso para cache-smuggling y PowerShell LOLBin.
- Playbooks de respuesta: takedown rápido, revocación de credenciales, forensics, notificación a usuarios si hubo redirecciones.
- Simulacros de phishing ClickFix y campañas de concienciación (“nunca pegue comandos de una web”).
En una frase
La combinación de sitios WordPress comprometidos, kits “ClickFix” listos para usar y el nuevo truco de “cache smuggling” baja el listón técnico del delito y complica la defensa. La respuesta pasa por endurecer WordPress, vigilar endpoints y, sobre todo, cortar la cadena donde empieza: no ejecutar jamás comandos sugeridos por páginas “de verificación”.
vía: thehackernews y Sucuri