SolarWinds | Comprensión y detección del troyano SUPERNOVA Webshell

Introducción

  • El reciente ataque a la cadena de suministro Orion de SolarWinds ha demostrado ser uno de los ataques más estratificados y dañinos de 2020, que consta de múltiples artefactos y TTP sofisticados.
  • Han surgido varias familias de malware distintas en relación con el compromiso. Estos incluyen la puerta trasera SUNBURST , SUPERNOVA, COSMICGALE & TEARDROP.
  • Las organizaciones protegidas por la plataforma Singularity de SentinelOne están completamente protegidas contra todas estas nuevas amenazas.

En esta publicación, proporcionamos un análisis del troyano SUPERNOVA, describiendo cómo la carga útil DLL armada difiere de la versión legítima que suplantó. Además, revelamos algunos nuevos indicadores de compromiso que pueden, además de los IoC documentados anteriormente, ayudar a los equipos de seguridad a detectar cuándo el webshell malicioso está activo.

Descripción general de los componentes de malware de SolarWinds

La naturaleza sofisticada del compromiso de SolarWinds ha resultado en una oleada de nuevas familias de malware, cada una con diferentes características y comportamientos.

  • SUNBURST se refiere a una puerta trasera .NET (escrita en C #). Esta puerta trasera se distribuyó como parte de un parche MSI (instalador de Windows) troyano y se distribuyó a través de los mecanismos de actualización de SolarWinds.
  • TEARDROP es un implante residente en la memoria que se utiliza (principalmente) para distribuir la carga útil de la baliza Cobalt Strike.
  • COSMICGALE se refiere a ciertos scripts de PowerShell maliciosos que se ejecutan en hosts comprometidos.
  • SUPERNOVA se refiere a un implante de shell web que se utiliza para distribuir y ejecutar código adicional en hosts expuestos.

A continuación, nos enfocamos en comprender y detectar el implante de carcasa web SUPERNOVA.

La DLL Trojanizada App_Web_logoimagehandler

El implante de shell web SUPERNOVA es una copia troyanizada de una biblioteca DLL .NET legítima en la aplicación web SolarWinds Orion. El propósito de la DLL original es ofrecer un logotipo configurado por el usuario en las páginas web de la aplicación web Orion.

La modificación de la DLL de SolarWindows legítima para uso malintencionado requirió solo unos pocos cambios clave, y después del análisis parece engañosamente «elegante». A continuación, ilustramos algunas de las diferencias clave entre la DLL de SolarWinds legítima y la DLL ‘SUPERNOVA’ armada.

Los atacantes inyectaron un método adicional, DynamicRun(),en la clase LogoImageHandler legítima de SolarWinds desde el App_Web_logoimagehandler.ashx.b6031896.dll, convirtiendo el DLL benigno en un sofisticado webshell.

Una instancia legítima de App_Web_logoimagehandler.ashx.b6031896.dll:

Una instancia armada de App_Web_logoimagehandler.ashx.b6031896.dll:

El DynamicRun()método agregado es llamado por el ProcessRequest()método, que maneja las solicitudes HTTP. Los atacantes agregaron un try/catchbloque al comienzo del código fuente de este método para analizar parte de la solicitud HTTP y redirigir el flujo de control al DynamicRun()método del atacante .

El ProcessRequest()método legítimo :

Y el armado ProcessRequest()con try/catchbloque agregado :

El código adicional simplemente extrae datos en forma de nombre-valor de la Requestpropiedad de una instancia de la HttpContextclase. Una vez extraídos, estos cuatro valores se pasarán a DynamicRun()ejecutar y el valor de retorno del método se volverá a escribir al atacante como una respuesta HTTP.

El DynamicRun()método es donde reside la verdadera funcionalidad del webshell SUPERNOVA. Este método acepta un blob de código fuente C #, junto con la clase para instanciar, el método para invocar y los argumentos del método. Estos parámetros se utilizarán para compilar y ejecutar un ensamblado .NET en memoria enviado por los atacantes a través de HTTP.

La CSharpCodeProviderclase .NET es el mecanismo utilizado para realizar la compilación en memoria. Como puede ver a continuación, el GenerateInMemoryparámetro se establece en verdadero, lo que significa que un ensamblado físico no se escribirá en el disco, lo que permitirá la creación de artefactos forenses mínimos. El último parámetro pasado al compilador en memoria es el blob de código fuente de C # proporcionado por la solicitud HTTP del atacante para ser compilado.

Desglose de parámetros:

Si no surgen errores durante la compilación, el malware crea una instancia de la clase respectiva, invoca el método pasado como tercer argumento a la función y devuelve los resultados.

Esta funcionalidad permite a los atacantes compilar y ejecutar cargas útiles .NET a voluntad, todo dentro del contexto de SolarWinds. Este mecanismo no aprovecha ningún exploit, sino que simplemente abusa de la funcionalidad .NET legítima. Esto es poderoso, ya que permite que el malware ejecute código compilado robusto sobre la marcha, sin dejar archivos adicionales en el sistema de archivos o ejecutar comandos obvios o ruidosos que se envían por cable.

Detectando la actividad de SUPERNOVA Webshell

Durante nuestra investigación, creamos un PoC, aprovechando el mismo CSharpCodeProvidermecanismo que usa SUPERNOVA para la compilación en memoria de ensamblados .NET. Descubrimos que durante el proceso de compilación, las utilidades nativas relacionadas con .NET CSC.exeCVTRES.exese generan como procesos secundarios del proceso de llamada.

Pasados ​​como argumentos a CSC y CVTRES, hay rutas a archivos temporales con nombres aleatorios que utilizan estas utilidades durante el proceso de compilación.

Árbol de proceso:

Árbol de procesos con líneas de comando:

- "C: \ Users \ REM \ Desktop \ test_compiler.exe"

----- "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ csc.exe" / noconfig / fullpaths @ "C: \ Users \ REM \ AppData \ Local \ Temp \ 2aklqpvi.cmdline"

------------- "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ cvtres.exe / NOLOGO / READONLY / MACHINE: IX86" / OUT: C: \ Users \ REM \ AppData \ Local \ Temp \ RES23D1.tmp "" c: \ Users \ REM \ AppData \ Local \ Temp \ CSCF78C0CD1119A4E50AA11E695677D803B.TMP "

La sintaxis de estas líneas de comando es la siguiente.

CSC:

"C: \ Windows \ Microsoft.NET \ Framework64 \ < versión > \ csc.exe" / noconfig / fullpaths @ "C: \ Users \ < usuario > \ AppData \ Local \ Temp \ < cadena_aleatoria > .cmdline"

CVTRES:

"C: \ Windows \ Microsoft.NET \ Framework64 \ < versión > \ cvtres.exe / NOLOGO / READONLY / MACHINE: IX86" / OUT: C: \ Users \ < usuario > \ AppData \ Local \ Temp \ < cadena_aleatoria > . tmp "" c: \ Users \ < usuario > \ AppData \ Local \ Temp \ < cadena_aleatoria > .TMP "

Este árbol de procesos puede proporcionar información valiosa sobre cuándo el webshell SUPERNOVA está potencialmente activo y recibe comandos de C2. Este comportamiento puede preceder a la actividad adicional del atacante en el cuadro, como movimientos laterales, procesos generados o archivos caídos.

Conclusión

Actualmente, muchas organizaciones están trabajando arduamente para comprender y cuantificar sus riesgos y exposición a los problemas que surgen del ataque a la cadena de suministro de SolarWinds. Si bien el análisis de la violación de SolarWinds (y los ataques derivados relacionados) está en curso, ya se puede decir con seguridad que esta podría considerarse una de las campañas más organizadas y sofisticadas de 2020.

Dado el alcance de esta campaña, hay algunas cosas útiles a tener en cuenta.

  • Si bien SolarWinds estima ~ 18000 instalaciones de la actualización maliciosa, eso no significa que todas esas mismas organizaciones hayan sido violadas por completo. La inteligencia actual sugiere más de 140 «víctimas» en toda regla.
  • La infraestructura principal de C2 ha sido incautada y posteriormente hundida por Microsoft y otros socios de la industria. Esto ahora se usa como un «interruptor de interrupción» para el malware existente.
  • SolarWinds lanzó un parche / actualización el 15 de diciembre. Orion Platform Platform v2020.2.1 HF2 se ha puesto a disposición de todos los clientes que ejecutan versiones vulnerables de SolarWinds Orion. Para los clientes de Platform v2019, Orion Platform v2019.4 HF 6 está disponible . Además, SolarWinds ha tomado medidas para garantizar que todos los archivos maliciosos se hayan eliminado de sus servidores.

En SentinelLabs, continuamos con nuestro análisis y actualizamos todos los recursos pertinentes a medida que sale a la luz nueva información. Alentamos a todos a revisar los recursos existentes para obtener actualizaciones e información continuas. SentinelOne Singularity Platform protege y previene comportamientos maliciosos asociados con todos los ataques relacionados con la brecha de SolarWinds.

Recursos adicionales

SolarWinds SUNBURST Backdoor: Dentro de la campaña APT
FireEye / SolarWinds: Actuar y mantenerse protegido
La herramienta gratuita de SentinelOne para determinar si sus dispositivos son vulnerables a SUNBURST

Indicadores de compromiso

SUPERNOVA Hashes:
SHA256
C15abaf51e78ca56c0376522d699c978217bf041a3bd3c71d09193efa5717c71
SHA1
75af292f34789a1c782ea36c7127bf6106f595e8
MD5
56ceb6d0011d876d87b

Regla YARA para SUPERNOVA

importar regla " pe "
 SentinelLabs_SUPERNOVA 
{
	meta :
		description = "Identifica versiones potenciales de App_Web_logoimagehandler.ashx.b6031896.dll armado con SUPERNOVA" 
		date = "2020-12-22" 
		author = "SentinelLabs"
	instrumentos de cuerda:

		$ = "clazz" 
		$ = "códigos" 
		$ = "args" 
		$ = "ProcessRequest" 
		$ = "DynamicRun" 
		$ = "get_IsReusable" 
		$ = "logoimagehandler.ashx" de ancho
		$ = "SiteNoclogoImage" de ancho
		$ = "SitelogoImage" de ancho

	condición:
		( uint16 (0) == 0 x5A4D y uint32 (uint32 (0x3C)) == 0 x00004550 y pe. importaciones ( "mscoree.dll" )) y todos ellos

}

Fuente: https://labs.sentinelone.com/solarwinds-understanding-detecting-the-supernova-webshell-trojan/

Daniel Perez

Daniel Perez

Dejar un comentario

Este sitio web utiliza cookies para garantizar que obtenga la mejor experiencia. Más información