Seth GoodwinDaniel Stepanic

BITS y Bytes: Analizando BITSLOTH, una puerta trasera recién identificada

Elastic Security Labs identificó una novedosa puerta trasera de Windows que aprovecha el Background Intelligent Transfer Service (BITS) para C2. Este malware se encontró durante un grupo de actividad reciente rastreado como REF8747.

19 min de lecturaAnálisis de malware
BITS y Bytes: Análisis de BITSLOTH, una puerta trasera recientemente identificada

BITSLOTH de un vistazo

BITSLOTH es una puerta trasera de Windows recién descubierta que aprovecha el Servicio de Transferencia Inteligente en Segundo Plano (BITS) como su mecanismo de comando y control. BITSLOTH fue descubierto durante una intrusión en la región de LATAM a principios de este verano. Este malware no se documentó públicamente hasta donde sabemos y, aunque no está claro quién está detrás del malware, estuvo en desarrollo durante varios años en función del seguimiento de distintas versiones cargadas en VirusTotal.

La iteración más reciente de la puerta trasera en el momento de esta publicación tiene 35 funciones de controlador, incluidas las capacidades de registro de teclas y captura de pantalla. Además, BITSLOTH contiene muchas características diferentes para la detección, la enumeración y la ejecución de la línea de comandos. Sobre la base de estas capacidades, evaluamos que esta herramienta está diseñada para recopilar datos de las víctimas.

Conclusiones clave

  • BITSLOTH es una puerta trasera de Windows recién descubierta
  • BITSLOTH emplea una función integrada de Microsoft, Background Intelligent Transfer Service (BITS) para la comunicación de comando y control
  • BITSLOTH tiene numerosos controladores de comandos que se emplean para fines de detección/enumeración, ejecución y recopilación
  • La puerta trasera contiene funciones de registro y cadenas coherentes con los autores que son hablantes nativos de chino

Descubrimiento

Nuestro equipo observó que BITSLOTH se instaló en un entorno de servidor el 25 de junio durante REF8747, esto fue una intrusión en el Ministerio de Relaciones Exteriores de un gobierno sudamericano. La intrusión se remonta a la ejecución de PSEXEC en uno de los puntos finales infectados. Los atacantes emplearon una gran cantidad de herramientas disponibles públicamente para la mayoría de sus operaciones, con la excepción de BITSLOTH.

Uno de los principales mecanismos de ejecución fue a través de un proyecto de carga de shellcode llamado RINGQ. De manera similar a DONUTLOADER, RINGQ convertirá cualquier ejecutable de Windows y generará un shellcode personalizado colocándolo en un archivo ( main.txt). Este shellcode se descifra y se ejecuta en memoria. Esta técnica se emplea para eludir las defensas que se basan en listas de bloqueo de hash o firmas estáticas en algunos productos antimalware.

Observamos que RINGQ se empleaba para cargar el reenviador de puertos IOX. Nota: La clave en la imagen de abajo es la conversión hexadecimal de "whoami".

Además, los atacantes emplearon la utilidad STOWAWAY para redirigir el tráfico cifrado a través de HTTP a sus servidores C2. Las herramientas de proxy, los tuneladores y los redirectores se emplean habitualmente durante las intrusiones para ocultar al adversario responsable de una intrusión. Estas herramientas ofrecen a los adversarios varias características, incluida la capacidad de eludir los controles de red internos, proporcionar interfaces de terminal, capacidades de cifrado y opciones de transferencia de archivos.

