Los especialistas de ESET realizaron un análisis de malware complejo que no se ha estudiado antes, diseñado para ataques dirigidos a empresas de infraestructura crítica en Europa Central y del Este. El programa, llamado GreyEnergy, tiene un parecido conceptual con BlackEnergy, un malware que se utilizó en ataques contra compañías energéticas ucranianas en
diciembre de 2015 . Además, hay enlaces que indican que los operadores de GreyEnergy trabajaron con el grupo TeleBots detrás de una serie de ataques destructivos.
El informe proporciona información sobre las actividades del Grupo GreyEnergy en los últimos años. Tenga en cuenta que no atribuimos ataques y desarrollo de malware a ningún estado. Según nuestra terminología, "ART-group" es un conjunto de indicadores técnicos.
Introduccion
En diciembre de 2015, el grupo BlackEnergy atacó el complejo energético ucraniano utilizando malware de las familias BlackEnergy y KillDisk. Este fue el último incidente conocido con el software BlackEnergy en condiciones reales. Después de este ataque, el grupo se transformó en al menos dos subgrupos: TeleBots y GreyEnergy.
TeleBots se especializa en ciber-sabotaje mediante ataques informáticos en red (CNA). El grupo ha contado los ataques destructivos, que incluyen:
Los expertos de ESET han estado monitoreando la actividad del grupo GreyEnergy durante varios años. El grupo utiliza la familia única de malware del mismo nombre. La arquitectura de Malvari se asemeja a la familia BlackEnergy.
Además de las similitudes conceptuales de los programas, hay otros enlaces que indican que los operadores de GreyEnergy trabajan en estrecha colaboración con el grupo TeleBots. En particular, en diciembre de 2016, el grupo GreyEnergy lanzó un gusano parecido a NotPetya, y una versión más avanzada de este programa apareció en junio de 2017 en un ataque de TeleBots.
Vale la pena señalar que GreyEnergy y TeleBots tienen objetivos diferentes: GreyEnergy está principalmente interesado en redes industriales propiedad de empresas de infraestructura crítica y, a diferencia de TeleBots, no se limita a objetos en Ucrania.
A finales de 2015, notamos por primera vez el malware GreyEnergy dirigido a una compañía energética en Polonia. Sin embargo, GreyEnergy también ataca objetivos ucranianos. El grupo se centra en el sector energético, la infraestructura de transporte y otras instalaciones de alto rango. GreyEnergy ha atacado al menos una organización objetivo de BlackEnergy. El último uso de GreyEnergy se registró a mediados de 2018.
El programa malicioso GreyEnergy tiene una arquitectura modular; sin embargo, a diferencia de
Industroyer , no vimos ningún módulo que pudiera afectar los sistemas de control industrial (ICS). Sin embargo, los operadores de GreyEnergy desplegaron una víbora en el disco al menos una vez para interrumpir los flujos de trabajo y ocultar los rastros de un ciberataque.
Uno de los detalles más interesantes encontrados durante nuestra investigación es que una de las muestras de GreyEnergy se firmó con un certificado digital válido. Lo más probable es que este certificado fue robado de un fabricante taiwanés de equipos ICS. En este sentido, el grupo GreyEnergy siguió los pasos de los autores de
Stuxnet .
GreyEnergy: método de trabajo
Durante las observaciones de la actividad del grupo GreyEnergy, vimos principalmente dos vectores de infección iniciales. El primero se refiere a organizaciones con servicios web ubicados en los propios servidores de las víctimas. Si el servicio web público se ejecuta en un servidor conectado a la red interna, los atacantes intentarán comprometerlo para penetrar en la red. El segundo vector es el phishing dirigido con archivos adjuntos de correo electrónico malicioso.
Los documentos maliciosos descargan GreyEnergy mini: una puerta trasera liviana de la primera etapa que no requiere privilegios administrativos. Después de que una computadora se ve comprometida con GreyEnergy mini, los atacantes crean un mapa de red y recopilan contraseñas para obtener derechos de administrador de dominio. Con estos privilegios, los atacantes pueden controlar toda la red. El grupo GreyEnergy utiliza herramientas bastante estándar para realizar estas tareas: Nmap y Mimikatz.
Después de una exploración inicial de la red, los atacantes pueden desplegar una puerta trasera insignia, la principal GreyEnergy. El software malicioso requiere derechos de administrador, que deben obtenerse antes de la fase de implementación de GreyEnergy principal. Según nuestra investigación, los operadores de GreyEnergy instalan la puerta trasera principal principalmente en dos tipos de puntos finales: servidores con tiempo de actividad prolongado y estaciones de trabajo utilizadas para administrar entornos ICS.
Para enmascarar las comunicaciones con los servidores de C&C, los atacantes pueden instalar software adicional en servidores internos de una red comprometida para que cada servidor actúe como un proxy. Tal proxy C & C redirige las solicitudes de los nodos infectados dentro de la red a un servidor C & C externo en Internet. La "comunicación" de varias computadoras en red con un servidor interno no parece tan sospechosa como con una externa. El método también se puede utilizar para administrar malware en diferentes segmentos de una red comprometida. Se observó un método similar usando servidores internos como proxy-C & C en la
campaña ART de Duqu 2.0 .
Si la organización comprometida tiene servidores web públicos conectados a la red interna, los atacantes pueden implementar puertas traseras de "respaldo" en estos servidores. Se utilizan para restaurar el acceso a la red en caso de que se descubran y eliminen las puertas traseras principales.
Todos los servidores de C&C relacionados con malware de GreyEnergy usan Tor.
Figura 1. Un diagrama simplificado de dos escenarios de compromiso de red utilizados por el grupo GreyEnergyGreyenergy mini
GreyEnergy mini es una puerta trasera liviana de la primera etapa, que fue utilizada por los atacantes para evaluar una computadora comprometida y proporcionar una cabeza de puente inicial en la red. Por lo general, GreyEnergy mini se descargaba utilizando un documento malicioso distribuido en correos electrónicos de phishing. GreyEnergy mini también se conoce como
FELIXROOT .
En septiembre de 2017, ESET descubrió un documento de Microsoft Word de Ucrania que contenía una macro maliciosa. El documento de cebo imita un formulario interactivo para alentar a la víctima a encender la macro y completarla.
Figura 2. Documento de cebo utilizado por GreyEnergy en septiembre de 2017Después de encender la macro, su código intenta descargar y ejecutar el archivo binario desde el servidor remoto.
Figura 3. Macro maliciosa de VBA (comentarios agregados por ESET)Curiosamente, un enlace que conduce a una imagen externa está incrustado en el cuerpo del documento. Después de abrir el documento, intenta cargar esta imagen, de esta manera los atacantes se enteran de que el archivo está abierto. El método le permite rastrear qué objetivos incluyen una macro maliciosa y cuáles acaban de abrir un documento.
Figura 4. Enlace a un dibujo "rastreador" externo en un documento maliciosoEl ejecutable descargado es un mini cuentagotas GreyEnergy. El cuentagotas escribe la DLL maliciosa en la carpeta
%APPDATA%
, utilizando un GUID generado aleatoriamente como nombre. Además, el cuentagotas crea un archivo
.LNK
con un nombre de archivo vacío en la carpeta
en el menú Inicio con una entrada que ejecuta
rundll32.exe
con la ruta a la DLL como argumento de línea de comando. Este es el método de mini persistencia GreyEnergy.
El DLL vaciado es el módulo principal de GreyEnergy mini; se disfraza como un archivo legítimo relacionado con Microsoft Windows.
Figura 5. La mini DLL de puerta trasera GreyEnergy se hace pasar por una DLL de Windows legítimaPara evaluar una computadora comprometida, el malware recopila la mayor cantidad de información posible y envía datos a C&C. Los datos se recopilan utilizando el lenguaje de consulta WMI (WQL) y las consultas del registro de Windows. Se recopilan los siguientes datos:
- nombre de la computadora
- versión del sistema operativo, incluida la versión del paquete de servicio
- idioma predeterminado
- nombre de usuario
- privilegios de usuario actuales de Windows, elevación, nivel UAC
- configuración de proxy
- información de la computadora (fabricante, modelo, tipo de sistema)
- zona horaria
- software de seguridad instalado (antivirus y firewall)
- lista de usuarios y dominios
- lista de programas instalados obtenidos del registro
- información de red (direcciones IP, servidor DHCP, etc.)
- lista de procesos en ejecución
El software malicioso recibe comandos del servidor C&C. Se proporciona soporte para los siguientes comandos (debajo de la ID del comando y sus significados):
- recopilar información de la computadora
- descargue y ejecute el archivo ejecutable desde la carpeta de archivos temporales
- ejecutar el comando de shell
- quitarse de una computadora comprometida
- descargue y ejecute el archivo .BAT desde la carpeta de archivos temporales
- descargar el archivo al disco local
- subir archivo
La configuración de malware en formato JSON está incrustada dentro del archivo binario y encriptada usando un algoritmo personalizado. Los datos cifrados contienen cuatro bytes al principio; Estos bytes se utilizan como clave para que la operación XOR descifre el resto de los datos. La mayoría de las cadenas utilizadas por el malware están encriptadas usando este algoritmo.
Figura 6. Configuración mini GreyEnergy incorporada antes y después del descifradoTodas las mini configuraciones de GreyEnergy que vimos incluyen servidores HTTPS y HTTP utilizados como C&C. Esto permite a los atacantes cambiar a HTTP en destinos donde la conexión HTTPS no es compatible con la configuración de red o firewall.
GreyEnergy mini tiene similitudes en el código con otros programas maliciosos de la familia GreyEnergy. Además de esto, tanto el GreyEnergy mini como la puerta trasera principal de GreyEnergy usan los mismos servidores de C&C.
Puerta trasera principal GreyEnergy
GreyEnergy es la puerta trasera principal de este cibergrupo. Las muestras de malware analizadas aquí están escritas en C y compiladas usando Visual Studio, pero sin usar las funciones estándar de la biblioteca de tiempo de ejecución C (CRT). Las muestras empaquetadas pueden contener una marca de tiempo de PE falsa, pero después de desempacar, la marca de tiempo se restablece (1 de enero de 1970).
Figura 7. Marca de tiempo de PE de la muestra desempaquetada de GreyEnergyCuriosamente, una de las primeras muestras de GreyEnergy analizadas se firmó con un certificado propiedad de Advantech. Esta es una empresa taiwanesa que fabrica equipos para la industria y la IoT. Como descubrimos que se utilizó el mismo certificado para firmar el software limpio y no malicioso de Advantech, creemos que fue robado. Tenga en cuenta que la muestra detectada no tiene una firma digital; esto significa que la firma dejó de ser válida cuando expiró el certificado.
Figura 8. Certificado Advantech utilizado para firmar la muestra de malware GreyEnergyLos datos del certificado son los siguientes:
Serial Number: 15:f4:8f:98:c5:79:41:00:6f:4c:9a:63:9b:f3:c1:cc
Validity:
Not Before: Feb 10 00:00:00 2014 GMT
Not After : Feb 26 23:59:59 2017 GMT
SHA1 Fingerprint=97:53:AD:54:DF:6B:D6:73:E0:6C:00:36:3D:34:6A:06:00:7A:0A:9B
Notamos que GreyEnergy generalmente se implementa en dos modos: solo en la memoria y con la persistencia del servicio DLL. El primer modo se usa cuando los atacantes están seguros de que la instalación no requiere medidas especiales para garantizar la estabilidad (por ejemplo, en servidores con un tiempo de actividad prolongado); El segundo modo es cuando el malware debe resistir cualquier reinicio.
Modo solo memoria
Para este modo, los atacantes colocan el archivo DLL en una carpeta específica y luego lo ejecutan usando la aplicación Windows
rundll32.exe
. Observamos que los atacantes utilizan la herramienta PsExec de Windows Sysinternals localmente para ejecutar
rundll32.exe
con los privilegios más altos posibles (
NT AUTHORITY\SYSTEM
).
A continuación se muestra la línea de comando utilizada en la fase de ejecución inicial de GreyEnergy solo en la memoria:
cmd.exe /c "C:\Windows\System32\rundll32.exe "C:\Sun\Thumbs.db",#1 CAIAABBmAAAgAAAA8GFGvkHVGDtGRqcl3Z3nYJ9aXCm7TVZX8klEdjacOSU="
En este ejemplo,
Thumbs.db
es un archivo DLL de GreyEnergy desde el cual el proceso
rundll32.exe
llama a la función con el primer número de secuencia. El ejemplo de línea de comando dado contiene una secuencia de bytes cifrados con base64, que posteriormente se utiliza como una clave AES-256 para descifrar un pequeño código auxiliar. Después de eso, el código en el "código auxiliar" inicia una nueva copia del proceso
svchost.exe
e inyecta la carga útil de GreyEnergy. En la última etapa, finaliza el proceso
rundll32.exe
rundll32.exe, el archivo DLL malicioso está protegido contra la eliminación del disco. Por lo tanto, la carga útil de GreyEnergy existirá solo en el contexto de la memoria de proceso de
svchost.exe
.
Lo más probable es que los autores tuvieran la intención de desarrollar malware de tal manera que sin una clave en la línea de comando fuera imposible descifrar el "trozo" y la carga útil.
Figura 9. Nombre interno de GreyEnergy DLL para el modo de solo memoriaSi utiliza el modo "solo en memoria", completar el proceso
svchost.exe
correspondiente o reiniciar la computadora es suficiente para eliminar GreyEnergy.
Persistencia del servicio DLL
Para utilizar este método, los operadores implementan el cuentagotas de GreyEnergy, que debe ejecutarse con privilegios de administrador.
La clave de registro
ServiceDLL
permite iniciar el módulo DLL de servicio en el contexto del proceso
svchost.exe
. Característica no documentada por Microsoft; sin embargo, lo utilizan varias familias de malware, incluido el gusano Conficker.
Para garantizar la persistencia del servicio DLL, el cuentagotas busca un servicio existente y agrega una nueva clave de registro
ServiceDLL
. Dado que el método puede conducir a una falla del sistema, el cuentagotas inicialmente realiza una serie de verificaciones para seleccionar un servicio que cumpla con una serie de requisitos.
Primero, el cuentagotas encuentra todos los servicios de Windows que actualmente están detenidos al ejecutar la siguiente consulta WQL:
Select * from Win32_Service where PathName Like '%%svchost%%' and State = 'Stopped'
Se pueden agregar las siguientes condiciones a la solicitud:
and StartMode = 'Disabled'
o and StartMode = 'Manual'
and ServiceType = 'Own Process'
o and ServiceType = 'Share Process'
Luego, el cuentagotas intenta seleccionar el servicio deseado, verificando los resultados y omitiendo aquellos que cumplen con las siguientes condiciones:
- el nombre del servicio contiene
winmgmt
(Instrumental de administración de Windows) o BITS
(Servicio de transferencia inteligente en BITS
plano) - el cuentagotas no tiene acceso al servicio o clave de registro
DependOnService
registro DependOnService
no DependOnService
vacío- el valor de registro para
ServiceDll
o ImagePath
no existe - La línea de comando de servicio contiene una de las siguientes palabras:
DcomLaunch
, LocalServiceNetworkRestricted
, LocalServiceNoNetwork
, LocalServicePeerNet
, LocalSystemNetworkRestricted
, NetworkServiceNetworkRestricted
, secsvcs
, wcssvc
Al detectar un servicio que cumple con estas condiciones, el programa de malware descarga el archivo DLL en el directorio
system32
Windows y escribe la clave de registro
ServiceDLL
. El nombre de la DLL contiene cuatro caracteres generados aleatoriamente y
svc.dll
o
srv.dll
al final. Además, el cuentagotas falsifica los metadatos de tiempo del archivo copiándolo del archivo
user32.dll
existente.
La última versión del cuentagotas GreyEnergy es compatible con los sistemas operativos de 32 bits y 64 bits.
Figura 10. DLL GreyEnergy DLL implementado a través del método de persistencia del servicio DLLDropper utiliza un método interesante para disfrazar una DLL maliciosa como un archivo legítimo. En particular, el cuentagotas copia el recurso VERSIONINFO, que contiene una descripción detallada del archivo ejecutable que pertenece al servicio de Windows en cuestión, y escribe estos datos en un archivo DLL malicioso. Para este propósito, se
BeginUpdateResource
funciones API de Windows
BeginUpdateResource
/
UpdateResource
/
EndUpdateResource
. Las versiones recientes no llaman a estas funciones desde la API; su código se implementa en el propio programa malicioso para evitar vaciar el archivo DLL en el disco sin un recurso falso de VERSIONINFO. Presumiblemente, esto evita la detección de ciertos productos de seguridad. El mismo cuentagotas puede crear archivos DLL maliciosos con diferentes descripciones en diferentes computadoras. Cada patrón expandido de esta manera tendrá un hash único.
Si el malware ya está presente en el sistema, el cuentagotas puede actualizarlo utilizando la canalización con nombre.
En la última etapa, el cuentagotas se elimina automáticamente sobrescribiendo el archivo con ceros y borrándolo del disco. Dropper también borra la
revista USN . Las acciones se realizan a través de los siguientes comandos de shell:
timeout 2 > nul & fsutil file setzerodata offset=0 length=%DROPPER_FILESIZE% "%DROPPER_PATH%" & timeout 2 & cmd /c del /F /Q "%DROPPER_PATH%" & fsutil usn deletejournal /D %DROPPER_DRIVE%
Configuracion y Comunicaciones
El modo de persistencia seleccionado por los operadores no afecta la funcionalidad del programa malicioso, que permanece sin cambios con ambos métodos.
El software malicioso contiene una configuración incrustada que se cifra con el algoritmo AES-256 y se comprime con LZNT1.
El formato MIME de múltiples componentes se utiliza para la configuración de malware incrustado. Los autores no implementaron su propio analizador para este formato; en su lugar, usan las
interfaces IMimeMessage e
IMimeBody COM. Curiosamente, la documentación de Microsoft recomienda no usar estas interfaces.
Figura 11. Ejemplo de configuración incorporada de GreyEnergyPara la configuración externa, se utiliza el formato MIME idéntico; sin embargo, el malware encripta la configuración externa de varias maneras. Utiliza la interfaz de programación de aplicaciones de protección de datos (DPAPI), en particular, las funciones API de Windows
CryptProtectData
y
CryptUnprotectData
. La configuración externa se guarda en la siguiente ruta
C:\ProgramData\Microsoft\Windows\%GUID%
, donde
%GUID%
es un valor GUID generado aleatoriamente en función del número de serie del volumen de la unidad C:.
Algunas muestras de GreyEnergy contienen una versión ofuscada de la configuración. En particular, los campos
Type
de tales configuraciones contienen letras en lugar de nombres de opciones.
Figura 12. Un ejemplo de una configuración de GreyEnergy ofuscadaLa configuración puede contener los siguientes valores:

