Cómo fortiedr protege contra la ejecución de proxy de msbuild

Consulta técnica sobre FortiEDR

El equipo de FortiGuard Responder ha observado intentos de emplear una técnica de ejecución de proxy que utiliza Microsoft MSBuild para implementar balizas Cobalt Strike en los entornos de los clientes. Esta técnica también fue observada y reportada por Renato Marinho de Morphus Labs . La infraestructura C2 asociada con esta actividad también se vinculó a la explotación de log4j a principios de mes, aunque este TTP en sí no se vinculó con log4j. Este artículo demostrará cómo FortiEDR protege contra el uso de esta técnica de ejecución de proxy y analizará una muestra observada en la naturaleza que está fácilmente disponible para validar las protecciones que ofrece FortiEDR.

 

Descripción

 

En el momento de la detección, varias muestras que emplearon esta técnica de ejecución de proxy continúan teniendo una tasa de detección muy baja en Virus Total con solo 6/57 proveedores detectándolo como malicioso y solo uno identificando correctamente el implante Cobalt Strike. Muestras similares, que se analizarán más adelante en el artículo, tienen más de 6 meses y todavía tienen una tasa de detección de proveedores inferior a 3/57.

 

 

Figura 1: La muestra tiene una tasa de detección muy baja a través de proveedores de AV.

 

El ejemplo anterior (y el analizado en este artículo) es un archivo de proyecto, que es un esquema XML diseñado para controlar la creación de un ejecutable. La funcionalidad dentro del proceso de MSBuild denominada «Tareas» permite la ejecución de código arbitrario junto con el proceso de compilación para brindar flexibilidad a los usuarios finales, lo que probablemente admita la integración de MSBuild en procesos de compilación automatizados. Esta funcionalidad se ha utilizado en el caso de la muestra analizada, para la ejecución por proxy de una baliza Cobalt Strike.

 

La muestra observada por el equipo de FortiGuard Responder se entregó a través de una conexión RDP y luego se ejecutó directamente a través del acceso de la GUI al «Símbolo del sistema del desarrollador». Aunque abierta, esta técnica sería a primera vista indistinguible de la actividad estándar, especialmente en entornos donde las herramientas de desarrollo de software son estándar.

 

Analizando la muestra.

 

Un archivo de proyecto tiene varios componentes clave de nota en esta muestra; Nombre de destino, Nombre de tarea y la Tarea en sí. El nombre del objetivo define el objetivo de la compilación; en el caso de todas las muestras analizadas por el equipo de FortiGuard Responder, tenía un valor de ‘Depuración’. TaskName es el nombre de una tarea en particular y es una referencia en la definición de Target, en el caso de todas las muestras analizadas por el equipo de FortiGuard Responder, tenía un valor de ‘ClassExample’. Estas dos secciones se pueden observar en la Figura 2 a continuación.

 

Figura 2: Variables Target Name y TaskName comunes entre muestras.

 

El componente final es la sección Tarea. La sección de tareas define la tarea que se ejecutará junto con el proceso de compilación. En el caso de las muestras analizadas por el equipo de FortiGuard Responder, la Tarea fue la sección más grande del archivo del proyecto. Las tareas observadas se escribieron en C# y contienen código para decodificar, cargar reflexivamente y luego ejecutar una carga útil de baliza Cobalt Strike. La carga útil de Cobalt Strike se almacena en una variable llamada ‘buff’ y se somete a XOR en bytes con una clave de 5-8 bytes almacenada en una variable llamada ‘key_code’. Los fragmentos de código de estas variables del archivo proj se pueden observar en la Figura 3 a continuación.

 

Figura 3: matrices de bytes ‘buff’ y ‘key_code’ que almacenan la baliza Cobalt Strike codificada y la clave de decodificación respectivamente. Tenga en cuenta que la variable ‘buff’ ocupa la mayor parte del contenido del archivo y se ha truncado en la figura.

 

A medida que se ‘construye’ el archivo proj, se ejecuta la tarea ‘ClassExample’. Esta tarea decodifica la variable ‘buff’ en un flujo de memoria que luego se carga de manera reflexiva en el proceso de hospedaje de MSBuild y luego se ejecuta. La sección de código responsable de esta decodificación, carga reflexiva y ejecución se muestra a continuación en la Figura 4.

 

Figura 4: este fragmento de código muestra cómo cada byte de la matriz ‘buff’ se aplica XOR contra un byte en la matriz ‘key_code’ en un bucle, luego se carga en la memoria y se ejecuta.

 