Luego del acceso inicial, el actor se movió lateralmente y soltó BITSLOTH en forma de DLL (flengine.dll) dentro del directorio ProgramData. A continuación, el actor correr el programa de creación musical FL Studio (fl.exe). Sobre la base de la pila de llamadas observada asociada con la alerta de autoinyección, confirmamos que el actor de amenazas empleó una técnica tradicional de carga lateral empleando una versión firmada de FL Studio.

  c:\windows\syswow64\ntdll.dll!0x770841AC
  c:\windows\syswow64\ntdll.dll!0x7709D287
  c:\windows\syswow64\kernelbase.dll!0x76ED435F
  c:\windows\syswow64\kernelbase.dll!0x76ED42EF
  Unbacked!0x14EAB23
  Unbacked!0x14EA8B6
  c:\programdata\pl studio\flengine.dll!0x74AD2F2E
  c:\programdata\pl studio\fl.exe!0xDB3985
  c:\programdata\pl studio\fl.exe!0xDB3E5E
  c:\programdata\pl studio\fl.exe!0xDB4D3F
  c:\windows\syswow64\kernel32.dll!0x76B267F9
  c:\windows\syswow64\ntdll.dll!0x77077F4D
  c:\windows\syswow64\ntdll.dll!0x77077F1B

Esta pila de llamadas se generó junto con una alerta de inyección de procesos y permitió a los investigadores extraer un archivo DLL en memoria que se estableció con protecciones de página de lectura/escritura/ejecución (RWX).

BITSLOTH overview

Durante nuestro análisis, encontramos varias muestras más antiguas de BITSLOTH que demuestran un historial de desarrollo desde diciembre de 2021. Dentro de este proyecto, el desarrollador de malware eligió una terminología notable, referir a BITSLOTH como el componente Slaver y al servidor de comando y control como el componente Master . A continuación se muestra un ejemplo de una de las rutas de archivo PDB vinculadas a BITSLOTH que muestra esto:

BITSLOTH no emplea ninguna ofuscación en torno al flujo de control ni ningún tipo de cifrado de cadenas.

Tanto los ejemplos antiguos como los recientes contienen cadenas que se usan con fines de registro y depuración. Como ejemplo al inicio, hay una cadena a la que se hace referencia en la sección de solo lectura (.rdata).

Esta cadena de caracteres anchos en chino simplificado se traduce como: Note: There is already a program running, do not run it again…

Estos pequeños fragmentos contenidos en BITSLOTH ayudan a arrojar luz sobre el desarrollo y la priorización de características, junto con lo que parecen ser instrucciones para el operador. En la última versión, el desarrollador agregó un nuevo componente de programación para controlar momentos específicos en los que BITSLOTH debería operar en un entorno víctima. Esta es una característica que observamos en otras familias de malware modernas, como EAGERBEE.

Análisis de código de BITSLOTH

BITSLOTH es una puerta trasera con muchas capacidades diferentes, entre ellas:

  • Ejecución y ejecución de comandos
  • Carga y descarga de archivos
  • Realización de la enumeración y la detección
  • Recopilación de datos confidenciales a través del registro de teclas y la captura de pantalla

Exclusión mutua

BITSLOTH emplea una exclusión mutua codificada de forma rígida (Global\d5ffff77ff77adad657658) dentro de cada muestra para garantizar que solo se ejecute una instancia a la vez.

Comunicación

BITSLOTH adopta una arquitectura cliente/servidor tradicional, el desarrollador se refiere al cliente como el componente Slaver y al servidor de comando y control (C2) como el componente Master . El desarrollador incrusta la IP/puerto del servidor C2 en cada ejemplo con una cadena de carga frontal (rrrr_url). Esta cadena actúa como una clave para identificar la configuración de C2 en sí misma mientras se ejecuta en la memoria, esto se usa al actualizar el servidor C2.

A continuación se muestran las configuraciones en varios ejemplos que nuestro equipo observó, el actor de amenazas configura rangos de IP internos y externos.

rrrr_url216.238.121[.]132:8443
rrrr_url192.168.1[.]125:8443 
rrrr_url192.168.1[.]124:8443
rrrr_url45.116.13[.]178:443

Una de las características definitorias de BITSLOTH es el uso del Servicio de Transferencia Inteligente en Segundo Plano (BITS) para C2. Si bien esta función fue diseñada para facilitar la transferencia de archivos en red entre dos máquinas, fue abusada por múltiples grupos patrocinados por el estado y continúa volando bajo el radar contra las organizaciones. Este medio es atractivo para los adversarios porque muchas organizaciones todavía tienen dificultades para monitorear el tráfico de red de BITS y detectar trabajos de BITS inusuales.