Un programa malicioso se elimina del sistema infectado si el número de intentos fallidos excede el valor de
MaxAttempts
, y la última conexión exitosa fue hace más de
Lifetime
días.
La comunicación con C&C generalmente se realiza a través de HTTPS; sin embargo, en algunos casos, también se usa HTTP. El mismo formato MIME está encapsulado en solicitudes HTTP. Vale la pena señalar que los datos se cifran con AES-256 y RSA-2048.
Figura 13. GreyEnergy sobre la comunicación HTTP capturada en WiresharkSi usa HTTP, es más fácil identificar una máquina comprometida en la red analizando su tráfico de red. Las muestras de malware que se han estudiado siempre han utilizado los siguientes agentes de usuario codificados:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Para ayudar a los operadores de GreyEnergy a identificar las computadoras infectadas, el malware envía los resultados de las siguientes consultas WQL al servidor de C&C:
SELECT Caption, Version, CSName, ProductType, CurrentTimeZone, LocalDateTime, OSLanguage, OSType FROM Win32_OperatingSystem
SELECT MACAddress, IPAddress, IPSubnet, DHCPEnabled, DHCPServer, DNSDomain FROM Win32_NetworkAdapterConfiguration WHERE MACAddress IS NOT NULL
Las respuestas del servidor C&C están cifradas, pero después del descifrado contienen el mismo formato MIME con los siguientes valores posibles:

