Consulta técnica sobre FortiEDR
Descripción
Qakbot es principalmente un troyano bancario observado por primera vez en 2008. A pesar de su antigüedad, la amplia gama de funciones de Qakbot, incluido el registro de pulsaciones de teclas, el volcado de credenciales, los mecanismos de persistencia y las funciones de descubrimiento, lo convierten en una herramienta atractiva para que los adversarios la adopten en sus TTP. Recientemente, el equipo de FortiGuard Responder ha visto un aumento en la actividad relacionada con este malware. Un correo electrónico de phishing es el vector de acceso inicial más común que utiliza Qakbot para obtener acceso a un sistema. Por lo general, un correo electrónico de phishing de Qakbot llega con un documento adjunto de Microsoft Word, una hoja de cálculo de Microsoft Excel o un archivo zip que contiene documentos de Microsoft Office (T1566.001). Cuando se abren estos documentos de Microsoft Office, se ejecuta una macro que intenta descargar el troyano Qakbot para infectar la máquina del usuario final.
Como una solución EDR moderna, FortiEDR brinda protección contra las nuevas variantes de Qakbot al bloquear los comportamientos sospechosos asociados con la cadena de infección de Qakbot. Las reglas de detección posteriores a la ejecución (políticas de prevención de exfiltración y ransomware) permiten a FortiEDR bloquear el descargador de Qakbot para que no descargue un ejecutable malicioso como parte de estos macro scripts iniciales. Estas protecciones de FortiEDR también evitan la ejecución de otros posibles scripts maliciosos que podrían comprometer el sistema del usuario final. La política de ejecución previa de FortiEDR (política de prevención de ejecución) detecta muestras conocidas de Qakbot, mientras que el aprendizaje automático empleado como parte del sandboxing en línea de FortiEDR identifica las características de las nuevas variantes de Qakbot y evita que se ejecuten.
Índice
- 1 Post-Ejecución
- 2 Descarga del troyano Qakbot
- 3 Intento de ejecución de archivo
- 4 Intento de lectura de archivo
- 5 Creación de archivos y eventos de escritura de archivos
- 6 Acceso de escritura de archivo (hueco de proceso)
- 7 Acceso de escritura de archivo (inyección de proceso)
- 8 Prevención de exfiltración (múltiples destinos)
- 9 Caza de amenazas
- 10 MITRE ATT&CK
Post-Ejecución
Veamos cómo FortiEDR detecta y bloquea la cadena de intrusión de Qakbot cambiando al modo de simulación y emulando una intrusión típica. En el modo de simulación, FortiEDR genera eventos pero no impone acciones de reglas. Esto permite que el descargador de Qakbot se ejecute por completo, lo que nos brinda la oportunidad de observar el alcance de las detecciones de comportamiento y los bloqueos que aplica FortiEDR y las capas de reglas que protegen los puntos finales defendidos.
A continuación, en la Figura 1, se muestra un ejemplo de la vista del «usuario final» de una hoja de cálculo maliciosa de Microsoft Excel distribuida como parte de una campaña de Qakbot observada en la naturaleza. De forma predeterminada, Microsoft Excel impide la ejecución de macros. Una vez que el usuario abre la hoja de cálculo, Microsoft Excel mostrará una advertencia de seguridad que indica que las macros están deshabilitadas de manera predeterminada. La hoja de cálculo está diseñada para parecer legítima y contiene instrucciones simples sobre cómo desbloquear el documento. De los archivos adjuntos maliciosos de Qakbot observados, no hay contenido legítimo y estas instrucciones se agregan para alentar al usuario a habilitar la ejecución de las macros.
Figura 1. Ejemplo de un documento malicioso de Microsoft Excel utilizado como parte de una campaña de Qakbot.
Acceso sospechoso a la red
Una vez que el usuario habilita la macro haciendo clic en «Habilitar contenido», intenta conectarse a Internet para descargar un ejecutable malicioso que contiene la carga útil principal de Qakbot. Este comportamiento desencadena la regla «Código dinámico: código malicioso generado en tiempo de ejecución detectado» que forma parte de la política «Protección contra exfiltración». Además, FortiEDR incorpora la inteligencia de amenazas de FortiGuard Labs como parte de su análisis automatizado que marcó la IP de destino como maliciosa. Como resultado, este evento se marcó como sospechoso y FortiEDR bloquearía la conexión.
Figure 2. FortiEDR detected a “Network Access” event related to Excel creating a network connection to attempt to download a Qakbot DLL following successful execution of the embedded macro.
Mirando la pestaña «Ubicación geográfica» en la ventana «Datos avanzados» para el evento en el visor de eventos FortiEDR en la Figura 3 a continuación, podemos ver que la dirección IP a la que la macro intentó conectarse estaba en Letonia.
Figure 3. FortiEDR “Geo Location” tab can be used to quickly identify anomalous geolocation data associated with a flagged events.
El Fortinet CTS (Central Threat System), que contiene las fuentes de inteligencia de amenazas de FortiGuard Labs, muestra que se sabe que la IP: 94.140.112.119 con la que interactúa la macro ha sido utilizada previamente por el troyano Qakbot. Esto se puede ver en la Figura 4 a continuación:
Figure 4. Fortinet CTS can be used to quickly identify information about atomic indicators observed through FortiEDR.
Descarga del troyano Qakbot
FortiEDR detecta el evento «Acceso a la red sospechoso» como se mencionó anteriormente. Durante este evento, la macro incrustada intenta descargar un archivo DLL (biblioteca de vínculos dinámicos) con un formato de nombre de archivo <hora y fecha de hoy>.dat, como: «44470.0032425947.dat». Al combinarlo con la dirección IP, la macro incrustada intenta descargar un archivo similar a hxxp://94[.]140[.]112[.]119/44470.0032425947.dat. Como podemos ver en la macro que se muestra a continuación en la Figura 5, la función NOW() genera el nombre del archivo y se le agrega el nombre de la extensión .dat. Si el archivo se descarga correctamente, se le cambiará el nombre usando «Xertis.dll», «Xertis1.dll» o «Xertis2.dll».
Figura 5. Sección de la macro incrustada en el documento malicioso de Microsoft Excel.
Intento de ejecución de archivo
Una vez descargado y guardado como uno de los archivos “Xertis”, el archivo DLL se ejecuta usando regsvr32.exe desde dentro de la macro, como se puede observar en la Figura 5. Esta actividad genera un evento “File Execution Attempt” en FortiEDR, ya que activa la regla «Ejecución de secuencia de comandos sospechosa: se ejecutó una secuencia de comandos en un contexto sospechoso» en la «Política de prevención de ejecución». FortiEDR marca este evento como sospechoso y bloquearía la ejecución, deteniendo efectivamente la intrusión.
Figure 6. FortiEDR detected a “File Execution Attempt” event related to the embedded macro attempting to execute the downloaded Qakbot DLL with “regsvr32.exe”.
Podemos validar el comportamiento esperado de la macro utilizando la función FortiEDR Threat Hunting, ya que la macro intenta ejecutar regsvr32.exe con los parámetros de línea de comando «-silent ..\Xertis<value>.dll». Podemos convertir estos indicadores en una consulta de Lucene compatible con la barra de búsqueda de Threat Hunting como la que se muestra a continuación. A continuación, en la Figura 7, también se muestra un ejemplo de un evento de Threat Hunting devuelto.
Type: ("Process Creation") AND Source.Process.Name: ("excel.exe") AND Target.Process.File.Name: ("regsvr32.exe") AND Target.Process.CommandLine: ("-silent ..\Xertis.dll" OR "-silent ..\Xertis1.dll" OR "-silent ..\Xertis2.dll")
Figure 7. Example Threat Hunting event from the Qakbot macro execution using the query from above.
Intento de lectura de archivo
A partir de este escrito, el archivo .dat ya no está disponible desde los enlaces generados por la macro. Después de una mayor búsqueda de malware, pudimos obtener una muestra similar que Qakbot debería poder descargar. El archivo .dat se renombrará como «Xertis.dll», «Xertis1.dll» o «Xertis2.dll» y se ejecutará mediante regsvr32.exe. Al simular la descarga del archivo y cambiarle el nombre a Xertis2.dll, FortiEDR detecta el archivo Xertis2.dll como GenKryptik.FKXB!tr y genera el evento «Intento de lectura de archivo».
Figure 8. FortiEDR detected a “File Read Attempt” event related to the OS attempting to read the known Qakbot DLL dropped through the embedded macro.
Creación de archivos y eventos de escritura de archivos
Después de ejecutar regsvr32.exe desde la macro incrustada, la DLL original de Qakbot coloca otra DLL en el disco. Dado que este Qakbot DLL original ya se ha marcado como malicioso, la actividad de creación de archivos asociada genera un evento de «Creación de archivos» y «Escritura de archivos» que FortiEDR bloquearía si estuviera en modo de protección.
Figure 9. FortiEDR detected a “File Creation” and “File Write” event related to the original Qakbot DLL dropping an embedded dll to disk (c762d953.dll above).
Acceso de escritura de archivo (hueco de proceso)
Después de escribir este archivo, Qakbot realiza una serie de inyecciones de procesos y cargas ejecutables no asignadas. Cuando se ejecuta la DLL original (Xertis<número>), descifra y carga su código en el espacio de memoria virtual recién asignado. Posteriormente, realiza el vaciado del proceso sobrescribiendo el contenido original de la DLL de Qakbot (Xertis<number). FortiEDR detecta esta serie de inyecciones de procesos y cargas ejecutables no asignadas como se muestra a continuación.
Figure 10. FortiEDR detected a “File Write Access” event which contains multiple events related to memory modification and process injection associated with the original Qakbot DLL.
Acceso de escritura de archivo (inyección de proceso)
Tras este vaciado inicial del proceso, Qakbot se inyecta a sí mismo en otro proceso, en este caso “msra.exe”, para seguir ejecutando el resto de sus payloads. La inyección de procesos es otro truco de malware para evitar el análisis estático y dinámico. La inyección de procesos también admite la evasión defensiva y la persistencia al apuntar a ejecutables benignos, como msra.exe, para retrasar el escrutinio de los defensores. FortiEDR detecta la actividad anterior con las reglas «Inyección de proceso – Modificación del punto de entrada detectada» y «Ejecutable no asignado – Archivo ejecutable sin referencia del sistema de archivos correspondiente» en la política de seguridad de Prevención de «Exfiltración» y bloquea esta actividad detectada en el modo de Protección.
Prevención de exfiltración (múltiples destinos)
La carga útil final de Qakbot es conectarse a sus servidores C2 para filtrar los datos de descubrimiento y solicitar actualizaciones de malware/instrucciones de comando. Qakbot intenta conectarse a sus servidores C2 que son detectados por FortiEDR.
Figure 11. FortiEDR detected a “Network Connection Attempt” events related to C2 communications.
Qakbot inyecta su código en msra.exe e intenta conectarse a sus servidores C2. La consulta genérica de búsqueda de amenazas a continuación se puede utilizar para identificar rápidamente las direcciones IP asociadas con C2. Un ejemplo de la salida de Threat Hunting se muestra a continuación en la Figura 12.
Type: ("Socket Connect") AND Source.Process.Name: ("msra.exe")
Figure 12. FortiEDR detected a “File Creation” and “File Write” event related to the original Qakbot DLL dropping an embedded dll to disk (c762d953.dll above).
Caza de amenazas
Para buscar una ejecución de secuencia de comandos sospechosa después de la descarga exitosa de Qakbot dll original:
Type: ("Process Creation") AND Source.Process.Name: ("excel.exe") AND Target.Process.File.Name: ("regsvr32.exe") AND Target.Process.CommandLine: ("-silent ..\Xertis.dll" OR "-silent ..\Xertis1.dll" OR "-silent ..\Xertis2.dll")
Para buscar el cambio de nombre del archivo a «Xertis.dll» O «Xertis1.dll» O «Xertis2.dll» (genérico):
Type: ("File Rename") AND Target.File.Name: ("Xertis.dll" OR "Xertis1.dll" OR "Xertis2.dll")
Para buscar accesos a redes sospechosos iniciados por la aplicación de Excel:
Type: ("Socket Connect") AND Source.Process.Name: ("EXCEL.EXE") AND RemoteIP: ("94.140.112.119")
Para buscar accesos a redes sospechosos iniciados por la aplicación Excel (genérica):
Type: ("Socket Connect") AND Source.Process.Name: ("EXCEL.EXE")
Para buscar una posible exfiltración (genérica):
Type: ("Socket Connect") AND Source.Process.Name: ("msra.exe")
MITRE ATT&CK
TA0001 – Acceso Inicial
Identificación de la técnica | Descripción de la técnica | Actividad observada |
T1566.001
| Suplantación de identidad: archivo adjunto de suplantación de identidad (spear phishing)
| Los correos electrónicos de phishing con archivos adjuntos maliciosos son el vector de acceso inicial más común para una intrusión de Qakbot.
|
TA0002 – Ejecución
Identificación de la técnica | Descripción de la técnica | Actividad observada |
T1059.005
| Intérprete de comandos y secuencias de comandos: Visual Basic
| Qakbot contiene macros que se utilizan para conectarse a un C&C para descargar otro ejecutable malicioso y para registrar una DLL maliciosa.
|
T1204.002
| Ejecución de usuario: archivo malicioso
| Las campañas de spear-phishing de Qakbot se centran en el uso de macros incrustadas para su ejecución. Los usuarios deben habilitar macros para que comience la cadena de ataque. Los documentos maliciosos de Qakbot están diseñados para parecer legítimos e incluyen instrucciones sobre cómo habilitar macros.
|
TA0005 – Evasión de Defensa
Identificación de la técnica | Descripción de la técnica | Actividad observada |
T1218.010
| Ejecución de proxy binario firmado: Regsvr32
| El malware Qakbot usa regsvr32.exe para intentar registrar una DLL maliciosa.
|
T1140
| Desofuscar/Decodificar archivos o información
| La DLL inicial de Qakbot contiene varias cargas útiles cifradas que solo se extraen después de las comprobaciones de virtualización y sandboxing. Esto ayuda a evadir la detección basada en sandbox.
|
T1027.001
| Archivos o información ofuscados: relleno binario
| Qakbot se ha mantenido efectivo desde 2008 al ser flexible en torno a los indicadores que deja. Esto incluye poder simplemente cambiar su hash sin afectar la funcionalidad.
|
T1055.002
| Inyección de proceso: Inyección ejecutable portátil
| La DLL original de Qakbot descifra e inyecta ejecutables adicionales directamente en la memoria del proceso, evitando la creación de artefactos basados en discos.
|
TA0010 – Exfiltración
Identificación de la técnica | Descripción de la técnica | Actividad observada |
T1041
| Exfiltración sobre el canal C2
| El malware Qakbot se conecta al servidor C&C para descargar otro ejecutable malicioso y para una posible filtración de datos.
|
TA0011 – Comando y Control
Identificación de la técnica | Descripción de la técnica | Actividad observada |
T1041
| Transferencia de herramienta de ingreso
| Las macros maliciosas de Qakbot se conectan a direcciones IP maliciosas conocidas para descargar la DLL inicial de Qakbot. Esta DLL contiene todas las cargas útiles (encriptadas) requeridas para el resto de la intrusión.
|
T1571
| Puerto no estándar
| Qakbot C2 después de la descarga inicial de DLL desde la macro integrada usa el puerto 443 y el puerto 995. Estas conexiones de red pueden rastrearse hasta los procesos inyectados en busca de anomalías, es decir, regsvr32.exe no debe comunicarse con direcciones IP externas en el puerto 995 (puerto de correo POP3).
|
Indicadores de compromiso
Indicador Descripción | Indicador | Tipo de indicador | Táctica asociada | notas |
Pago-<número aleatorio>-<fecha>.xls Hash
| 26164943D535B3EF534B8B0292AD5D03A5C905A2
| hash SHA1
| Acceso inicial
| Hash de archivo de un documento malicioso conocido de Microsoft Excel utilizado para este análisis. Es probable que se genere un documento xls diferente por intrusión para evitar la detección basada en hash.
|
Hash Xertis2.dll
| F3645BCC6F8F2031BA2D936F495E3D1C4BDF7C23
| hash SHA1
| Ejecución, Comando y Control
| Ejecutable Qakbot inicial. La detección de este hash de archivo en un punto final indica que la macro se ejecutó correctamente y que la carga útil inicial de Qakbot se escribió en el disco.
|
IP de descarga de Qakbot
| 94.140.112.119
| Dirección IP
| Acceso Inicial, Ejecución
| La macro maliciosa en el documento de Excel solicita la carga útil inicial de Qakbot desde esta dirección. El tráfico a esta IP indica la ejecución exitosa de la macro maliciosa.
|
Qakbot C2 IP
| 120.150.218[.]241
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
Qakbot C2 IP
| 47.22.148[.]6
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
Qakbot C2 IP
| 184.185.103[.]157
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
Qakbot C2 IP
| 196.221.207[.]137
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
Qakbot C2 IP
| 125.63.101[.]62
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
Qakbot C2 IP
| 175.143.92[.]16
| Dirección IP
| Comando y control
| Esta IP fue contactada desde los implantes Qakbot después de la infección.
|
¡Déjanos cualquier duda sobre FortiEDR aquí abajo!
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!