En la ejecución, la baliza Cobalt Strike se comunicará con su servidor C2 según su configuración integrada. La configuración de la baliza se puede extraer del ejecutable de la baliza decodificada utilizando el fantástico analizador de configuración Cobalt Strike ( https://github.com/Sentinel-One/CobaltStrikeParser ). La configuración extraída de la muestra analizada anteriormente es una configuración simple, como se muestra a continuación en la Figura 5, con una sola IP como C2Server y un uso mínimo de funciones adicionales de Cobalt Strike. Un análisis completo de una configuración de Cobalt Strike está fuera del alcance de este artículo y ya hay excelentes recursos en la comunidad de seguridad cibernética sobre el tema, pero el siguiente artículo proporciona un punto de partida para aquellos que desean profundizar en la extracción y comprensión de los IOC de este artefacto (https://www.mandiant.com/resources/defining-cobalt-strike-components ).

Artículos relacionados  Problema de rendimiento con respecto al bloqueo del sistema para fortiedr

 

Figura 5: Archivo de configuración extraído de la baliza Cobalt Strike incrustada. Tenga en cuenta el servidor IP único C2.

 

Detección y mitigación con FortiEDR

 

FortiEDR detecta y bloquea de manera efectiva la ejecución del proxy de MSBuild de cargas maliciosas como la baliza Cobalt Strike analizada arriba de fábrica (OOTB) mediante detecciones de comportamiento que forman parte de su conjunto de reglas predeterminado. FortiEDR no incluye en la lista blanca todos los comportamientos asociados con el proceso, por lo que detecta fácilmente comportamientos anómalos, como conexiones de red y carga reflexiva, a pesar de que se conoce el ejecutable de MSBuild, el ejecutable firmado de Microsoft. En el ataque emulado a continuación, la muestra analizada anteriormente se ejecutó a través del símbolo del sistema del desarrollador, mientras que FortiEDR se configuró en ‘Solo registro’. En este modo, FortiEDR solo registra eventos, normalmente se bloquearía permitiendo que la muestra se ejecute por completo, lo que nos brinda la oportunidad de observar la gama completa de comportamientos detectados por FortiEDR.

 

La ejecución de esta muestra generó dos eventos a partir de tres reglas, cada uno desencadenado por un comportamiento sospechoso/malicioso que se habría detenido, frustrando este ataque si las acciones de FortiEDR se hubieran configurado para bloquear. Estos eventos se pueden ver a continuación en la Figura 6 a continuación.

 

Figura 6: Eventos detectados por FortiEDR relacionados con la ejecución del proxy MSBuild del archivo de proyecto malicioso analizado anteriormente que contiene una baliza Cobalt Strike.

 

El primer evento anterior fue activado por la regla ‘Intento de conexión desde una aplicación sospechosa’ en la Política de prevención de exfiltración. Esta regla marca las conexiones de red asociadas con aplicaciones que normalmente no crean conexiones de red o que se sabe que han sido explotadas por adversarios. Se pueden hacer excepciones para permitir el uso legítimo cuando sea necesario. En el caso de estos eventos, el evento se clasificó como «sospechoso» ya que las fuentes de inteligencia de amenazas de FortiGuard Labs marcaron la dirección IP (23.227.178[.]115) como sospechosa. La integración de FortiEDR con los recursos de inteligencia de amenazas de FortiGuard Labs es parte de la configuración predeterminada.

 

El segundo evento marcó dos reglas de comportamiento, ambas de la Política de prevención de exfiltración; ‘Código dinámico: código malicioso generado en tiempo de ejecución detectado’ y ‘Ejecutable no asignado: archivo ejecutable sin un archivo correspondiente en el disco’. La primera de estas reglas (Código dinámico) se marcó en la baliza Cobalt Strike decodificada que se generó en la memoria en el tiempo de ejecución al fallar la verificación del archivo. Esto se puede ver en la ‘Vista de pilas’ de FortiEDR dentro de la pestaña Análisis forense, como se muestra a continuación en la Figura 7.

 

Figura 7: Vista de pilas de FortiEDR que muestra la excepción de la regla de código dinámico relacionada con la decodificación de la baliza Cobalt Strike

 

La segunda regla (ejecutable no asignado) se marcó en la baliza de Cobalt Strike y se cargó de manera reflexiva en el proceso de MSBuild. La memoria asignada a este ejecutable no asignado se puede observar a través de la «Vista de pilas» de la pestaña Análisis forense, como se muestra en la Figura 8 a continuación. FortiEDR se puede usar para volcar el ejecutable de la memoria para un análisis más detallado si es necesario. Esta es una forma alternativa de obtener la baliza Cobalt Strike decodificada en lugar de decodificar el archivo proj directamente.

 

Figura 8: Vista de pilas de FortiEDR que muestra la excepción de la regla Ejecutable no asignado relacionada con la carga reflexiva de la baliza Cobalt Strike

 

Caza de amenazas con VT

Artículos relacionados  Problema de rendimiento con la aplicación o el sistema operativo fortiedr

 

Tomando indicadores comunes de la muestra analizada, el equipo de FortiGuard Responder identificó varias muestras similares en VirusTotal. Las muestras se remontan a julio de 2021 y parecen venir en dos variantes definidas por los contenidos decodificados de la variable ‘buff’; la variante uno que contiene una versión de BEACON (Cobalt Strike) que coincide con la analizada en este artículo y la variante dos que contiene un stager Metasploit Meterpreter que llama al adversario C2 para descargar una baliza Cobalt Strike. Se puede observar el cruce de infraestructura (dominios e IP) y TTP (agente de usuario, URL, perfil) entre las dos variantes, incluso durante el mismo período de tiempo, lo que indica que es probable que la actividad sea del mismo actor. Además, todas las cargas útiles de Cobalt Strike exportadas comparten la misma marca de agua del producto (426352781).

 

Conclusión

 

Este artículo ha demostrado cómo FortiEDR protege contra la ejecución de proxy basada en MSBuild de balizas Cobalt Strike maliciosas y cargadores Meterpreter utilizando reglas, políticas y configuraciones predeterminadas. La búsqueda de amenazas genérica basada en telemetría es difícil para este TTP sin una comprensión de la prevalencia del uso de MSBuild dentro de un entorno, por lo que no se han proporcionado consultas de búsqueda de amenazas como parte de este artículo.

Los IOC para las cargas útiles de BEACON se extrajeron de los archivos de configuración mediante el proceso descrito anteriormente. Los IOC para los etapas de Meterpreter se extrajeron del shellcode descargado después de la decodificación de las variables ‘buff’ incrustadas. La mayoría de los IOC se conocen, pero se han recopilado y puesto a disposición al final de este artículo para que estén completos.

 

Figura 9: Visitas de host observadas para la página web «hxxp://64.44.139[.]51:8080/safebrowsing/nuzhx/BPxxUS7rqSgy34UkChZ3LrTW1WV91WFfhglLRiDK» durante los últimos tres meses. Tomado de Fortinet Central Threat System (CTS)

 

También se debe tener en cuenta que, a pesar de que algunos de los IOC se observaron por primera vez en octubre de 2021, las fuentes de inteligencia de amenazas de FortiGuard Labs indican que las víctimas de todo el mundo todavía contactan regularmente al C2. Parte de esta actividad es tan reciente como el 28 de diciembre de 2021 con un aumento significativo en la actividad que comienza a mediados de diciembre desde puntos finales en India, EE. UU. y Europa, como se observa en la Figura 9 anterior.

 

MITRE ATT&CK

 

TA0002 – Ejecución

Identificación de la técnica

Descripción de la técnica

Actividad observada

T1106

API nativa

Los proyectos de MSBuild observados y analizados en este artículo utilizan llamadas directas a la API para cargar y ejecutar de manera reflexiva cargas maliciosas de Cobalt Strike y Meterpreter.

 

TA0005 – Evasión defensiva

Identificación de la técnica

Descripción de la técnica

Actividad observada

T1127.001

Ejecución de proxy de Trusted Developer Utilities: MSBuild

Este artículo se basa en el análisis de la explotación de la característica de «tareas» de MSBuild para realizar la ejecución de proxy. Los archivos de proyecto identificados no dan como resultado una aplicación construida y solo existen para explotar esta funcionalidad

 

Identificación de la técnica

Descripción de la técnica

Actividad observada

T1620

Carga de código reflectante

Los cargadores Cobalt Strike y Meterpreter codificados se descodifican y cargan en el proceso de MSBuild directamente desde la memoria mediante la funcionalidad .NET (System.Reflection).

 

TA0011 – Comando y Control

Identificación de la técnica

Descripción de la técnica

Actividad observada

T1071.001

Protocolo de capa de aplicación: protocolos web

Las cargas útiles de Cobalt Strike y Meterpreter utilizaron predominantemente HTTP y HTTPS para comunicarse con C2

 

Identificación de la técnica

Descripción de la técnica

Actividad observada

T1071.004

Protocolo de capa de aplicación: DNS

Una de las configuraciones de la baliza Cobalt Strike identificó el uso del tipo de baliza HTTP DNS que genera tráfico DNS.

 

 

COI

 

Indicador Descripción   

Indicador

Tipo de indicador

Táctica asociada    

notas

Archivo de proyecto malicioso

641a82576ce3b0e41d70607ec7178ecf43405385

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene la carga útil de Meterpreter codificada

Archivo de proyecto malicioso

08919748beaf4b1ee29cb3a74cd58a4bbdec5bd1

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene la carga útil de Meterpreter codificada

Archivo de proyecto malicioso

6a1788a84da831d700229702c9ce2d901b505dd1

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene la carga útil de Meterpreter codificada

Archivo de proyecto malicioso

ae68d5f64ba92f8c1740ed32663edbda97dd9472

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

c184668996d03b83c15da389cce3f3bde20a09aa

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

572d9e9e2b0893cd5f0bf8952fa55aabc1acb546

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

2e0b32bb9bb62a4e4449828db216611f4a95b262

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

6900c8336b20c1e0a0453d2bc243d4937c6b7b09

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada. Tenga en cuenta que esta muestra contenía una configuración que usa DNS HTTP híbrido

Archivo de proyecto malicioso

8495925dc51357b58f9a9cc3eb37c7bd33e8d7bd

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

25533cc5796a2013296aae200ce7e35027f6775e

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

8d5908a1ae3d7fd5b534700f37694a782fa8d20f

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Archivo de proyecto malicioso

1606bb73020c41dfb1256ca4dc57368e89543f21

SHA1

Ejecución

Archivo de proyecto de MSBuild que contiene una baliza Cobalt Strike codificada

Cadena de agente de usuario

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ESES)