GreyEnergy carga módulos adicionales y carga útil en la memoria utilizando su propio cargador de archivos PE.
Módulos GreyEnergy
Como muchas amenazas complejas, el malware GreyEnergy tiene una arquitectura modular. Su funcionalidad se puede ampliar agregando módulos adicionales. El módulo GreyEnergy es un archivo DLL que se ejecuta llamando a una función con el primer número de secuencia. Cada módulo, incluido el módulo principal de GreyEnergy, acepta comandos de texto con varios parámetros.
Los operadores de GreyEnergy no envían inmediatamente todos los módulos a una máquina comprometida. Como regla general, un programa malicioso descarga y ejecuta los módulos necesarios para realizar tareas específicas.
Somos conscientes de la existencia de los siguientes módulos de GreyEnergy:
remoteprocessexec
: inyecta un archivo RE binario en un proceso remoto
info
: recopila información del sistema, registros de eventos, malware SHA-256
file
- operaciones del sistema de archivos
sshot
: toma capturas de pantalla
keylogger
- intercepta las pulsaciones de teclas
passwords
: recopila contraseñas almacenadas en varias aplicaciones
mimikatz
: herramienta
mimikatz
utilizada para recopilar credenciales de Windows
plink
: software
plink
utilizado para crear túneles SSH
3proxy
- software
3proxy
usado para crear proxies
El módulo
remoteprocessexec
permite a un atacante ejecutar archivos binarios arbitrarios en el contexto de procesos existentes. Por ejemplo, puede ejecutar Mimikatz o un escáner de puertos en el contexto del Explorador de Windows sin soltarlos en el disco. Para redirigir la salida estándar y los subprocesos del proceso y la terminación del proceso, el módulo intercepta cinco funciones API de Windows.
Figura 14. Funciones de la API de Windows capturadas por remoteprocessexecDado que la DLL de GreyEnergy restablecida es única para cada máquina infectada, los atacantes pueden recopilar hash SHA-256 utilizando el módulo de información. La presencia de hashes le permitirá rastrear si el archivo se ha subido a servicios web públicos como VirusTotal.
Protección inversa y métodos anti-criminales
GreyEnergy utiliza varios métodos para complicar el análisis. Por ejemplo, un programa de malware encripta cadenas. Algunas opciones usan el mismo algoritmo que GreyEnergy mini.
Sin embargo, la mayoría de las muestras de GreyEnergy tienen un algoritmo de cifrado diferente. En particular, los primeros cuatro bytes en un blob cifrado no se usan como clave para las operaciones XOR. En cambio, se usan para inicializar el número inicial del algoritmo de generación de números pseudoaleatorio (
Mersenne Whirlwind ), y luego los cuatro bytes generados son la clave. Antes de liberar un búfer de memoria que contiene una cadena de texto sin formato, el malware sobrescribe el búfer con ceros.
Figura 15. Código descompilado para la función de decodificación de cadenas GreyEnergyEl programa malicioso intercepta las
DeleteFileW
DeleteFileA
y
DeleteFileW
en la tabla de importación de cada archivo PE binario cargado en la memoria. El gancho reemplaza estas funciones con funciones que borran archivos de manera segura. En particular, el archivo se sobrescribirá con ceros antes de eliminarse del disco. Cada carga útil o complemento utilizará dicha función sin la necesidad de su implementación en cada módulo.
Figura 16. Código descompilado para una rutina que intercepta DeleteFileA y DeleteFileWLas herramientas
Los atacantes utilizaron el escáner de puertos Nmap como la herramienta principal para mapear las redes internas de la víctima. Además, observamos el uso de un escáner de puertos personalizado liviano donde Nmap no era posible.
Figura 17. Salida de la consola de un escáner de puertos de grupo GreyEnergy personalizadoLos atacantes utilizan activamente herramientas legítimas, como
SysInternals PsExec y
WinExe , para el movimiento horizontal dentro de redes comprometidas. La herramienta WinExe, el análogo de código abierto de WinExe, se puede controlar desde un dispositivo Linux, por ejemplo, desde un servidor web Linux comprometido.
Vale la pena señalar que, además de estas herramientas, los atacantes usan scripts de PowerShell.
Puertas traseras del servidor web
Como se mencionó anteriormente, el grupo GreyEnergy implementa puertas traseras adicionales en los servidores web, si estos servidores son accesibles desde Internet. Notamos que los atacantes usan puertas traseras escritas en PHP para este propósito. Utilizan el shell web PHP de acceso público WSO webshell y c99shell.
Los atacantes pueden modificar un script PHP existente en un servidor web o implementar uno nuevo. El código PHP de puerta trasera real generalmente oculta varios niveles de ofuscación y cifrado.
Figura 18. Código ofuscado de la puerta trasera PHP del grupo GreyEnergyEl último nivel de código está protegido por el cifrado de flujo. La generación de claves para este cifrado se basa en una cadena del valor de cookie proporcionado por los atacantes a través de una solicitud HTTP. Cada una de estas puertas traseras PHP está encriptada con una clave separada.
Figura 19. El último nivel que decodifica el código de puerta trasera de PHPLa técnica de ofuscación se utiliza para evitar el análisis, así como la imposibilidad de usar una puerta trasera de PHP de este tipo por otros grupos cibernéticos.
Proxy C&C (triulina)
Como mencionamos anteriormente, los atacantes pueden usar el servidor interno como un proxy C&C.
Descubrimos que los atacantes incluso crearon cadenas de servidores proxy C&C en los que el primer servidor de este tipo puede redirigir el tráfico de red al siguiente y así sucesivamente hasta que llega al destino final en Internet.
Los atacantes usan varios métodos para convertir el servidor interno en un proxy C&C. Para hacer esto, pueden usar directamente el malware GreyEnergy, software adicional de terceros o scripts. En el primer caso, los operadores pueden comprometer el servidor de Windows usando GreyEnergy, convertirlo en un proxy C&C usando los módulos 3proxy y plink. En el proceso de monitoreo de la actividad de GreyEnergy, observamos la instalación de los siguientes programas legítimos en servidores internos de Linux:- Proxy pequeño 3proxy
- Servidor Dante SOCKS
- Enlace PuTTY (Plink)
En lugar de software de terceros, los atacantes pueden usar servidores web internos instalando sus propios scripts en ellos. Se utilizan los lenguajes de programación PHP y ASP.En todos los casos que observamos, las secuencias de comandos PHP implementadas se ofuscaron y se cifraron utilizando el mismo tipo de ofuscación que en las puertas traseras para servidores web. Sin embargo, en este caso, la cookie que contiene la clave de descifrado es proporcionada por el malware GreyEnergy. Por esta razón, los operadores deben usar un formato de configuración especial para la URL del servidor.
Figura 20. El último nivel que descifra el código de puerta trasera de PHP usando una cookie.Curiosamente, la configuración de malware contiene la palabra triungulinacamino al script PHP ofuscado del servidor proxy. Este parece ser el nombre interno de este método utilizado por las declaraciones de GreyEnergy.Si el programa malicioso tiene un proxy C&C incorporado en la configuración, no contiene servidores C&C externos. Por lo tanto, para encontrar la dirección externa de C&C, debe tener una muestra de malware y todos los scripts PHP asociados.Observamos el uso de los siguientes scripts PHP:Un script proxy PHP personalizado contiene una URL con un encabezado externo de C&C.
Figura 21. Un servidor C&C externo incrustado en un script de servidor proxy PHP personalizado. Unscript PHP personalizado utiliza las bibliotecas OpenSSL y Curl para redirigir una solicitud de un programa malicioso a un servidor C&C externo en Internet.
Figura 22. Código para el script PHP personalizado del servidor proxy del grupo GreyEnergyComo se mencionó anteriormente, los atacantes pueden usar scripts ASP para el mismo propósito. En un caso que observamos, el script ASP usó una cookie provista por el malware para descifrar solo la dirección C&C real usando AES; el resto del código no estaba encriptado u ofuscado.
Figura 23. Código proxy ASP utilizado por el grupo GreyEnergyServidores C y C con acceso a Internet
Todos los servidores de GreyEnergy C&C usaban Tor cuando estaban activos. La configuración de la infraestructura de C&C es similar a BlackEnergy, TeleBots e Industroyer, que también usaban servidores Tor.Probablemente todos los servidores de C&C tienen una dirección de cebolla, y los atacantes la usan para acceder, administrar o transmitir datos. Esto parece ser un requisito de OPSEC que agrega una capa adicional de anonimato a los atacantes.Los expertos de ESET han identificado los servidores de C&C utilizados por el malware GreyEnergy en los últimos tres años. La lista se proporciona a continuación en la sección "Indicadores de compromiso".Comparación de GreyEnergy y BlackEnergy
Las familias de malware GreyEnergy y BlackEnergy tienen la misma estructura, conjunto de módulos y funciones. Aunque la implementación de estas funciones es diferente, aún son comparables.
Petya Moonraker
En diciembre de 2016, los atacantes lanzaron un gusano que, en nuestra opinión, fue el predecesor de NotPetya (también conocido como Petya, ExPetr, Nyetya, EternalPetya). El gusano se usó en ataques contra un pequeño número de objetos y tenía capacidades de distribución limitadas, por lo que no se conocía ampliamente.Un gusano es un archivo DLL con un nombre msvcrt120b.dll
ubicado en el directorio de Windows. El nombre interno del archivo es moonraker.dll
, lo que, tal vez, es una referencia a la película y la novela de Bond del mismo nombre . En general, llamamos al programa Moonraker Petya.
Figura 24. El nombre interno del gusano instalado en diciembre de 2016La marca de tiempo PE en la DLL sugiere que el archivo se compiló en diciembre de 2016, presumiblemente justo antes de la instalación.Moonraker Petya contiene un código después del cual la computadora deja de cargar. En particular, sobrescribe el valor ImagePath
en las claves de registro [HKEY_LOCAL_MACHINE\System\ControlSet001\Services\ACPI]
y[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\ACPI]
y borra el primer sector de la unidad del sistema. A diferencia de NotPetya, Moonraker Petya no contiene código que interactúe directamente con MBR y el gestor de arranque del sistema operativo. En cambio, la DLL de Moonraker Petya contiene un blob de datos binarios cifrados. El malware espera un argumento de línea de comandos que luego se utilizará como clave de descifrado. Después de descifrar y descomprimir usando la biblioteca zlib, el código se carga en la memoria como un archivo RE binario y se ejecuta. No tenemos una clave de descifrado, pero analizamos las imágenes de disco de las computadoras infectadas. Contenían el código MBR y el gestor de arranque, que corresponde al código encontrado en el Green Petya original utilizado por diferentes grupos cibernéticos. Suponemos que la gota puede contener la Petya verde original.
Figura 25. La pantalla emergente que se muestra después de reiniciar en computadoras infectadas con Moonraker PetyaEs interesante que el descifrado en Moonraker Petya sea muy similar al mismo proceso en los archivos DLL de GreyEnergy en el modo "solo en memoria".
Figura 26. Comparación del código descompilado de Moonraker Petya (izquierda) y GreyEnergy (derecha) El código deMoonraker Petya se puede distribuir a través de una red local utilizando SysInternals PsExec. Los programas maliciosos contienen archivos binarios comprimidos en zlib en sus recursos. Más tarde, el binario se vacía en el directorio de Windows con el nombre del archivo conhost.exe
.Este programa malicioso se distribuye de manera similar NotPetya: enumera los nodos de red utilizando diferentes métodos ( WNetEnumResourceW
, GetIpNetTable
, GetExtendedTcpTable
, NetServerEnum
, TERMSRV-registros usandoCredEnumerateW
), luego se conecta al host de la red mediante la función WNetAddConnection2W
y guarda el malware como \\%TARGET-HOST%\admin$\%MALWARE%
. Después de eso, Moonraker Petya ejecuta el siguiente comando, que lanza el malware en la computadora remota usando el PsExec de reinicio:C:\Windows\conhost.exe \\%TARGET-HOST% -accepteula -s -d C:\Windows\System32\rundll32.exe "C:\Windows\msvcrt120b.dll", #1 %TIMEOUT% "USER1:PASSWORD1;USER2:PASSWORD2" "%DECRYPTIONKEY%"
Es importante tener en cuenta que el malware no tiene funciones de recopilación de credenciales con Mimikatz y no contiene el exploit EternalBlue.Además de las características enumeradas, Moonraker Petya también admite el cifrado de archivos. El programa malicioso escanea todos los archivos en los discos duros, luego de lo cual intenta encriptarlos usando el algoritmo AES-256. Una vez que se completa el proceso de cifrado, el malware puede crear un archivo README.txt
con instrucciones de pago.La instrucción contiene una clave personal encriptada usando RSA-2048. Además, contiene el mismo texto y direcciones de cebolla que el Green Petya original. Parece que los atacantes querían disfrazar el uso de este malware como un ataque con Green Petya.
Figura 27. Archivo Léame con instrucciones de pago creado por Moonraker PetyaComo paso final, Moonraker Petya intenta reiniciar la computadora.Conclusión
GreyEnergy es una parte importante del arsenal de uno de los grupos ART más peligrosos que ha estado atacando objetivos ucranianos en los últimos años. La vemos como la sucesora de BlackEnergy, las similitudes y diferencias se enumeran en esta publicación. Las principales razones por las que llegamos a esta conclusión son una estructura similar de malware, una selección de objetivos y métodos de trabajo. La transición de BlackEnergy a GreyEnergy tuvo lugar a fines de 2015, tal vez porque los atacantes tuvieron que actualizar el paquete de malware después de aumentar la atención a la infraestructura de BlackEnergy.Una parte interesante del rompecabezas es el hecho establecido de usar Moonraker Petya en junio de 2016, que, según nuestras estimaciones, es el predecesor del programa destructivo NotPetya. Esto puede indicar que los grupos TeleBots y GreyEnergy están colaborando, o al menos compartiendo código y algunas ideas. Sin embargo, los consideramos como grupos separados, cuyos objetivos son algo diferentes. Al momento de escribir esto, no vimos las actividades intencionales de TeleBots fuera de Ucrania, a diferencia de GreyEnergy y BlackEnergy antes.En cualquier caso, los operadores de GreyEnergy representan un grave peligro. Continuamos monitoreando la actividad de GreyEnergy y TeleBots y recomendamos que los usuarios privados y corporativos usen los productos más avanzados para proteger los puntos finales.Indicadores de compromiso
Detección por productos ESET:
VBA/TrojanDownloader.Agent.EYV
Win32/Agent.SCT
Win32/Agent.SCM
Win32/Agent.SYN
Win64/Agent.SYN
Win32/Agent.WTD
Win32/GreyEnergy
Win64/GreyEnergy
Win32/Diskcoder.MoonrakerPetya.A
PHP/Agent.JS
PHP/Agent.JX
PHP/Agent.KJ
PHP/Agent.KK
PHP/Agent.KL
PHP/Agent.KM
PHP/Agent.KN
PHP/Agent.KO
PHP/Agent.KP
PHP/Agent.KQ
PHP/Agent.KR
PHP/Agent.KS
PHP/Agent.KT
PHP/Agent.KU
PHP/Agent.LC
PHP/Agent.NBP
PHP/Kryptik.AB
PHP/TrojanProxy.Agent.B
ASP/Agent.L
Win64/HackTool.PortScanner.A
Win64/Riskware.Mimikatz.A
Win64/Riskware.Mimikatz.AE
Win64/Riskware.Mimikatz.AH
Win32/Winexe.A
Win64/Winexe.A
Win64/Winexe.B
Documento GreyEnergy:
SHA-1:177AF8F6E8D6F4952D13F88CDF1887CB7220A645
GreyEnergy mini:
SHA-1:455D9EB9E11AA9AF9717E0260A70611FF84EF900
51309371673ACD310F327A10476F707EB914E255
CB11F36E271306354998BB8ABB6CA67C1D6A3E24
CC1CE3073937552459FB8ED0ADB5D56FA00BCD43
30AF51F1F7CB9A9A46DF3ABFFB6AE3E39935D82C
Goteros GreyEnergy:
SHA-1:04F75879132B0BFBA96CB7B210124BC3D396A7CE
69E2487EEE4637FE62E47891154D97DFDF8AAD57
716EFE17CD1563FFAD5E5E9A3E0CAC3CAB725F92
93EF4F47AC160721768A00E1A2121B45A9933A1D
94F445B65BF9A0AB134FAD2AAAD70779EAFD9288
A414F0A651F750EEA18F6D6C64627C4720548581
B3EF67F7881884A2E3493FE3D5F614DBBC51A79B
EBD5DC18C51B6FB0E9985A3A9E86FF66E22E813E
EC7E018BA36F07E6DADBE411E35B0B92E3AD8ABA
DLL reiniciables de GreyEnergy:
SHA-1:0B5D24E6520B8D6547526FCBFC5768EC5AD19314
10D7687C44BECA4151BB07F78C6E605E8A552889
2A7EE7562A6A5BA7F192B3D6AED8627DFFDA4903
3CBDC146441E4858A1DE47DF0B4B795C4B0C2862
4E137F04A2C5FA64D5BF334EF78FE48CF7C7D626
62E00701F62971311EF8E57F33F6A3BA8ED28BF7
646060AC31FFDDFBD02967216BC71556A0C1AEDF
748FE84497423ED209357E923BE28083D42D69DE
B75D0379C5081958AF83A542901553E1710979C7
BFC164E5A28A3D56B8493B1FC1CA4A12FA1AC6AC
C1EB0150E2FCC099465C210B528BF508D2C64520
CBB7BA92CDF86FA260982399DAB8B416D905E89B
DF051C67EE633231E4C76EC247932C1A9868C14F
DFD8665D91C508FAF66E2BC2789B504670762EA2
E2436472B984F4505B4B938CEE6CAE26EF043FC7
E3E61DF9E0DD92C98223C750E13001CBB73A1E31
E496318E6644E47B07D6CAB00B93D27D0FE6B415
EDA505896FFF9A29BD7EAE67FD626D7FFA36C7B2
F00BEFDF08678B642B69D128F2AFAE32A1564A90
F36ECAC8696AA0862AD3779CA464B2CD399D8099
GreyEnergy DLL (modo "solo en memoria"):
SHA-1:0BCECB797306D30D0BA5EAEA123B5BF69981EFF4
11159DB91B870E6728F1A7835B5D8BE9424914B9
6ABD4B82A133C4610E5779C876FCB7E066898380
848F0DBF50B582A87399428D093E5903FFAEEDCD
99A81305EF6E45F470EEE677C6491045E3B4D33A
A01036A8EFE5349920A656A422E959A2B9B76F02
C449294E57088E2E2B9766493E48C98B8C9180F8
C7FC689FE76361EF4FDC1F2A5BAB71C0E2E09746
D24FC871A721B2FD01F143EB6375784144365A84
DA617BC6DCD2083D93A9A83D4F15E3713D365960
E4FCAA1B6A27AA183C6A3A46B84B5EAE9772920B
Petya Moonraker
SHA-1:1AA1EF7470A8882CA81BB9894630433E5CCE4373
PHP y scripts ASP
SHA-1:10F4D12CF8EE15747BFB618F3731D81A905AAB04
13C5B14E19C9095ABA3F1DA56B1A76793C7144B9
1BA30B645E974DE86F24054B238FE77A331D0D2C
438C8F9607E06E7AC1261F99F8311B004C23DEC3
4D1C282F9942EC87C5B4D9363187AFDC120F4DC7
4E0C5CCFFB7E2D17C26F82DB5564E47F141300B3
5377ADB779DE325A74838C0815EEA958B4822F82
58A69A8D1B94E751050DECF87F2572E09794F0F8
5DD34FB1C8E224C17DCE04E02A4409E9393BCE58
639BCE78F961C4B9ECD9FE1A8537733388B99857
7127B880C8E31FBEB1D376EB55A6F878BC77B21A
71BA8FE0C9C32A9B987E2BB827FE54DAE905D65E
78A7FBDD6ADF073EA6D835BE69084E071B4DA395
81332D2F96A354B1B8E11984918C43FB9B5CB9DB
8CC008B3189F8CE9A96C2C41F864D019319EB2EE
940DE46CD8C50C28A9C0EFC65AEE7D567117941B
A415E12591DD47289E235E7022A6896CB2BFDE96
D3AE97A99D826F49AD03ADDC9F0D5200BE46AB5E
E69F5FF2FCD18698BB584B6BC15136D61EB4F594
E83A090D325E4A9E30B88A181396D62FEF5D54D5
ECF21EFC09E4E2ACFEEB71FB78CB1F518E1F5724
Escáner de puerto personalizado
SHA-1:B371A5D6465DC85C093A5FB84D7CDDEB1EFFCC56
B40BDE0341F52481AE1820022FA8376E53A20040
Mimikatz
SHA-1:89D7E0DA80C9973D945E6F62E843606B2E264F7E
8B295AB4789105F9910E4F3AF1B60CBBA8AD6FC0
AD6F835F239DA6683CAA54FCCBCFDD0DC40196BE
Winexe
SHA-1: Advertencia: la mayoría de los servidores con estas direcciones IP formaban parte de la red Tor, es decir, el uso de estos indicadores puede generar falsos positivos.0666B109B0128599D535904C1F7DDC02C1F704F2
2695FCFE83AB536D89147184589CCB44FC4A60F3
3608EC28A9AD7AF14325F764FB2F356731F1CA7A
37C837FB170164CBC88BEAE720DF128B786A71E0
594B809343FEB1D14F80F0902D764A9BF0A8C33C
7C1F7CE5E57CBDE9AC7755A7B755171E38ABD70D
90122C0DC5890F9A7B5774C6966EA694A590BD38
C59F66808EA8F07CBDE74116DDE60DAB4F9F3122
CEB96B364D6A8B65EA8FA43EB0A735176E409EB0
FCEAA83E7BD9BCAB5EFBA9D1811480B8CB0B8A3E
El servidor de C&C se dirige a GreyEnergy mini
https://82.118.236[.]23:8443/27c00829d57988279f3ec61a05dee75a
http://82.118.236[.]23:8080/27c00829d57988279f3ec61a05dee75a
https://88.198.13[.]116:8443/xmlservice
http://88.198.13[.]116:8080/xmlservice
https://217.12.204[.]100/news/
http://217.12.204[.]100/news/
http://pbank.co[.]ua/favicon.ico (IP: 185.128.40.90)
Direcciones del servidor GreyEnergy C & C (períodos de actividad e IP)
2015–2016 – 109.200.202.7
2015–2015 – 193.105.134.68
2015–2016 – 163.172.7.195
2015–2016 – 163.172.7.196
2016–2016 – 5.149.248.77
2016–2016 – 31.148.220.112
2016–2016 – 62.210.77.169
2016–2016 – 85.25.211.10
2016–2016 – 138.201.198.164
2016–2017 – 124.217.254.55
2017–2017 – 46.249.49.231
2017–2017 – 37.59.14.94
2017–2017 – 213.239.202.149
2017–2017 – 88.198.13.116
2017–2017 – 217.12.202.111
2017–2017 – 176.31.116.140
2017–2018 – 185.217.0.121
2017–2018 – 178.150.0.200
2018–2018 – 176.121.10.137
2018–2018 – 178.255.40.194
2018–2018 – 193.105.134.56
2018–2018 – 94.130.88.50
2018–2018 – 185.216.33.126