Resumen
Desde hace varios años, los investigadores de Proofpoint han estado rastreando el uso de descargadores de primera etapa, que son utilizados por los actores de amenazas para instalar otras formas de malware durante y después de sus campañas de correo electrónico malicioso. En particular, en los últimos dos años, estos descargadores se han vuelto cada vez más robustos, proporcionando perfiles avanzados y capacidades de focalización.
Más importante aún, los descargadores y otros programas maliciosos como botnets y troyanos bancarios han desplazado al ransomware como cargas útiles primarias, dando a los actores de amenazas la flexibilidad para desplegar una gama de programas maliciosos en infecciones secundarias. Por ejemplo, uno de los más prevalentes, Smoke Loader, se ha utilizado ampliamente para dejar caer cargas útiles como los troyanos bancarios Ursnif y The Trick, además de utilizar sus propios módulos para el robo de credenciales y otra información y datos, entre otras funciones maliciosas.
Desde finales de agosto de 2019, los investigadores de Proofpoint han estado siguiendo el desarrollo y la venta de un nuevo cargador modular llamado Buer por sus autores. Buer tiene características que son altamente competitivas con Smoke Loader, se está vendiendo activamente en prominentes mercados subterráneos, y está destinado a los actores de uso que buscan una solución llave en mano, lista para usar.
Campañas
El 28 de agosto de 2019
El 28 de agosto, los investigadores de Proofpoint observaron mensajes de correo electrónico maliciosos que parecen responder a conversaciones de correo electrónico legítimas anteriores. Contenían archivos adjuntos de Microsoft Word que utilizan macros de Microsoft Office para descargar la carga útil de la siguiente etapa.
Figura 1: Ejemplo de archivo adjunto de Microsoft Word utilizado en la campaña del 28 de agosto de 2019
Observamos que la carga útil de la siguiente etapa se descargaba desde URLs que incluían:
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
La carga útil descargada se denominaba verinstere222.xls o verinstere33.exe (una convención de nomenclatura que el actor utilizaba durante ese periodo). En lugar de la variante Dreambot de Ursnif frecuentemente asociada a este actor, la carga útil era un cargador no documentado que no se había observado previamente en la naturaleza.
En las siguientes semanas de septiembre y octubre, los investigadores de Proofpoint y otros miembros de la comunidad de infoseguridad observaron varias campañas del mismo actor dejando caer la variante Dreambot de Ursnif o este nuevo cargador.
10 de octubre de 2019
El 10 de octubre, los investigadores de Proofpoint observaron una campaña de malvertising en Australia que redirigía al Fallout Exploit Kit (EK) dejando caer el nuevo loader.
Figura 2: Rastro de tráfico de red HTTP con el EK Fallout explotando navegadores vulnerables
El cargador luego dejó caer varias cargas útiles de malware de segunda etapa, incluyendo KPOT stealer, Amadey y Smoke Loader.
El 21 de octubre de 2019
Desde principios de julio, los investigadores de Proofpoint observaron aproximadamente 100 campañas que involucraban a Ostap cargando casi exclusivamente varias instancias de The Trick. El 21, sin embargo, los investigadores de Proofpoint observaron mensajes de correo electrónico maliciosos con líneas de asunto como «Aviso de sanción # PKJWVBP» que contenían archivos adjuntos de Microsoft Word. Los documentos contenían macros que, si se activaban, ejecutaban a Ostap. Observamos que Ostap descargaba este cargador desde
hxxps://185.130.104187/nana/kum.php?pi=18b&
que a su vez cargaba El Truco «ono22» desde su C&C: garrisontxus
Figura 3: Tráfico de red observado una vez habilitada la macro en los documentos maliciosos.
Figura 4: Ejemplo de archivo adjunto de Microsoft Word utilizado en la campaña del 21 de octubre
Análisis de las características del mercado &
Debido a que empezamos a observar este nuevo cargador en uso en múltiples y distintas campañas, esperamos que se estuviera vendiendo en un mercado clandestino a múltiples actores. Además, descubrimos un anuncio del 16 de agosto en un foro clandestino en el que se describía un cargador llamado «Buer» que coincidía con la funcionalidad del malware observado en las campañas anteriores.
Las características añadidas y anunciadas en las semanas siguientes coinciden exactamente con la evolución del cargador encontrado en estas campañas.
Recuperamos el texto de un tablón de anuncios publicado por el autor, en ruso, en el que solicitaba un pago de 400 dólares por el malware y ofrecía sus servicios para configurar el software para los posibles clientes con el fin de ponerlo en marcha. El autor también señala que las actualizaciones y las correcciones de errores son gratuitas, pero hay un recargo de 25 dólares por «reconstruir a nuevas direcciones».
El siguiente texto, que Proofpoint también extrajo del mercado clandestino, y que se presume que fue escrito por el autor del malware, es un resumen de la funcionalidad del cargador como se describe en el ruso original:
Figura 5. Texto del post del foro clandestino que describe la funcionalidad del bot Buer Loader
De forma similar, el anuncio también enumera la funcionalidad del panel de control. El autor señala que el bot modular está escrito íntegramente en C, utilizando un panel de control escrito en .NET Core, destacando un mayor rendimiento tanto en el cliente como en el servidor debido a la elección del lenguaje de programación.
- Según la descripción, el bot tiene una carga útil total de entre 55 y 60 kilobytes, funciona como un ejecutable nativo de Windows y una biblioteca de enlace dinámico, se ejecuta íntegramente en memoria residente y es compatible con los sistemas operativos Microsoft Windows de 32 y 64 bits.
- El bot se comunica a través de una conexión HTTPS y se puede actualizar de forma remota desde el panel de control después de la desencriptación, así como de la reconstrucción.
- El autor también señala que el cargador se ejecuta como un proceso sustituto de una aplicación de confianza, y funciona utilizando privilegios de nivel de usuario.
- Lo más notable es que el software no se ejecutará en la CEI (antiguos estados soviéticos, como Rusia).
El anuncio describe las siguientes características para el servidor y el panel de control:
- El panel de control se anuncia como que también está escrito en .NET Core, señalando una fácil instalación en sistemas de servidor Ubuntu / Debian Linux.
- El servidor proporciona una amplia gama de estadísticas, incluyendo contadores de bots en línea, vivos, muertos y totales; una actualización en tiempo real para la lista de bots; un contador de descarga de archivos; y una capacidad para filtrar sistemas por tipo de sistema operativo, derechos de acceso de bots instalados y número de núcleos lógicos de CPU.
- Los archivos descargados de los sistemas infectados se almacenan de forma encriptada en el servidor, con acceso garantizado por un token.
- Lo más importante, al igual que los propios bots, es que el autor señala que el servidor no procesa las solicitudes de la API enviadas desde los países miembros de la CEI.
El post del foro también incluía notas de la versión técnica del cargador y el panel de control de Buer (versión 1.1.2). En la introducción, el autor señaló que el lanzamiento del cargador ahora consta de tres pasos — si los dos primeros pasos no tienen éxito en el sistema infectado, y la inyección en el proceso sustituto falla (por ejemplo, debido a la incompatibilidad con la propia cripta), el cargador se ejecutará bajo su propio proceso en su lugar.
Las notas de la versión indican lo siguiente para el cargador:
- El cargador utiliza una arquitectura FastFlux.
- El cargador funciona desde un proceso de confianza dentro de Microsoft Windows. El proceso MemLoadEx ahora es compatible con x64 exe como una aplicación de confianza.
- MemLoad se ha actualizado y ahora es compatible con x32 exe nativo.
Las notas de la versión destacan las siguientes características para el panel de control:
- El acceso a la API se realiza mediante HTTPS con soporte para certificados autofirmados.
- Soporte para editar tareas en el panel. El usuario puede detener la tarea durante la ejecución y cambiar la carga útil y el número de ejecuciones.
- Se ha añadido la posibilidad de crear una tarea por ID de bot. Muy adecuado para las cargas puntuales.
- Se ha añadido una ventana paso a paso para la creación de tareas.
- Una notificación que permite conocer los bots necesarios en línea.
- Se ha aumentado la unicidad del ID del bot.
- Se han añadido etiquetas al panel, lo que permite clasificar los bots para realizar acciones posteriores con ellos.
- Se muestra el nombre del ordenador en la tabla.
- Se ha mejorado la compatibilidad criptográfica.
- Se ha añadido el historial de bots.
- «El panel ahora se expande a Docker» (soporte de contenedores Docker).
- Nota del investigador de Proofpoint: Suponemos que esta característica es para facilitar la integración en hosts Docker alquilados, simplificando la instalación, aunque potencialmente el panel/C&C podría ser instalado en un host Docker comprometido.
- Validación del archivo en el panel. Ahora el panel no perderá el archivo que el cargador no podrá descargar y notificará al cliente sobre esto.
- Las tareas ahora se pueden repetir.
Por último, el autor describió los siguientes cambios técnicos para la versión 1.1.9. Estos son dignos de mención, ya que demuestran que el malware está en desarrollo activo y profesional.
- El cargador ha adquirido un nuevo método para lanzar Externo para archivos locales. Las ventajas del método son la singularidad y no CreateProcess / ShellExecute a través del cargador. El lanzamiento produce un proceso de confianza sin ningún comando para él.
- El panel tiene la capacidad de etiquetar todos los bots que han realizado una tarea específica. Esto permitirá al usuario distribuir la carga útil a ciertos grupos de bots.
- Implementación de la API de integración. Documentación disponible para ello.
- Agregada la capacidad de enviar un archivo por referencia en modo proxy. El archivo se transfiere al bot de forma encriptada.
- Se ha corregido el error de recuento de bots por país y se han añadido otras mejoras.
Capturas de pantalla del panel de control
Las siguientes capturas de pantalla del panel de control se incluyeron en el anuncio clandestino, mostrando algunas de las capacidades del back-end disponibles para los clientes, incluyendo la monitorización de telemetría, el filtrado de hosts y más.
Figura 6: UX de inicio de sesión del panel de control de Buer Loader C&C
Figura 7: Pantalla de monitorización de telemetría del panel de control de Buer.
Figura 8: Pantalla de monitorización de telemetría de bots en modo oscuro para el panel de control de Buer.
Figura 9: Vista del filtro del panel de control que muestra los bots remotos filtrados por la arquitectura de Microsoft Windows.
Figura 10: Vista del panel de control que muestra la gestión de archivos para las tareas del cargador
Figura 11: Vista del panel de control de los bots remotos ordenados por derechos de usuario.
Figura 12: Vista del panel de control, estado de la tarea
Figura 13: Vista del panel de control, creación de una tarea
Análisis del malware
Buer Loader es un nuevo malware descargador que descarga y ejecuta cargas útiles adicionales.
Características antianálisis
El cargador contiene algunas funcionalidades básicas antianálisis:
- Comprueba si hay depuradores inspeccionando el NtGlobalFlag en el Bloque de Entorno de Proceso (PEB) y el Bloque de Entorno de Hilo (TEB)
- Comprueba si hay máquinas virtuales utilizando la Píldora Roja , la Píldora No , y mecanismos relacionados
- Comprueba la configuración regional para asegurarse de que el malware no se ejecuta en países específicos (Figura 14)
Figura 14: Comprobación del malware para asegurarse de que no se ejecuta en países específicos
Persistencia
La persistencia se establece configurando una entrada RunOnce del Registro. Dependiendo de la versión, la entrada del registro ejecutará el malware directamente o programará una tarea para ejecutarlo.
Cadenas cifradas
Este ejemplo contiene una función para cifrar cadenas.
Figura 15: Secuencia de descifrado para cadenas
La siguiente función es un ejemplo de cómo descifrar las cadenas cifradas en Ghidra utilizando Jython:
Figura 16: Secuencia de descifrado de cadenas (versión Python)
Figura 17: Ejemplo de descifrado de cadenas
Llamadas a la API de Windows
Este ejemplo utiliza un algoritmo hashing para resolver la mayoría de sus llamadas a la API de Windows. El algoritmo de hashing asegura que cada carácter del nombre de la API es una letra mayúscula. A continuación, gira a la derecha (ROR) cada carácter por 13 y los suma.
Figura 18: Algoritmo de hashing para resolver las llamadas a la API de Windows
La siguiente función es un ejemplo de cómo se puede utilizar Python para ayudar a resolver las llamadas a la API.
Figura 19: Ejemplo de script de Python utilizado para ayudar a resolver las llamadas de la API de Windows con hash
La siguiente tabla contiene una lista de algunos hashes seleccionados utilizados y su correspondiente nombre de la API de Windows:
CrearMutexW |
0xed619452 |
AbrirMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tabla 1: Llamadas a la API de Windows con hashes seleccionados
Comando y control
Las funciones de comando y control (C&C) se gestionan a través de peticiones HTTP(S) GET. Un ejemplo de baliza de comando se parece a la Figura 20:
Figura 20: Ejemplo de baliza de comando
Estas solicitudes van a la «API de actualización» y contienen un parámetro cifrado. Este parámetro puede ser descifrado por:
- Descodificación Base64
- Descodificación Hex
- Descifrado RC4 (la clave utilizada en las muestras analizadas fue «CRYPTO_KEY»)
Un ejemplo del parámetro en texto plano es:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Contiene datos delimitados por tuberías.delimitado por tuberías que consiste en:
- Identificación del robot (compendio hexadecimal SHA-256 de varios parámetros del sistema como GUID y nombre del perfil de hardware, nombre del ordenador, número de serie del volumen, y CPUID)
- Un hash SHA-256 de su propia imagen ejecutable
- Versión de Windows
- Tipo de arquitectura
- Número de procesadores
- Privilegios de usuario
- Nombre del ordenador
En la Figura 21 se muestra un ejemplo de respuesta de baliza de comando:
Figura 21: Ejemplo de respuesta de baliza de comando
Se puede descifrar de forma similar al parámetro de solicitud anterior, excepto que los bytes codificados en hexadecimal están separados por caracteres de guión. Un ejemplo de respuesta en texto plano se muestra en la Figura 22:
Figura 22: Respuesta de baliza de comando en texto plano
El texto descifrado es un objeto JSON que contiene varias opciones sobre cómo descargar y ejecutar una carga útil:
- type – hay dos tipos:
- update – update self
- download_and_exec – download and execute
- options – especifica opciones para la carga útil a descargar:
- Hash – sólo aplicable al tipo «update» para determinar si hay una nueva actualización disponible
- x64 – si la carga útil es de 64 bits
- FileType – no se utiliza en las muestras analizadas
- AssemblyType – no se utiliza en las muestras analizadas
- AccessToken – se utiliza para descargar la carga útil (véase más adelante)
- External – indica si la carga útil se descarga del C&C o de una URL externa
- method – método de ejecución:
- exelocal – crear proceso
- memload – inyectar y cargar manualmente el payload
- memloadex – inyectar y cargar manualmente el payload
- loaddllmem – inyectar y cargar manualmente el payload
- parameters – parámetros a pasar en la línea de comandos
- pathToDrop – no se utiliza en las muestras analizadas
- autorun – indica si se debe configurar la persistencia del Registry RunOnce para el payload
- modules – véase la sección Módulos más adelante
- timeout – no se utiliza en las muestras analizadas
Los payloads que se descargan del servidor de C&C se hacen a través de peticiones a la «API de descarga» como se ve en la Figura 23:
Figura 23: Descarga de la carga útil de C&C
A continuación se muestra un ejemplo del parámetro de solicitud en texto plano:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Contiene el ID del bot y el «AccessToken» de la respuesta de la baliza de comando. Si la carga útil se descarga desde el C&C, se cifra con RC4. En las muestras analizadas la clave era «CRYPTO_KEY».
Módulos
La respuesta de la baliza de comando contiene una lista de «módulos». Los investigadores de Proofpoint aún no han observado que los módulos de Buer se utilicen en la naturaleza, pero basándose en el código, esta lista contendrá módulos AccessTokens. El nombre del archivo del módulo se consulta enviando un AccessToken a la «API del módulo» del C&C. A continuación, el módulo se descargará utilizando la «API downloadmodule». Una vez descargado y descifrado, se carga utilizando el método «loaddllmem».
Conclusión
Un nuevo downloader, Buer, ha aparecido recientemente en una variedad de campañas, a través de malvertising que lleva a kits de exploits; como carga útil secundaria a través de Ostap; y como carga útil primaria descargando malware como el troyano bancario The Trick.
El nuevo cargador cuenta con sólidas funciones de geotargeting, perfilado del sistema y antianálisis, y actualmente se comercializa en foros clandestinos con servicios de configuración de valor añadido. El autor o autores de habla rusa están desarrollando activamente el descargador con sofisticados paneles de control y un rico conjunto de características, lo que hace que el malware sea competitivo en los mercados clandestinos.
El descargador está escrito en C, mientras que el panel de control está escrito en el núcleo de .NET, lo que indica una optimización para el rendimiento y una pequeña huella de descarga, así como la capacidad de instalar fácilmente el panel de control en los servidores Linux – el soporte incorporado para los contenedores Docker facilitará aún más su proliferación en los hosts alquilados utilizados con fines maliciosos, y potencialmente, los hosts comprometidos también. Esta última capacidad se incluye en sus características anunciadas y en las notas de la versión.
Got it, but I don't know what this is. Downloaded Word doc: https://t.co/Y8tX8wTsOa – Follow-up EXE persistent on the infected Windows host: https://t.co/sowNIRDPbI pic.twitter.com/4isqbsMAa9
— Brad (@malware_traffic) October 11, 2019
https://www.cert.pl/en/news/single/ostap-malware-analysis-backswap-dropper/
https://www.proofpoint.com/us/threat-insight/post/ostap-bender-400-ways-make-population-part-with-their-money
https://www.aldeid.com/wiki/X86-assembly/Instructions/sidt
https://www.aldeid.com/wiki/X86-assembly/Instructions/sldt
Indicadores de compromiso (IOC)
IOC |
IOC Type |
Description |
fa699eab565f613df563ce47de5b82bde16d69c5d0c05ec9fc7f8d86ad7682ce |
sha256 |
|
http[://45.76.247[.177:8080/api/update/ |
URL |
Buer C&C callback |
6c694df8bde06ffebb8a259bebbae8d123effd58c9dd86564f7f70307443ccd0 |
sha256 |
|
197163b6eb2114f3b565391f43b44fb8d61531a23758e35b11ef0dc44d349e90 |
sha256 |
|
https[://173.212.204[.171/api/update/ |
URL |
Buer C&C callback |
9e8db7a722cc2fa13101a306343039e8783df66f4d1ba83ed6e1fe13eebaec73 |
sha256 |
(Fallout Drop) |
http[://134.0.119[.53:8080/api/update/ |
URL |
Buer C&C callback |
ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f |
sha256 |
(Ostap drop) |
https[://garrisontx[.us/api/update/ |
URL |
Buer C&C callback |
https[://185.130.104[.187/nana/kum.php?pi=18b |
URL |
Ostap de la instancia de caída de Buer – 2019-10-21 |
753276c5887ba5cb818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
dominio|IP |
Buer C&C 2019-11-28 |
ET y ETPRO Suricata/Snort Signatures
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029078 | ET TROJAN Buer Loader Download Request
2839684 | ET TROJAN Buer Loader Successful Payload Download
2029080 | SSL/TLS Certificate Observed (Buer Loader)