Cadena de agente de usuario

Comando y control

Extraído de la carga útil de Meterpreter en 641a82576ce3b0e41d70607ec7178ecf43405385

PI C2

23.227.178[.]115

Dirección IP

Comando y control

Extraído de la carga útil de Meterpreter en 641a82576ce3b0e41d70607ec7178ecf43405385

Cadena de agente de usuario

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; ; NCLIENT50_AAPCDA5841E333)

Cadena de agente de usuario

Comando y control

Extraído de la carga útil de Meterpreter en 08919748beaf4b1ee29cb3a74cd58a4bbdec5bd1

PI C2

176.121.14[.]47

Dirección IP

Comando y control

Extraído de la carga útil de Meterpreter en 08919748beaf4b1ee29cb3a74cd58a4bbdec5bd1

Cadena de agente de usuario

Windows-Update-Agent/10.0.10011.16384 Client-Protocol/1.40

Cadena de agente de usuario

Comando y control

Extracted from Meterpreter payload in 6a1788a84da831d700229702c9ce2d901b505dd1 and Cobalt Strike config in c184668996d03b83c15da389cce3f3bde20a09aa, 4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3, 2e0b32bb9bb62a4e4449828db216611f4a95b262, 2ff25d6014acced3941831759357321ec6d37fef