Windows tiene una función de administración del sistema llamada Servicio de transferencia inteligente en segundo plano (BITS) que permite la descarga y carga de archivos en servidores sitio web HTTP o recursos compartidos SMB. El servicio BITS emplea múltiples características durante el proceso de transferencia de archivos, como la capacidad de pausar/reanudar transferencias, manejar interrupciones de red, etc. El tráfico BITS generalmente se asocia con actualizaciones de software, por lo tanto, se implica erróneamente como confiable. Muchas organizaciones carecen de visibilidad del tráfico de red BITS, lo que lo convierte en un objetivo atractivo.

La API de BITS se expone a través del modelo de objetos componentes (COM) de Windows mediante la interfaz IBackgroundCopyManager. Esta interfaz proporciona capacidades para crear nuevos trabajos, enumerar los trabajos existentes en la cola de transferencia y acceder a un trabajo específico desde una cola de transferencia.

Luego de la inicialización, BITSLOTH cancela todos los trabajos de BITS existentes en el equipo víctima que coincidan con los siguientes nombres para mostrar:

  • WU Client Download
  • WU Client Upload
  • WU Client Upload R

El desarrollador usa estos nombres para combinar y asociar los diferentes trabajos de transferencia de BITS con su respectivo tipo de trabajo de BITS. Al cancelar los trabajos existentes, esto permite que la ejecución del malware opere desde un estado limpio.

A continuación se muestran las definiciones de Microsoft que coinciden con el tipo de trabajo de BITS:

  • BG_JOB_TYPE_DOWNLOAD : especifica que el trabajo descarga archivos en el cliente.
  • BG_JOB_TYPE_UPLOAD : especifica que el trabajo carga un archivo en el servidor.
  • BG_JOB_TYPE_UPLOAD_REPLY : especifica que el trabajo carga un archivo en el servidor y recibe un archivo de respuesta de la aplicación de servidor.

Luego de cancelar los trabajos existentes, la dirección MAC y la información del sistema operativo se recuperan y se colocan en variables globales. Se crea un nuevo subproceso, configurando la funcionalidad de inicio automático. Dentro de este subproceso, se crea un nuevo trabajo de descarga de BITS con el nombre (Microsoft Windows).

Este trabajo de descarga establece la URL de destino en http://updater.microsoft[.]com/index.aspx. Si bien este dominio no es enrutable, BITSLOTH enmascara este trabajo de BITS usando un dominio de aspecto benigno como cobertura y luego usa SetNotifyCmdLine para ejecutar el malware cuando se cambia el estado de transferencia.

Curiosamente, esta marca de herramienta única nos permitió pasar a muestras adicionales que muestran que esta familia estuvo en circulación durante varios años.

En este punto, el malware ahora se configuró con persistencia a través de un trabajo de BITS llamado Microsoft Windows. A continuación se muestra una captura de pantalla de la configuración de este trabajo que muestra la línea de comandos de notificación establecido en la ubicación de BITSLOTH (C:\ProgramData\Media\setup_wm.exe)

Una vez que BITSLOTH se active, comenzará a aplicar instrucciones al servidor C2 empleando el trabajo WU Client Download . Esta URL de solicitud se genera combinando la dirección MAC con una cadena codificada de forma rígida (wu.htm). A continuación se muestra una URL de ejemplo:

https://192.168.182.130/00-0C-29-0E-29-87/wu.htm

En respuesta a esta solicitud, el malware recibirá una estructura de 12 bytes del servidor C2 que contiene un ID único para el trabajo, un ID de comando para el controlador y un token de respuesta. A lo largo de estos intercambios de transferencias de archivos, los archivos temporales de la máquina víctima se emplean como marcadores de posición para contener los datos que se transmiten de un lado a otro, BITSLOTH emplea un nombre de archivo que comienza con caracteres (wm) agregados por caracteres aleatorios.

Funcionalidad de comandos

