Introducción
El famoso troyano bancario Qbot ha estado en el negocio por más de una década. El malware, que también ha sido apodado Qakbot y Pinkslipbot, fue descubierto en 2008 y es conocido por recopilar datos de navegación y robar credenciales bancarias y otra información financiera de las víctimas. Es altamente estructurado, de varias capas, y se está desarrollando continuamente con nuevas características para ampliar sus capacidades. . Estos nuevos «trucos» significan que a pesar de su edad, Qbot sigue siendo una amenaza peligrosa y persistente para las organizaciones. Se ha convertido en el equivalente de malware de un cuchillo del ejército suizo, capaz de:
- Robar información de máquinas infectadas, incluyendo contraseñas, correos electrónicos, detalles de tarjetas de crédito y más.
- Instalación de otro malware en máquinas infectadas, incluyendo ransomware
- Permitir que el controlador Bot se conecte al ordenador de la víctima (incluso cuando la víctima ha iniciado sesión) para realizar transacciones bancarias desde la dirección IP de la víctima
- Secuestrar los hilos de correo electrónico legítimos de los usuarios de su cliente de Outlook y usar esos hilos para tratar de infectar los equipos de otros usuarios
Una campaña destacada con QBot se desarrolló desde marzo hasta finales de junio de este año. Asumimos que la campaña se detuvo para permitir que los que estaban detrás de QBot llevaran a cabo más desarrollo de malware, pero no imaginamos que volvería tan rápidamente.
Hacia finales de julio, una de las amenazas cibernéticas más graves de la actualidad, el troyano Emotet, volvió a la actividad completa y lanzó múltiples campañas malspam, impactando el 5% de las organizaciones en todo el mundo. Algunas de estas campañas incluyeron la instalación de una versión actualizada de Qbot en los pc de las víctimas. Unos días más tarde, identificamos una nueva muestra de Qbot descartada por la última campaña de Emotet, lo que nos llevó a descubrir una infraestructura de comando y control renovada y nuevas técnicas de malware distribuidos a través del proceso de infección de Emotet.
Por si eso no fuera suficiente para nosotros, la campaña de malspam de Qbot se reanudó a principios de agosto, extendiéndose globalmente e infectando nuevos objetivos. Uno de los nuevos trucos de Qbot es particularmente desagradable, ya que una vez que una máquina está infectada, activa un ‘módulo de recopilador de correo electrónico’ especial que extrae todos los hilos de correo electrónico del cliente de Outlook de la víctima, y lo carga a un servidor remoto codificado. Estos correos electrónicos robados se utilizan para futuras campañas malspam, lo que facilita a los usuarios ser engañados para hacer clic en archivos adjuntos infectados porque el correo electrónico de spam parece continuar una conversación de correo electrónico legítimo existente. Los investigadores de Check Point han visto ejemplos de hilos de correo electrónico dirigidos y secuestrados con temas relacionados con Covid-19, recordatorios de pago de impuestos y contrataciones de empleo.
Sobre la base de nuestra visibilidad, la mayoría de los ataques se hicieron contra organizaciones con sede en Estados Unidos y Europa como podemos ver en la Figura 1.
Figura 1 – Organizaciones atacadas por país
Entre ellos, las industrias más específicas estaban en los sectores gubernamental, militar y manufacturero.
Figura 2 – Organizaciones atacadas por la industria
Después de un análisis exhaustivo de estas nuevas muestras de QBot, compartiremos nuestros conocimientos e ideas sobre los siguientes temas:
- Proceso de infección de Qbot – hilos de correo electrónico secuestrados y descargadores de VBS.
- Su funcionalidad de carga útil y su versión se descomponen.
- Protocolo de comunicación C&C y obtención de módulos.
- Cómo una víctima se convierte en un potencial bot-proxy y varios métodos que expone el módulo Proxy.
Cadena de infección
La cadena de infección de QBot se describe en el siguiente diagrama de flujo y se discutirá en las siguientes secciones:
Figura 3 – Diagrama de la cadena de infección
Correo electrónico malintencionado
La cadena de infección inicial comienza enviando correos electrónicos especialmente diseñados a las organizaciones objetivo. El método es menos sofisticado que las técnicas de spear-phishing, pero tiene atributos adicionales que añaden a su credibilidad. Uno de ellos se llama «Hilos de correo electrónico secuestrados» – captura de conversaciones de correo electrónico archivadas y responder al remitente con el contenido malicioso. Esas conversaciones podrían ser capturadas usando el módulo de recopilador de correo electrónico de Qbot que describiremos más adelante.
Podemos ver en la Figura 4, Figura 5y Figura 6, ejemplos de estos métodos a partir de muestras enviadas por @malware_traffic en su blog:
Figura 4 – Ejemplo de hilo de correo electrónico relacionado CON COVID-19
Figura 5 – Ejemplo de hilo de correo electrónico para recordatorio de pago de impuestos
Figura 6 – Ejemplo de hilo de correo electrónico para el reclutamiento de trabajos
Cada uno de estos correos electrónicos contiene una dirección URL a un archivo ZIP con un archivo de script VBS – Visual Basic malintencionado.
Durante nuestro seguimiento de la campaña malspam, hemos visto cientos de URL diferentes para ZIP malicioso cayendo cuando la mayoría de ellos estaban comprometidos sitios de WordPress.
Infección de VBS
El método de infección basado en VBS es bastante nuevo para el malware, y se está utilizando desde abril 2020. En campañas anteriores, la cadena de infección comenzó con un documento de Word que contiene macros maliciosas.
Mientras que las macros anteriores tenían simple ofuscación y decodificación de cadenas, el archivo VBS contiene varios métodos más avanzados:
Tamaño de archivo – El tamaño del archivo es mayor que 35 MB, rellenado con bytes. Los archivos grandes suelen ser descartados por varios entornos sandbox debido a limitaciones de rendimiento.NULL
Temporizador de suspensión: el script retrasa su ejecución llamando a la API sleep. Este es otro método para evitar espacios aislados.
Ofuscación: el script contiene varios métodos de ofuscación, como los descritos en la figura 7.
Figura 7 – Métodos de ofuscación VBS
Cifrado – El archivo VBS descarga la carga útil Qbot de una de las 6 posibles URL cifradas codificadas. Estas direcciones URL se cifran mediante un cifrado XOR personalizado 3 veces con diferentes claves que se crean dinámicamente. Hemos creado un script de extracción al que se puede acceder en el Apéndice B.
Con el fin de apoyar la detección y la caza de archivos VBS maliciosos adicionales, Escribimos una regla YARA que se puede observar en el Apéndice A.
Similar al antiguo método de infección, el archivo VBS descarga y ejecuta la carga útil Qbot.
Qbot Payload
Análisis de versiones
En el transcurso de nuestro análisis, los operadores de Qbot actualizaron con frecuencia sus versiones y nos animaron a realizar un seguimiento y analizar los cambios en todas y cada una de las versiones. El hecho de que los desarrolladores dejaron una etiqueta de versión marcada en las muestras, nos permitió realizar este análisis más fácil.
Por ejemplo, echemos un vistazo a la etiqueta de versión como se muestra en el ejemplo desempaquetado a continuación:
Figura 8 – Versión principal y secundaria de la muestra
De eso, podemos deducir que la versión inicial de carga útil es, mientras que la versión principal de carga útil es . (La versión principal se lee como un valor hexadecimal)325/5
325/7
Durante los últimos meses, realizamos un seguimiento de las diferentes versiones de Qbot e identificamos algunas de las diferencias en cada versión, como se puede ver en la siguiente tabla.
destacado | Menor | Payload Minor | Marca de tiempo de la versión | Notas |
324 | 44 | 8 | 22 de enero de 2020 | Primera versión vista para la versión principal 324. |
324 | 353 | 53 | 3 de marzo de 2020 | |
324 | 375 | 65 | 13 de marzo de 2020 | |
324 | 379 | 70 | 20 de marzo de 2020 | Se ha añadido el comando 35 compatible con el módulo hVNC. |
324 | 383 | 74 | 1 de abril de 2020 | |
324 | 385 | 75 | 1 de abril de 2020 | |
324 | 388 | 79 | 8 de abril de 2020 | Añadido comando 10 – terminar proceso por nombre. |
324 | 390 | 127 | 10 de abril de 2020 | |
324 | 393 | 136 | 29 de abril de 2020 | El recurso JS Updater ya no está incluido. Los comandos JS Update se han ajustado respectivamente. |
324 | 399 | 141 | 7 de mayo de 2020 | Se ha añadido una larga lista de programas de análisis en la lista negra que forman parte del método anti-VM. |
324 | 401 | 142 | 28 de mayo de 2020 | |
325 | 5 | 7 | 29 de julio de 2020 | Introdujo nuevas técnicas análisis. Se han añadido comprobaciones anti-VM en el lado del servidor. |
325 | 7 | 13 | 31 de julio de 2020 | |
325 | 8 | 14 | 3 de agosto de 2020 | |
325 | 35 | 42 | 7 de agosto de 2020 | |
325 | 37 | 43 | August 11, 2020 | La última versión conocida hasta la escritura de este artículo. |
La fecha mencionada para cada ejemplo se basa en el atributo de tiempo de compilación ejecutable. Ese campo se puede cambiar a través de la desaplicación de tiempo, pero sospechamos que no se falsificó en estos casos.
También rastreamos las marcas de tiempo de la carga útil principal, y vimos que el tiempo de compilación era consistentemente minutos aparte de la carga útil inicial:
Figura 9 – Comparación del tiempo de compilación de ejemplo a carga útil
Esquemas de descifrado
El malware implementa varios esquemas de cifrado para ocultar su funcionalidad y datos de las víctimas, y proveedores de antivirus. Con el fin de analizar con éxito el malware y sus componentes, tuvimos que automatizar el proceso de descifrado para todas las variantes.
En la tabla siguiente se muestran los diferentes métodos de descifrado y decodificación:
Datos cifrados | Algoritmo | Fuente clave |
Datos de red | Base64 + RC4 | KEY = SHA1(ENCRYPTED[0:16] + "jHxastDcds)oMc=jvh7wdUhxcsdt2") |
Carga útil (recurso «307») | RC4 + Compresión personalizada | KEY = ENCRYPTED[0:20] |
Archivo Javascript Updater | RC4 + Compresión personalizada | KEY = ENCRYPTED[0:20] |
Lista de bots (recurso «311») y configuración inicial (recurso «308») | RC4 | KEY = ENCRYPTED[0:20] |
Archivo de configuración «.dat», archivo Web-Inject, módulo de enlace | RC4 | KEY = SHA1(EXE_NAME) |
Información robada «.dll» Archivo | RC4 | srand(CRC32(BOT_ID)) KEY = RANDOM_STRING_32 |
Carga útil inicial
Carga útil inicial de Qbot ha sido cubierto extensamente por otros investigadores de malware. Las últimas versiones han implementado varios componentes de malware típicos para reducir su visibilidad y endurecer su análisis:
Packer: el ejecutable se ha reconstruido con un empaquetador.
Random Directory Name ( Random Directory Name): permite crear un directorio de trabajo con nombres de directorio y archivo aleatorios para evitar las firmas de archivos. La ubicación del directorio es . El ejemplo del directorio de trabajo se puede observar en la Figura 11.%APPDATA%\Microsoft
Cifrado de cadenas: contiene cadenas cifradas mediante el cifrado XOR (también se aplica a otros módulos).
Tabla de importación dinámica – Importar tabla creada dinámicamente en función de cadenas cifradas (se aplica también a otros módulos).
Técnicas anti-VM y Anti-Debug:
- Las últimas versiones buscan artefactos relacionados con máquinas virtuales en el lado del servidor. configuración del ordenador de la víctima se está enumerando y enviado al C2. Basándose en esa información, el servidor decide si es seguro «empujar» módulos a la víctima.
- Buscando la existencia del puerto «VMWare»
- Búsqueda de VM y procesos relacionados con el análisis. Las últimas versiones también añade una larga lista de programas de análisis en la lista negra:
Fiddler.exe;samp1e.exe;sample.exe;runsample.exe;lordpe.exe;regshot.exe;Autoruns.exe;dsniff.exe;VBoxTray.exe;HashMyFiles.exe;ProcessHacker.exe;Procmon.exe;Procmon64.exe;netmon.exe;vmtoolsd.exe;vm3dservice.exe;VGAuthService.exe;pr0c3xp.exe;ProcessHacker.exe;CFF Explorer.exe;dumpcap.exe;Wireshark.exe;idaq.exe;idaq64.exe;TPAutoConnect.exe;ResourceHacker.exe;vmacthlp.exe;OLLYDBG.EXE;windbg.exe;bds-vision-agent-nai.exe;bds-vision-apis.exe;bds-vision-agent-app.exe;MultiAnalysis_v1.0.294.exe;x32dbg.exe;VBoxTray.exe;VBoxService.exe;Tcpview.exe
- Buscando controladores de dispositivos relacionados con la máquina virtual. Ejemplos:
Figura 10 – Técnica anti-VM del controlador de dispositivo
- Buscando una máquina virtual a través de la instrucción
CPUID
- Forzar excepciones para comprobar si el depurador está presente
- Comprobación de firmas de sandbox
Persistencia: lograr la persistencia a través de los valores del Registro y el programador de tareas.
Cada vez que el malware decide que es seguro para ejecutarse en el sistema de destino, descifra su recurso «307» como se explicó anteriormente, lo inyecta en el proceso recién creado, llama a un procedimiento de cargador que carga el archivo DLL y llama a la carga útil principal.explorer.exe
DllEntryPoint
Carga útil principal
La carga útil principal tiene varios roles:
- Crear y mantener la configuración del malware.
- Creación y mantenimiento de los mecanismos de mensajería: canalizaciones con nombre, eventos y mensajes personalizados de Windows.
- Instalación y gestión de nuevos módulos: nueva función.
- Crear y mantener un canal de comunicación adecuado con el servidor de C&C.
- Ejecutar comandos a través de un mecanismo de cola de subprocesos personalizado.
La carga útil tiene varios módulos internos más que no vamos a profundizar en este artículo, tales como – capacidades de movimiento lateral, recolección de certificados, bot de spam, y más.
El malware construye su configuración a partir de varios recursos incrustados que se desempaquetan y descifran en tiempo de ejecución. Los recursos son:
- «308»: datos de configuración iniciales.
- «311»: lista de 150 bots direcciones IP y puertos para construir un túnel de comunicación.
El directorio de trabajo, como podemos ver en la Figura 11,es una parte importante de la funcionalidad del Qbot, y también se utiliza como método de sincronización entre los módulos.
Figura 11 – Ejemplo para el directorio de trabajo de Qbot
Los archivos de configuración de Qbot (terminar con ) y los archivos de información robados (terminar con ) son los más cruciales. Estos archivos son accedidos y cargados por todos sus módulos..dat
.dll
Figura 12 – Archivo de configuración
Figura 13 – Archivo de información robado
Una de las preguntas que nos preguntábamos en este punto de la investigación era dónde podemos encontrar la verdadera lógica «bancaria». Las versiones anteriores de Qbot contenían varios módulos maliciosos como recursos incrustados, pero las versiones recientes eran bastante «limpias».
Para entender eso, tuvimos que profundizar en el protocolo de comunicación y encontrar métodos para obtener los módulos maliciosos.
Módulo de comunicación
El recurso «311», como dijimos anteriormente, contiene una lista de 150 direcciones IP de otros bots con los que la víctima debe comunicarse. Cada uno de estos bots reenviará el tráfico al servidor real de C&C o a un proxy de segundo nivel como mostraremos más adelante. Este método es una manera eficiente de ocultar la dirección IP de C&C.
Todos los mensajes siguientes se envían a través del método a la siguiente dirección URL: y se cifran con un valor de inicialización aleatorio. Para que sea más fácil entender la lógica, mostraremos solo los datos de red descifrados.POST
https://<BOT_IP>:<BOT_PORT>/t3
Los datos de comunicación de C&C se envían en formato JSON, donde cada propiedad se identifica mediante un identificador numérico único. Como podemos ver más adelante en los mensajes de ejemplo, la propiedad JSON más importante es su código de mensaje que contiene la clave . Pudimos mapear los siguientes códigos de mensaje únicos:8
Víctima: C&C:
1
– Solicite el siguiente comando de C&C.
2
– Ack para un comando dado por C&C.
4
– Configuración del equipo y enumeración de procesos.
7
– Informe de información robada.
8
– Mensaje de puertos abiertos.
9
– Mensaje Keep-alive.
C&C – Víctima:
5
– Servidor Ack.
6
– Comando para ejecutar.
El programa contiene dos bucles de red paralelos: Keep-alive y sesión de informe, y Command Execution Session.
Keep-alive y Report Session
Esta sesión es bastante simple. El programa alterna entre el mensaje keep-alive al mensaje de informe de información robada. Para cada uno de estos mensajes, recibirá un servidor ack. Estos mensajes tendrán el siguiente aspecto:
Mensaje Keep-aliveVíctima -> C&C{ «8»: 9, // Código MSG «1»: 17, // Versión del protocolo de red «2»: «powqdc619830» // ID DE BOT de víctima}
Mensaje de información de denuncia robado
Toma el archivo cifrado de la información robada y lo envía..dll
Víctima -> C&C{ «8»: 7, // Código MSG «1»: 17, // Versión del protocolo de red «2»: «powqdc619830», // ID DE BOT de víctima «3»: «spx145», // Grupo de bots «6»: 223, «7»: 4763, «36»: «617c… IcR67» // Base64 información codificada y cifrada}
Keep-alive y Report ResponseC&C -> Víctima{ «8»: 5, // Código MSG «16»: 270544960, // Dirección IP de la víctima «39»: «mzJzbJU», // Datos aleatorios «38»: 1}
Sesión de ejecución de comandos
El malware solicitará nuevos comandos periódicamente y ejecutarlos de acuerdo con la siguiente tabla de comandos. La tabla contiene el identificador de comando adecuado y su controlador.
Figura 14 – Tabla de comandos de Qbot
El mensaje de solicitud de comando tendrá la siguiente estructura:{ «8»: 1, // Código MSG «1»: 17, // Versión del protocolo de red «2»: «powqdc619830», // ID DE BOT de víctima «3»: «b», // Grupo de bots «4»: 804, // Versión principal de carga útil «5»: 141, // Carga menor vesión «10»: «1582872269», // Marca de tiempo «6»: 6210, «7»: 6278, «14»: «U3HphEKFiQcKFFe0LUVZNDO9vsJ9zdEf09»}
Una respuesta típica tendría el siguiente aspecto:{ «8»: 6, // Código MSG «15»: «…», «16»: 270544960, // Dirección IP de la víctima «18»: 252, «19»: 31, // ID de comando para ejecutar «20»: [«TVqQAAM…»»], // carga útil del comando «39»: «<RANDOM_STRING>» // Datos aleatorios}
Módulo Fetching
Durante la investigación pudimos mapear varios módulos descargados, algunos de los cuales fueron añadidos recientemente como pudimos ver en la versión se descomponen.
Hemos notado que cada vez que un nuevo Bot ID está siendo «registrado» por el servidor de C&C, en la siguiente solicitud de comando recibirá los siguientes módulos para descargar e instalar:
Actualización ejecutable: actualiza el ejecutable actual con una versión más reciente o una lista de bots más reciente. El C&C periódicamente envía actualizaciones a todas sus víctimas.
Módulo de recopilador de correo electrónico: extrae todos los subprocesos de correo electrónico del cliente de Outlook de la víctima mediante la API y lo carga en un servidor remoto codificado de forma rígida. Estos correos electrónicos robados serán utilizados para el malspam que vendrá más tarde.MAPI32.dll
Figura 15 – Módulo de recopilador de correo electrónico
Módulo de enganche: el módulo se inyecta a todos los procesos en ejecución y enlaza las funciones de API relevantes. Tabla de enganche de muestra:
Figura 16 – Módulo de enganche
Archivo de inyección web – El archivo proporciona el módulo inyector con una lista de sitios web y código JavaScript que se inyectará si la víctima visita cualquiera de estos sitios web.
Podemos ver los resultados de visitar uno de los objetivos del actor: Chase Bank.
Figura 17 – Ejemplo de código fuente HTML para un destino inyectado
Password Grabber Module – un módulo grande que descarga Mimikatz e intenta cosechar contraseñas.
Figura 18 – Módulo de captura de contraseñas
hVNC Plugin – Permite controlar la máquina víctima a través de una conexión VNC remota. Es decir, un operador externo puede realizar transacciones bancarias sin el conocimiento del usuario, incluso mientras está conectado a su ordenador. El módulo comparte un alto porcentaje de código con módulos similares como hVNC de TrickBot.
Figura 19 – Complemento VNC oculto
JS Updater Loader: descifra y escribe un script de actualizador Javascript. Hasta hace poco, el script se trataba de un recurso cifrado dentro de la carga. Dado que el script contiene direcciones URL codificadas de forma rígida cifrada, el nuevo método facilita al operador insertar dominios actualizados a las víctimas.
Escribimos una secuencia de comandos de Python para facilitar la extracción de URL de un script dado que se puede observar en el Apéndice C.
Figura 20 – Ejemplo de script del actualizador de JS
Módulo de agarre de cookies – se dirige a los navegadores populares: IE, Edge, Chrome y Firefox.
Figura 21 – Módulo de agarre de cookies
Podemos identificar estos módulos a través de un programa de captura de tráfico:
Figure 22 – Downloaded modules in Fiddler
Once the victim has been infected, their computer is compromised, and they are also a potential threat to other computers in the local network because of Qbot’s lateral movement capabilities. The malware then checks whether the victim can also be a potential bot as part of Qbot’s infrastructure.
From a Victim to a Bot
McAfee has published a great article 3 years ago in which they covered important details regarding the bot proxy module. To understand the complete infection chain process we felt there is more to discover regarding that module, and ways of fetching it.
To reach that goal, we started analyzing Qbot’s efforts of converting an innocent victim machine into an active bot, and being part of the C&C infrastructure. To do so, the malware does the following:
- Ejecute comandos de shell para permitir conexiones entrantes en el firewall del host.
- Envío de comandos UPnP creados para permitir el reenvío de puertos.
- Cada vez que crea la lista de puertos abiertos, el programa comprueba si la conexión entrante está realmente permitida enviando el siguiente mensaje a un bot remoto y esperando una conexión.
- URL –
https://<BOT_IP>:<BOT_PORT>/bot_serv
- Carga útil de muestra:
cmd=1&msg=J3zeJrBLh2sGU4ql0EIr9MncSBCnK&ports=443,995,993,465,990,22,2222,2078,2083,2087,1194,8443,20,21,53,80,3389,6881,6882,6883,32100,32101,32102,32103,50000,50001,50002,50003,50010,61200,61201,61202
- URL –
- El bot remoto intenta conectarse utilizando los puertos especificados a la víctima. Si la víctima recibe los datos que esperaba (variable), entonces es una señal de una conexión entrante correcta.
msg
- Retire la escucha del puerto.
Cuando el programa termina de verificar sus puertos potenciales, forma código de mensaje y lo envía al servidor de C&C:8
{ «8»: 8, // Código MSG «1»: 17, // Versión del protocolo de red «2»: «jnugfv895664», // ID BOT de víctima «4»: 3, «5»: 111, «55»: 270544960, // IP externa del bot potencial «56»: [443, 995, 993, 465, 990, 22, 2222, 2078, 2083, 2087, 1194, 8443, 20, 21 , 53 , 80 , 3389 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881, 20 , 20, 21, 53, 80, 3389 , 6881, 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881 , 6881, 68816882, 6883, 32100, 32101, 32102, 32103, 50000, 50001, 50002, 50003, 50010, 61200, 61201, 61202] // Puertos potenciales}
Cuando el programa realiza este proceso específico, podríamos observar que en la siguiente solicitud de ejecución de comandos, recibiremos una instalación de módulo proxy con el puerto relevante para escuchar:{ «8»: 6, // Código MSG … «19»: 25, // ID de comando «20»: [«TVqQAAM…», «prt-443», «n-jnugfv895664»], // carga útil del comando …}
Podemos visualizar el proceso con el siguiente diagrama, y observarlo a través de un programa de captura de tráfico:
Figura 23 – Flujo de red para la descarga del módulo proxy
Figura 24 – Módulo proxy descargado en Fiddler
Análisis del módulo proxy
El módulo proxy es cargado por , y copiado en su carpeta de trabajo – . Si se le dan privilegios, crea un nuevo servicio denominado , de lo contrario actualiza el valor del Registro.rundll32.exe
C:\ProgramData\FilesystemMonitor\
SYSTEM
fsmon
CurrentVersion\Run
La mayor parte del código base del módulo se toma de las siguientes bibliotecas de código abierto:
libcurl 7.47.1
para solicitudes HTTP.OpenSSL 1.0.2r 26 Feb 2019
– Se utiliza para la creación de certificados y la validación de firmas.miniupnp
– Para la apertura del puerto.
También contiene 3 direcciones IP codificadas de forma rígida del servidor proxy de segundo nivel.
El módulo no ha cambiado mucho desde la publicación de McAfee hace 3 años. Los cambios que pudimos encontrar fueron:
- Se ha cambiado el nombre del servicio, la descripción, la carpeta de trabajo, el nombre de la ventana y el nombre ejecutable. Por ejemplo, el nombre del servicio se ha cambiado de a .
hwmon
fsmon
- La versión de OpenSSL se ha actualizado desde a .
1.0.2f
1.0.2r
- Servidores proxy de nivel 2 actualizados.
Una característica bastante interesante del módulo proxy es su API de control. El grupo de amenazas detrás de Qbot ha desarrollado una API de control para el proxy que es independiente del mecanismo de actualización de carga maliciosa. Esa API también es única, principalmente porque recibe mensajes de control empujando y no tirando, lo que podría exponer los bots al control de actores externos.
El protocolo es bastante simple y se puede observar en el siguiente diagrama:
Figura 25 – Flujo de red para la API de control de módulo proxy
La firma se está verificando con la clave pública codificada de forma rígida del actor. Por lo tanto, a menos que poseamos la clave privada, el protocolo es extremadamente difícil de romper.
Conclusión
Este artículo analiza dos aspectos de la amenaza – la campaña que conduce a la infección de la víctima, y el complejo malware de varias capas que está en constante evolución. El artículo también cubre varios temas varios con respecto a su historial de versiones en el año pasado, métodos de descifrado, ejemplos de comunicación, API de control de servidor proxy y más.
Hoy en día Qbot es mucho más peligroso de lo que era anteriormente – tiene activa campaña malspam que infecta a las organizaciones, y se las arregla para utilizar una infraestructura de infección «3rd party» como Emotet para difundir la amenaza aún más. Parece que el grupo de amenazas detrás de Qbot está evolucionando sus técnicas a través de los años, y Check Point Research espera que la información de este artículo ayude a los investigadores de todo el mundo a mitigar y potencialmente detener la actividad de Qbot.
El agente SandBlast de Check Point protege contra este tipo de ataques y es capaz de prevenirlos desde el primer paso.
Ioc
Muchas muestras de Qbot y VBS fueron analizadas durante la investigación. Estamos adjuntando las muestras y módulos recientes del 22/06/2020.
Hashes
9001DF2C853B4BA118433DD83C17617E7AA368B1
– Gotero
VBS – Qbot Sample
SPX145 – Cargador de módulos de colector de correo [Desencriptado]
– Cargador de actualización javascript [Desenfado]
– Actualizador de
módulos
de enlace [ Cargador de módulos de gancho [Descifrado]
– Módulo de agarre de cookies [Descifrado]
– Módulo de recuperación de contraseñas [Decrpyted]449F2B10320115E98B182204A4376DDC669E1369
F85A63CB462B8FD60DA35807C63CD13226907901
B4BC69FF502AECB4BBC2FB9A3DFC0CA8CF99BA9E
1AAA14A50C3C3F65269265C30D8AA05AD8695B1B
577522512506487C63A372BBDA77BE966C23CBD1
75107AEE398EED78532652B462B77AE6FB576198
674685F3EC24C72458EDC11CF4F135E445B4185B
BECD8F2D6289B51981F07D5FF52916104D764DD5
18E8971B2DE8EA3F8BB7E1462E414DA936425D4E
4C96D2BCE0E12F8591999D4E00498BCDB8A116DE
Dominios e IP
URL del archivo ZIP
hxxps://factory-hot[.]com/bafmxby/CcdEhoQGHq.zip
URL de gotero de VBS
hxxp://kiesow-auto[.]de/foojapfsyds/5555555.png
hxxp://test[.]africanamericangolfersdigest[.]com/kkmthjsvf/5555555.png
hxxp://frankiptv[.]com/liehyidqtu/5555555.png
hxxp://klubnika-malina[.]by/utgritefmjq/5555555.png
hxxp://centr-toshiba[.]by/wogvynkombk/5555555.png
hxxp://marokeconstruction[.]com[.]au/hhmzmlqct/5555555.png
URL de inyección web
hxxps://fortinet-cloud[.]com/wbj/br/content/chase/tom/ajax.js
hxxps://fortinet-cloud[.]com/wbj/br/content/key/tom/ajax.js
hxxps://fortinet-cloud[.]com/wbj/br/content/schwab/tom/schw.js
hxxps://fortinet-cloud[.]com/wbj/br/content/bbt/tom/bbt.js
hxxps://fortinet-cloud[.]com/wbj/att/js/AMAZON.js
hxxps://fortinet-cloud[.]com/wbj/crt/uadmin/inj_src/usa/amex2019/script.js
hxxps://fortinet-cloud[.]com/wbj/crt/uadmin/inj_src/usa/costco/costco.min.js
hxxps://fortinet-cloud[.]com/wbj/crt/uadmin/inj_src/usa/verizon/script.js
hxxps://fortinet-cloud[.]com/wbj/crt/uadmin/gate.php
hxxps://callunaconycatcher[.]com/bre/content/bmo/ins/bmo.js
hxxps://callunaconycatcher[.]com/bre/content/desjardins/ins/desjardins.js
hxxps://callunaconycatcher[.]com/bre/content/rbc/ins/rbc.js
hxxps://requirejscdn[.]com/*
hxxps://cersomab[.]com/lob.php
Servidor remoto del recopilador de correo
hxxps://82.118.22[.]125/bgate
Mimikatz URL Descargar
hxxps://onedrive.live[.]com/download.aspx?cid=CE32720D26AED2D5&authKey=%21AHHhrhk9od5OCBU&resid=CE32720D26AED2D5%21111&ithint=%2Eps1
Servidores proxy de nivel 2
46.228.199.235:443
93.88.75.176:443
207.244.112.112:443
URL de Javascript Updater
hxxp://backup.justthebooks[.]com/datacollectionservice.php3
hxxp://asn.crs.com[.]pa/datacollectionservice.php3
hxxp://chs.zarifbarbari[.]com/datacollectionservice.php3
Lista de bots
79.115.207.120:443
156.213.80.140:443
189.160.203.110:443
71.114.39.220:443
189.236.166.167:443
193.248.44.2:2222
206.51.202.106:50003
24.152.219.253:995
2.50.47.97:2222
108.49.221.180:443
207.246.75.201:443
80.240.26.178:443
199.247.16.80:443
207.255.161.8:2222
69.92.54.95:995
199.247.22.145:443
2.50.171.142:443
24.110.14.40:3389
79.101.130.104:995
94.52.160.116:443
172.243.155.62:443
188.192.75.8:443
175.111.128.234:443
74.129.18.56:443
36.77.151.211:443
203.45.104.33:443
118.160.162.77:443
86.126.97.183:2222
185.246.9.69:995
140.82.21.191:443
66.208.105.6:443
206.183.190.53:993
5.12.111.213:443
72.177.157.217:995
98.210.41.34:443
98.242.36.86:443
199.116.241.147:443
49.144.81.46:8443
75.110.250.89:995
219.76.148.142:443
70.174.3.241:443
71.205.158.156:443
78.96.192.26:443
108.190.151.108:2222
81.133.234.36:2222
12.5.37.3:995
210.61.141.92:443
173.70.165.101:995
5.13.84.186:995
68.46.142.48:443
188.27.6.170:443
188.173.70.18:443
86.124.13.101:443
5.13.74.26:443
68.190.152.98:443
96.56.237.174:990
175.143.12.8:443
79.113.224.85:443
2.51.240.61:995
95.76.27.89:443
5.12.243.211:443
24.183.39.93:443
86.124.228.254:443
5.193.178.241:2078
2.88.186.229:443
108.227.161.27:995
188.192.75.8:995
98.32.60.217:443
176.223.35.19:2222
24.42.14.241:443
70.95.118.217:443
68.225.56.31:443
191.84.11.112:443
72.204.242.138:50001
173.22.120.11:2222
64.121.114.87:443
68.60.221.169:465
92.17.167.87:2222
47.138.200.85:443
71.187.7.239:443
151.205.102.42:443
72.179.13.59:443
172.113.74.96:443
5.193.61.212:2222
47.28.135.155:443
188.26.243.186:443
41.228.206.99:443
117.218.208.239:443
203.122.7.82:443
39.36.61.58:995
49.207.105.25:443
59.124.10.133:443
89.44.196.211:443
79.117.129.171:21
24.110.96.149:443
184.90.139.176:2222
82.79.67.68:443
86.153.98.35:2222
101.108.4.251:443
209.182.122.217:443
89.32.220.79:443
104.50.141.139:995
85.204.189.105:443
94.10.81.239:443
211.24.72.253:443
110.142.205.182:443
86.124.105.88:443
72.90.243.117:0
41.225.231.43:443
87.65.204.240:995
62.121.123.57:443
47.153.115.154:990
66.30.92.147:443
49.191.4.245:443
47.180.66.10:443
97.93.211.17:443
65.100.247.6:2083
65.131.43.76:995
45.45.51.182:2222
98.219.77.197:443
166.62.180.194:2078
72.16.212.108:995
73.217.4.42:443
76.187.8.160:443
67.182.188.217:443
37.182.238.170:2222
117.216.227.70:443
74.222.204.82:443
89.137.77.237:443
82.77.169.118:2222
188.27.36.190:443
108.39.93.45:443
72.181.9.163:443
58.233.220.182:443
73.137.187.150:443
97.127.144.203:2222
103.76.160.110:443
37.156.243.67:995
67.246.16.250:995
182.185.7.220:995
82.81.172.21:443
117.199.6.105:443
216.163.4.132:443
199.102.55.87:53
96.244.45.155:443
122.147.204.4:443
89.45.107.209:443
35.142.12.163:2222
73.94.229.115:443
165.0.3.95:995
Otro COI
Nombre del servicio proxy
fsmon
Nombre para mostrar del servicio proxy
Filesystem Monitor
Rutas de archivos proxy
C:\ProgramData\FilesystemMonitor\fsmonitor.dll
C:\ProgramData\FilesystemMonitor\fsmonitor.ini
Línea de comandos ejecutables de proxy
C:\Windows\SysWOW64\rundll32.exe "C:\ProgramData\FilesystemMonitor\fsmonitor.dll",FsMonServerMainNT
C:\Windows\SysWOW64\rundll32.exe "C:\ProgramData\FilesystemMonitor\fsmonitor.dll",#1
Clave pública de Proxy RSA
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA4zJC+AO8v7U9WGOdqeqMn9CPrdgoz//B+f/xxb4UnSNM1NJ1RwTG
N2jf6JRRD2gZz9735DU4I9FlIDEiRDdNn4OxX76L5eKe2GF4/etZ23DfuomMNXVw
qwYcO8A7zjzG0+ybQH35eNoYJMJDwPOBWb/nHBlPNWXoyv7u8EzScENMBpfKWuMW
UgmV08dulHPPyi9fjSsY3DLo5zNE6A8UEk2e2R2UkmiDbENOARgsfwHosyqEcBGc
Pk/+EismU1rsabaQV/sHw1zQQ9vAH+27d/T13hCuIgq1B3vRYFIrPkJYAdaxOwto
AHn0rjeAN4tEIdDQ10RCriEmnNEBfxA9BwIDAQAB
-----END RSA PUBLIC KEY-----
Fuente: Check Point Research Blog