PI C2

88.119.161[.]120

Dirección IP

Comando y control

Extraído de la carga útil de Meterpreter en 6a1788a84da831d700229702c9ce2d901b505dd1

Cadena de agente de usuario

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; MAAU; NP08)

Cadena de agente de usuario

Comando y control

Extraído de la configuración de Cobalt Strike en 8495925dc51357b58f9a9cc3eb37c7bd33e8d7bd

Cadena de agente de usuario

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

Cadena de agente de usuario

Comando y control

Extraído de la configuración de Cobalt Strike en 1606bb73020c41dfb1256ca4dc57368e89543f21. El agente de usuario corresponde a Internet Explorer en Windows XP de manera anómala.

URL C2

64.44.139[.]51/navegación segura/nuzhx/BPxxUS7rqSgy34UkChZ3LrTW1WV91WFfhglLRiDK

URL

Comando y control

Extraído de la configuración de Cobalt Strike en ae68d5f64ba92f8c1740ed32663edbda97dd9472 y 25533cc5796a2013296aae200ce7e35027f6775e

URL C2

mediaprotectxs[.]org/safebrowsing/nuzhx/BPxxUS7rqSgy34UkChZ3LrTW1WV91WFfhglLRiDK

URL

Comando y control

Extraído de la configuración de Cobalt Strike en ae68d5f64ba92f8c1740ed32663edbda97dd9472 y 25533cc5796a2013296aae200ce7e35027f6775e

URL C2

64.44.139[.]51/navegación segura/qHiUGdv/HnMBjBNdYHDBZBhoscowAdNMzizR8zC