BITSLOTH emplea un controlador de comandos con funciones 35 para procesar acciones específicas que se deben realizar en la máquina víctima. El malware tiene la opción de configurar con HTTP o HTTPS y emplea un XOR de un solo byte codificado (0x2) para ofuscar las instrucciones entrantes del servidor C2. Las solicitudes salientes que contienen los datos recopilados de la víctima no tienen protecciones adicionales por parte del propio malware y se envían en texto sin formato.

Con el fin de avanzar rápido, nuestro equipo aprovechó una útil implementación de Python de un servidor BITS lanzado por SafeBreach Labs. Al establecer la IP C2 en nuestra dirección de bucle invertido dentro de una máquina virtual, esto nos permitió obtener una introspección sobre el tráfico de red.

Todos los controladores se comportan de manera similar: realizan una función principal y, a continuación, escriben los datos devueltos por el controlador en un archivo temporal local. A continuación, estos archivos temporales se asignan a un trabajo de carga de BITS denominado WU Client Upload. Cada controlador usa su propio formato de cadena para crear una dirección URL de destino única. Cada nombre de archivo al final de la URL emplea una sola letra para representar el tipo de datos recopilados del host, como P.bin para procesos o S.bin para servicios.

http://192.168.182.130/00-0C-29-0E-29-87/IF/P.bin

A continuación se muestra una captura de pantalla de ejemplo que muestra el controlador de enumeración de procesos con el formato de cadena y cómo estos datos se vinculan al trabajo de carga de BITS.

Este vínculo a los datos exfiltrados también se puede observar visualizando directamente el trabajo de carga de BITS. En las capturas de pantalla a continuación, podemos ver la URL de destino (servidor C2) para la carga y el archivo temporal (wm9F0C.tmp) vinculado al trabajo.

Si nos fijamos en el archivo temporal, podemos ver la información del proceso recopilada del host víctima.

Poco luego de crear el trabajo de carga, los datos se envían a través de la red a través de una solicitud BITS_POST que contiene los datos capturados.

Tabla de manejo de comandos

