El pasado mes de marzo, Roberto Amado y un servidor realizamos una charla en la RootedCON 2020 titulada Sandbox fingerprinting: Evadiendo entornos de análisis. Esta se componía de dos partes, una primera en la que tratamos de clasificar entornos públicos de sandbox para análisis de malware, una segunda centrada demostrar si era posible identificar e incluso atacar a quien se encontraba analizando nuestras muestras. Dicha segunda parte es la que ocupará esta entrada.
Introducción
Durante los ejercicios de Red Team siempre es importante conocer a quién te enfrentas, sus medidas de seguridad y quien las gestiona. En este punto nos planteamos si sería viable llegar hasta el Blue Team y conocer si nuestros artefactos habían sido identificados y si seguían siendo útiles en el ejercicio.
Con este planteamiento nos centramos en las webs de análisis de malware como VirusTotal, Any.run, Hybrid Analysis… Que son consultadas continuamente por analistas de todo el mundo para buscar información sobre muestras o analizarlas. Los resultados se muestran en la interfaz web de dichas herramientas, mostrando información útil para los analistas como pueden ser direcciones IP o dominios a los que conecta, comandos ejecutados, payloads introducidos y un largo etcétera dedicado a facilitar la vida de los defensores.
Con esta información en mente, nuestro planteamiento fue encontrar vulnerabilidades en la interfaz web de estos servicios y así poder identificar a los usuarios. Para esta tarea los Cross-site scripting (XSS) fueron la opción perfecta.
Pruebas
Para llevar a cabo las pruebas utilizamos XSS Hunter que nos permitía realizar acciones más potentes que un simple alert con JavaScript. Los payloads que generamos con ella nos permitían obtener información de quien había ejecutado el código JavaScript, realizar capturas de pantalla o incluso opciones más avanzadas como inyectar código JavaScript arbitrario al ejecutarse el payload.
Con los XSS teníamos la vulnerabilidad que íbamos a explotar, pero ¿cómo hacerlo? Para ello desarrollamos un artefacto en C# en el que introdujimos los payloads de XSS Hunter con distintas aproximaciones como llamadas de PowerShell, mensajes que se mostraban por terminal o claves de registro. Nuestra finalidad era que dichas cadenas fueran representadas en la interfaz web del navegador.
Acto seguido subimos la muestra a VirusTotal y esperamos resultados.
La primera sandbox en analizarlo fue VenusEye. Si bien la interfaz integrada en VirusTotal no mostraba rastro de nuestros payloads, cuando se accedía a la opción “Full report” en la sección de “Behaviour” la página web ejecutaba los múltiples payloads haciendo numerosas peticiones a nuestra instancia de XSS Hunter:
Un par de semanas después del primer análisis la muestra fue analizada por otra sandbox, Tencent Habo. El resultado fue, como en el caso anterior, que en la sección de “Full report” se ejecutaban nuestros payloads:
Pasaron unos días y la muestra se analizó otra vez con resultados similares. En esta ocasión el análisis lo realizó SNDBOX:
Un par de días más tarde vimos que estaba siendo analizada por otra sandbox, VirusTotal Jujubox Sandbox cuyos resultados fueron como los anteriores:
Después de este último análisis ya no tuvimos más noticias de VirusTotal, con lo que pasamos a otro servicio como Any.run. En este caso la vulnerabilidad se encontraba en la sección de Processes Graph. Aunque un usuario que accediese a la página no encontraría nada fuera de lugar, al observar los recursos que cargaba la interfaz del servicio se observaban numerosas peticiones solicitando nuestro script de XSS Hunter:
Una vez concluidas las pruebas en estos servicios, identificamos que Google había indexado referencias a nuestro subdominio en XSS Hunter. Google enlazaba nuestra muestra en la plataforma Open Threat Exchange de Alienvault. Al acceder observamos que también era vulnerable como las anteriores pues también hacia solicitudes a nuestro subdominio en XSS Hunter.
Con las pruebas realizadas, notificamos a todos los afectados para que aplicaran las soluciones con la mayor presteza posible. No obstante, cabe destacar a Any.run y Alienvault cuyos tiempos de respuesta fueron muy rápidos.
Resultados
Una vez finalizadas las pruebas, mientras recopilábamos la información para la charla de la Rooted, identificamos en los logs de XSS Hunter miles de peticiones procedentes de la ejecución de nuestras muestras con algunos matices interesantes. Muestra de ello son las siguientes capturas asociadas a empresas chinas encargadas de analizar y clasificar todas las muestras que encuentran en servicios como los analizados:
En cuanto a las peticiones, las siguientes gráficas muestran los resultados. La primera muestra las totales, mientras que la segunda las agrupa para mostrar resultados más realistas (puesto que la muestra tiene varios payloads XSS). En ellos se aprecia una gran ventaja por parte de conexiones Chinas respecto al resto del mundo, demostrando la cantidad de recursos que invierte dicho país en ciberseguridad.
Con lo detallado en esta entrada vemos un posible vector para identificar, y quizás atacar, a los analistas pese a que las muestras se analicen y alojen en servicios de terceros.
El siguiente diagrama plantea un escenario en el que un Blue Team intercepta un artefacto de un Red Team. Los defensores lo analizan en un servicio externo (o interno) que tiene (o no) acceso a Internet. Las vulnerabilidades descritas en esta entrada se explotarían al representar los resultados de dicho análisis en el navegador del analista (muy probablemente en la red interna del Blue Team). En ese momento sería viable atacar a los defensores (herramientas como BeEF serían interesantes en este entorno).
Y con esto concluimos esta entrada. Si queréis ampliar la información aquí dejamos un enlace al vídeo de la charla y a la presentación:
- Enlace a la charla: https://www.youtube.com/watch?v=AyVgIttiUpQ
- Enlace a la presentación: https://github.com/Aetsu/Presentaciones/blob/master/Sandbox%20fingerprinting%20-%20Evadiendo%20entornos%20de%20analisis.pdf