URL

Comando y control

Extraído de la configuración de Cobalt Strike en ae68d5f64ba92f8c1740ed32663edbda97dd9472 y 25533cc5796a2013296aae200ce7e35027f6775e

URL C2

mediaprotectxs[.]org/safebrowsing/qHiUGdv/HnMBjBNdYHDBZBhoscowAdNMzizR8zC

URL

Comando y control

Extraído de la configuración de Cobalt Strike en ae68d5f64ba92f8c1740ed32663edbda97dd9472 y 25533cc5796a2013296aae200ce7e35027f6775e

URL C2

akametric[.]co/c/msdownload/update/others/2020/10/29136388_

URL

Comando y control

Extracted from Cobalt Strike config in c184668996d03b83c15da389cce3f3bde20a09aa, 4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3, 2e0b32bb9bb62a4e4449828db216611f4a95b262, 2ff25d6014acced3941831759357321ec6d37fef

URL C2

88.119.175[.]251/c/msdescargar/actualizar/otros/2020/10/29136388_

URL

Comando y control

Extracted from Cobalt Strike config in c184668996d03b83c15da389cce3f3bde20a09aa, 4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3, 2e0b32bb9bb62a4e4449828db216611f4a95b262, 2ff25d6014acced3941831759357321ec6d37fef

URL C2

akametric[.]co/c/msdownload/update/others/2020/10/28986731_

URL

Comando y control

Extracted from Cobalt Strike config in c184668996d03b83c15da389cce3f3bde20a09aa, 4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3, 2e0b32bb9bb62a4e4449828db216611f4a95b262, 2ff25d6014acced3941831759357321ec6d37fef

URL C2

88.119.175[.]251/c/msdescargar/actualizar/otros/2020/10/28986731_

URL

Comando y control

Extracted from Cobalt Strike config in c184668996d03b83c15da389cce3f3bde20a09aa, 4e862cc6d6f6f623e91e2774b1a8ebdbc89668c3, 2e0b32bb9bb62a4e4449828db216611f4a95b262, 2ff25d6014acced3941831759357321ec6d37fef

URL C2

mftanalytics[.]nube/mensajes/u5gmePQBEiwBnYZAtso1amisD

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 572d9e9e2b0893cd5f0bf8952fa55aabc1acb546 y 8d5908a1ae3d7fd5b534700f37694a782fa8d20f

URL C2

91.234.254[.]184/mensajes/u5gmePQBEiwBnYZAtso1amisD

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 572d9e9e2b0893cd5f0bf8952fa55aabc1acb546 y 8d5908a1ae3d7fd5b534700f37694a782fa8d20f

URL C2

mftanalytics[.]nube/mensajes/kw1ExXHpLDVRhhi8NSRr7Z0-o-c6

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 572d9e9e2b0893cd5f0bf8952fa55aabc1acb546 y 8d5908a1ae3d7fd5b534700f37694a782fa8d20f

URL C2

91.234.254[.]184/mensajes/kw1ExXHpLDVRhhi8NSRr7Z0-o-c6

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 572d9e9e2b0893cd5f0bf8952fa55aabc1acb546 y 8d5908a1ae3d7fd5b534700f37694a782fa8d20f

URL C2

alpha.sync.akamaistats[.]com/c/msdownload/update/others/2020/10/29136388_

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 6900c8336b20c1e0a0453d2bc243d4937c6b7b09

URL C2

beta.sync.akamaistats.com/c/msdownload/update/others/2020/10/29136388_

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 6900c8336b20c1e0a0453d2bc243d4937c6b7b09

URL C2

omega.sync.akamaistats[.]com,/c/msdownload/update/others/2020/10/29136388_

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 6900c8336b20c1e0a0453d2bc243d4937c6b7b09

URL C2

23.227.178[.]115/dpíxel

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 8495925dc51357b58f9a9cc3eb37c7bd33e8d7bd

URL C2

23.227.178[.]115/enviar.php

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 8495925dc51357b58f9a9cc3eb37c7bd33e8d7bd y 1606bb73020c41dfb1256ca4dc57368e89543f21

URL C2

23.227.178[.]115/__utm.gif

URL

Comando y control

Extraído de la configuración de Cobalt Strike en 1606bb73020c41dfb1256ca4dc57368e89543f21

Artículos relacionados  Cómo recopilar el registro del recopilador de fortiedr

 

¡Déjanos cualquier duda sobre FortiEDR aquí abajo!

¿Te ha resultado útil??

0 / 0

Deja una respuesta 0

Your email address will not be published. Required fields are marked *