ID de comandoDescripción
0Recopilación de procesos en ejecución a través de WTSEnumerateProcessesW
1Obtener servicios de Windows a través de EnumServicesStatusW
2Obtener información del sistema a través de systeminfo comando
3Recuperar todas las ventanas de nivel superior a través de EnumWindows
5Recopilar listados de archivos
6Descargar archivo desde el servidor C2
7Subir archivo al servidor C2
10Terminar en sí mismo
11Establecer el modo de comunicación en HTTPS
12Establecer el modo de comunicación en HTTP
13Eliminación de la persistencia
14Reconfigurar la persistencia
15Cancelar trabajo de descarga de BITS (WU Client Download)
16Eliminar la persistencia y eliminar a sí mismo
17Configuración de subprocesos
18Duplicado del controlador #2
19Eliminar archivo en función de la ruta del archivo
20Eliminar carpeta en función de la ruta del archivo
21Inicia el shell de terminal mediante la redirección stdin/stdout
22Restablece el controlador de terminal (#21)
23Ejecuta el comando de árbol de Windows
24Actualiza BITSLOTH, elimina la versión anterior
25Apague la máquina a través de ExitWindowsEx
26Resetear la máquina a través de ExitWindowsEx
27Cerrar la sesión del usuario en el equipo a través de ExitWindowsEx
28Terminar el proceso en función del identificador de proceso (PID)
29Recupera información adicional a través de msinfo32 comando
30Ejecutar archivo individual a través de ShellExecuteW
34Crear un nuevo directorio a través de CreateDirectoryW
41Carga de datos en el servidor C2
42Comprobaciones del controlador de captura a través de capGetDriverDescriptionW
43Tome capturas de pantalla del escritorio de la máquina víctima
44Registre las pulsaciones de teclas de la máquina víctima
45Detener la grabación de imágenes de captura de pantalla
46Detener la funcionalidad del keylogger

Funcionalidad de puerta trasera

BITSLOTH incluye una amplia gama de capacidades posteriores al compromiso para que un adversario opere dentro de un entorno víctima. Nos centraremos en las capacidades más significativas agrupándolas en diferentes categorías.

Discovery/enumeration

Una parte de los controladores de BITSLOTH se centran en recuperar y enumerar datos de las máquinas víctimas. Esto incluye:

  • Recuperación de información de proceso a través de WTSEnumerateProcessesW
  • Recopilación de servicios de Windows a través de EnumServicesStatusW
  • Enumeración de todas las ventanas de nivel superior a través de EnumWindows con una función de devolución de llamada
  • Recuperación de información del sistema a través de utilidades de Windows como systeminfo y msinfo32

En muchos de los controladores, la versión de configuración regional está configurada para chs (chino - simplificado).

BITSLOTH tiene un par de funciones de enumeración personalizadas vinculadas a la recuperación de listados de archivos y la realización de búsquedas en árboles de directorios. El controlador de lista de archivos toma un parámetro personalizado del operador para dirigir a ubicaciones de carpeta específicas de interés:

  • GET_DESKDOPCSIDL_DESKTOPDIRECTORY (Escritorio)
  • GET_BITBUCKET -> CSIDL_BITBUCKET (Papelera de reciclaje)
  • GET_PERSONAl -> CSIDL_MYDOCUMENTS (Mis documentos)

BITSLOTH también tiene la capacidad de recopilar listados completos de directorios/archivos en la máquina para cada archivo mediante el uso de la utilidad de árbol de Windows. Este controlador recorre el alfabeto de cada letra de unidad y los datos se almacenan localmente en un archivo temporal denominado aghzyxklg.

A continuación, los datos del árbol se comprimen y se envían al servidor C2 con una extensión .ZIP. A continuación se muestra un ejemplo de los datos recopilados. Estos datos pueden ayudar a identificar archivos confidenciales o proporcionar más contexto sobre el entorno de destino.

Colección

En cuanto a la recopilación, hay algunos controladores que se emplean para recopilar información de forma activa. Estos se centran en capturar capturas de pantalla desde el escritorio y realizar la funcionalidad de registro de teclas.

BITSLOTH implementa una función ligera que se emplea para identificar dispositivos de grabación de capturas, esto parece ser una técnica para buscar una cámara empleando la API de Windows (capGetDriverDescriptionW).

BITSLOTH tiene la capacidad de tomar capturas de pantalla en función de los parámetros proporcionados por el operador. La entrada a esta función emplea un separador (||) donde el operador proporciona el número de segundos del intervalo de captura y el recuento de capturas. Las imágenes se almacenan como archivos BMP con un nombre codificado de forma rígida ciakfjoab y se comprimen con el algoritmo DEFLATE empleando un archivo .ZIP . Estos archivos comprimidos con marca de tiempo se envían al servidor C2.

El controlador aprovecha las API de capturas de pantalla comunes, como CreateCompatibleBitmap y BitBlt, de Gdi32.dll.

Para registrar las pulsaciones de teclas, BITSLOTH usa técnicas tradicionales mediante la supervisión de las pulsaciones de teclas mediante GetAsyncKeyState/GetKeyState. El controlador tiene un argumento para el número de segundos que se deben realizar el registro de teclas. Estos datos también se comprimen en un archivo .ZIP y se envían al servidor C2.

Ejecución / Mantenimiento

BITSLOTH tiene múltiples capacidades en torno al mantenimiento y la ejecución de archivos, así como funcionalidades estándar de puerta trasera como:

  • Capacidad para ejecutar archivos de forma independiente a través de ShellExecuteW
  • Capacidad del terminal de Windows para ejecutar comandos y leer datos a través de canalizaciones
  • Crear directorios, realizar reinicios, apagar la máquina, finalizar procesos
  • Realizar la carga y descarga de archivos entre el servidor C2
  • Modifique la configuración de BITSLOTH, como los modos de comunicación, actualice la URL C2, desactive las funciones de registro de teclas/captura de pantalla

BITSLOTH pivots

BITSLOTH parece estar desplegado activamente. Identificamos otro servidor BITSLOTH C2 (15.235.132[.]67) empleando el mismo puerto (8443) con el mismo certificado SSL empleado por nuestra intrusión.

While it’s not exactly clear who’s behind BITSLOTH, there was a large amount of activity of VirusTotal uploads occurring on December 12, 2021. With around 67 uploads over 24 hours from one submitter (1fcc35ea), we suspect someone linked to this project was validating detections, making modifications, and uploading different versions of BITSLOTH to VirusTotal. One sample was packed with VMProtect, others stripped of functionality, some uploads were debug builds, etc.

Pasó mucho tiempo desde entonces, pero es interesante ver a esta familia aparecer en una intrusión reciente. Sea cual sea el objetivo de este malware, es sorprendente que esta familia pasó desapercibida durante tantos años.

REF 8747 a través de MITRE ATT&CK

Elastic usa el framework MITRE ATT&CK para documentar tácticas, técnicas y procedimientos comunes que las amenazas persistentes avanzadas emplean contra las redes empresariales.

[h4] Táctica Las tácticas representan el porqué de una técnica o subtécnica. Es el objetivo táctico del adversario: la razón para realizar una acción.

Técnicas

Las técnicas representan cómo un adversario logra un objetivo táctico mediante la realización de una acción.

Detección de REF8747

Detección

A lo largo del análisis de este conjunto de intrusiones, se observaron las siguientes reglas de detección y eventos de prevención de comportamiento:

Firmas YARA

YARA

Elastic Security creó reglas YARA para identificar esta actividad. A continuación se muestran las reglas de YARA para identificar a BITSLOTH:

rule Windows_Trojan_BITSLOTH_05fc3a0a {
    meta:
        author = "Elastic Security"
        creation_date = "2024-07-16"
        last_modified = "2024-07-18"
        os = "Windows"
        arch = "x86"
        threat_name = "Windows.Trojan.BITSLOTH"
  	 license = "Elastic License v2"

    strings:
        $str_1 = "/%s/index.htm?RspID=%d" wide fullword
        $str_2 = "/%s/%08x.rpl" wide fullword
        $str_3 = "/%s/wu.htm" wide fullword
        $str_4 = "GET_DESKDOP" wide fullword
        $str_5 = "http://updater.microsoft.com/index.aspx" wide fullword
        $str_6 = "[U] update error..." wide fullword
        $str_7 = "RMC_KERNEL ..." wide fullword
        $seq_global_protocol_check = { 81 3D ?? ?? ?? ?? F9 03 00 00 B9 AC 0F 00 00 0F 46 C1 }
        $seq_exit_windows = { 59 85 C0 0F 84 ?? ?? ?? ?? E9 ?? ?? ?? ?? 6A 02 EB ?? 56 EB }
    condition:
        2 of them
}

Observaciones

Todos los observables también están disponibles para su descarga en formato ECS y STIX en un paquete zip combinado.

En esta investigación se discutieron los siguientes observables.

ObservableTipoNombreReferencia
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45dfSHA-256s.dllBITSLOTH
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88SHA-256125.exeBITSLOTH
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50SHA-256setup_wm.exeBITSLOTH
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507SHA-2561242.exeBITSLOTH
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afdSHA-256setup_wm.exeBITSLOTH (VMProtect)
216.238.121[.]132IPv4-ADDRServidor BITSLOTH C2
45.116.13[.]178IPv4-ADDRServidor BITSLOTH C2
15.235.132[.]67IPv4-ADDRServidor BITSLOTH C2
http ://updater.microsoft.com/index.aspxIndicador de archivo BITSLOTH
updater.microsoft.comIndicador de archivo BITSLOTH

Referencias

A lo largo de la investigación anterior se hizo referencia a lo siguiente:

Acerca de Elastic Security Labs

Elastic Security Labs es la rama de inteligencia de amenazas de Elastic Security dedicada a crear cambios positivos en el panorama de amenazas. Elastic Security Labs proporciona investigación disponible públicamente sobre amenazas emergentes con un análisis de los objetivos estratégicos, operativos y tácticos del adversario, y luego integra esa investigación con las capacidades de detección y respuesta integradas de Elastic Security.

Sigue a Elastic Security Labs en Twitter @elasticseclabs y echa un vistazo a nuestra investigación en www.elastic.co/security-labs/.