Trickbot Malspam se aprovecha del movimiento “Black Lives Matter”

Trickbot Malspam se aprovecha del movimiento “Black Lives Matter”

Resumen

El Security Lab de Hornetsecurity ha observado una campaña de malspam distribuyendo TrickBot [1] que se sirve del movimento Black Lives Matter como señuelo para que sus víctimas abran un archivo adjunto malicioso. El documento de descarga de TrickBot comienza inyectando shellcode en el Proceso WINWORD.EXE. Este shellcode crea un proceso cmd.exe en el que, posteriormente, se inyectan más partes del mismo shellcode. A continuación, el proceso cmd.exe descarga la DLL de TrickBot y la ejecuta mediante rundll32.exe.

Detalles

El correo inicial declara haber sido enviado por un organismo denominado State office, Country authority, o Country administration:

Correo inicial de TrickBot.

Dicho correo informa a su destinatario de que puede votar o expresar su opinión sobre Black Lives Matter confidencialmente, utilizando frases como Vote confidentially about "Black Lives Matter",Tell your government your opinion, Give your opinion, o Speak out confidentially about "Black Lives Matter" en el asunto o el cuerpo del mensaje.

Adjunto al correo se envía el archivo e-vote_form_0000.doc, un nombre que sugiere al destinatario que debe tratarse de algún método oficial de votación.

Sin embargo, el documento tan solo contiene una imagen anunciando una falsa actualización de Office junto con instrucciones para "Habilitar la edición" o "Activar contenido":

Documento de TrickBot.

Si el destinatario sigue las instrucciones, la macro de VBA maliciosa contenida en el documento se ejecuta y descarga el malware TrickBox.

Análisis técnico

La primera parte de la cadena de infección (antes de emplearse el malware TrickBot) se muestra en el siguiente diagrama de flujo:

Cadena de infección inicial de TrickBot.

En el siguiente análisis recorreremos todos los pasos de esta cadena.

La macro de VBA

La macro de VBA está protegida contra su visualización en Word:

Macro protegida de TrickBot.

Sin embargo, esta "protección" solo evita que Word muestre la macro de VBA sin contraseña. El código de la macro sigue siendo accesible.

Lo primero que hace la macro de VBA es mostrar un falso mensaje de error.

Private Sub Document_Open()
    MsgBox "Error #80013123"

Esto provoca el siguiente mensaje emergente:

Mensaje de error falso de TrickBot

Esto probablemente constituya un intento de solicitar la interacción del usuario para evitar la detección mediante sandboxes. También podría tratarse de un intento de ocultar el hecho de que no haya documento. La víctima podría darse por satisfecha al recibir este error y asumir que el documento está corrupto.

La macro se vale de las funciones VirtualProtectEx y CreateThread para inyectar shellcode en el proceso WINWORD.EXE. Para hacerlo, el código genera una gran cadena de texto:

    uriSubscriber = "i-j-[...]-a-a-a-"
    uriSubscriber = uriSubscriber & "i-l-[...]-a-a-"
    uriSubscriber = uriSubscriber & "g-k-a-a-p-p-h-f-p-i-[...]-o-g-c-c-p-k-h-c-g-j-h-d"

Esta cadena contiene el shellcode codificado. A continuación, se utiliza la siguiente función para descodificarla:

    Dim f() As Byte
    ReDim f(0 To Len(uriSubscriber) / 2 - 1) As Byte
    Dim sSmart As Long, regOptimize As Long
    For Each destEnd In Split(uriSubscriber, "-")
        If sSmart Mod 2 Then
            regOptimize = sSmart - 1
            regOptimize = regOptimize / 2
            f(regOptimize) = (CByte(Asc(destEnd)) - CByte(Asc("a"))) + f((sSmart - 1) / 2)
        Else
            regOptimize = sSmart / 2
            f(regOptimize) = (CByte(Asc(destEnd)) - CByte(Asc("a"))) * 16
        End If
        sSmart = sSmart + 1
    Next

Por último, el shellcode descodificado se marca con PAGE_EXECUTE_READWRITE mediante la función VirtualProtectEx, renombrada previamente a extensionsComment, y luego se inicia un hilo con la dirección del shellcode como su dirección inicial, empleando CreateThread previamente renombrada a sMail:

    Private Declare Function extensionsComment Lib "kernel32" Alias "VirtualProtectEx" ( _
        iMail As Long, _
        bConsole As Long, _
        regFunction As Long, _
        tablePosition As Long, _
        colMail As Long) As Long
    Private Declare Function sMail Lib "kernel32" Alias "CreateThread" ( _
        textTimer As Long, _
        uriMail As Long, _
        m As Long, _
        dateMembers As Long, _
        textTimer0 As Long, _
        lServer As Long) As Long
[...]
    sConsole = destN_ - angleTexture + UBound(f)
    q = extensionsComment(ByVal ipFunction, ByVal angleTexture, ByVal sConsole, ByVal PAGE_EXECUTE_READWRITE, ByVal VarPtr(extensionsComment0))
    adsLogon = sMail(ByVal 0&, ByVal 0&, ByVal destN_, ByVal 2&, ByVal 0, ByVal 0&)
    adsScr 5000

El modo más sencillo de extraer el shellcode es analizar CreateThread en un depurador:

Extracción de código de TrickBot mediante x64dbg.

Shellcode en WINWORD.EXE

El shellcode ejecutado en el proceso WINWORD.EXE empieza por determinar la dirección de determinadas funciones de biblioteca. A continuación, utiliza CreateProcessA para ejecutar un cmd.exe con la orden pause, de modo que cmd.exe quede en espera:

Shellcode de TrickBot creando un proceso cmd.exe con la orden pause

A continuación, el shellcode emplea la clásica secuencia OpenProcess, VirtualAllocEx, WriteProcessMemory y CreateRemoteThread para efectuar una inyección de shellcode en el proceso cmd.exe pausado:

Inyección de shellcode de TrickBot en el proceso cmd.exe.

El proceso cmd.exe /c pause probablemente se esté empleando para evitar la detección. Una técnica empleada habitualmente para inyectar shellcode es crear un proceso suspendido (es decir, pausado) marcándolo con la bandera CREATE_SUSPENDED durante su creación para, a continuación, inyectar código en el proceso creado y reanudarlo después. En el caso del TrickBot que nos ocupa, por el contrario, el código se inyecta a modo de hilo en el proceso cmd.exe pausado.

El shellcode inyectado es el mismo que se inyectó anteriormente en el proceso WINWORD.EXE. Sin embargo, el punto de entrada enviado a CreateRemoteThread es distinto, lo que provoca un flujo de ejecución distinto para el shellcode inyectado en el proceso cmd.exe.

Shellcode en cmd.exe

El shellcode inyectado en el proceso cmd.exe también localiza varias funciones de librería. Además, descodifica las URLs de descarga de TrickBot.

A continuación, el shellcode ejecuta GetSystemMetrics(SM_CXSCREEN) y GetSystemMetrics(SM_CYSCREEN) para obtener la resolución de la pantalla. Seguidamente, se ejecuta dos veces GetCursorPos, con una orden Sleep(0x1388) entre medias para provocar un retraso de 5 segundos.

TrickBot reconociendo el sistema.

Esto probablemente se haga para comprobar que haya movimiento de ratón y, de este modo, burlar a las sandboxes.

A continuación, los datos se codifican en forma de cadena de consulta HTTP del siguiente modo: &scr=1280x1024&cur1=604x250&cur2=622x310

Después de esto, la cadena de consulta de ID &id=00000000 y cadena de consulta de las métricas de sistema mencionadas se añaden a una URL para formar la URL de descarga final que, a continuación, se abrirá con InternetOpenUrlA:

TrickBot empleando InternetOpenUrlA para descargar.

Si la descarga se efectúa con éxito, el archivo descargado se guarda en C:\\Users\\<username>\\AppData\\Local\\system.rre y ejecuta mediante rundll32.exe %userprofile%/system.rre,Initialize empleando la función ShellExecuteA. El archivo system.rre es la DLL de TrickBot.

Si la descarga no se efectúa con éxito, el descargador espera para, más adelante, probar una segunda URL de descarga.

Conclusión y soluciones

La doble inyección de shellcode probablemente se emplee para evitar la detección en base al comportamiento, pues WINWORD.EXE no suele descargar archivos de Internet ni ejecutar rundll32.exe. Por tanto, es más probable que se detecte antes un comportamiento tan anómalo que el hecho de que cmd.exe inicie el proceso rundll32.exe. La consulta de la resolución de pantalla del sistema, así como la doble consulta de la posición del cursor, probablemente se efectúen para evitar el envío de la DLL de TrickBot a sistemas de sandboxing.

El servicio Spam and Malware Protection de Hornetsecurity, con las tasas de detección más elevadas del mercado, ya ha detectado y bloqueado el documento malicioso de TrickBot en base a una firma de detección.

Con todo, si las firmas de detección básicas no hubiesen bloqueado los correos, Advanced Threat Protection (ATP) de Hornetsecurity no se habría visto afectado por los diversos mecanismos antisandboxing. La simulación de interacción humana de la sandbox de ATP es capaz de hacer clic en el falso mensaje de error para permitir la ejecución completa del documento malicioso:

Sandbox de Advanced Threat Protection de Hornetsecurity haciendo clic en el botón

Detecta los procesos creados por el documento, así como las inyecciones de procesos:

Sandbox de Advanced Threat Protection de Hornetsecurity detectando la inyección de procesos

La simulación de interacción humana también provoca que las posiciones de cursores consultadas y enviadas como cur1 y cur2 al servidor de descarga de TrickBot sean distintas:

Conexión a Internet en sandbox de Advanced Threat Protection de Hornetsecurity

De este modo, la sandbox de ATP de Hornetsecurity no se deja engañar por las diversas técnicas antisandboxing.

Bibliografía

Indicadores de Compromiso (IOCs)

Hashes

SHA256 Nombre de archivo Descripción
d6a44f6460fab8c74628a3dc160b9b0f1c8b91b7d238b6b4c1f83b3b43a0463d e-vote_form_1967.doc Documento de descarga de TrickBot

URLs

  • hxxps[:]//ppid.indramayukab.go[.]id/may.php?omz=1&pic=b&id=[0-9]{8}&scr=[0-9]{3,4}x[0-9]{3,4}&cur1=[0-9]{3,4}x[0-9]{3,4}&cur2=[0-9]{3,4}x[0-9]{3,4}
  • hxxps[:]//www.inspeclabeling[.]com/wp-content/themes/processing/may.php?omz=1&pic=b&id=[0-9]{8}&scr=[0-9]{3,4}x[0-9]{3,4}&cur1=[0-9]{3,4}x[0-9]{3,4}&cur2=[0-9]{3,4}x[0-9]{3,4}

DNSs

  • ppid.indramayukab.go.id
  • www.inspeclabeling.com
Campaña de malware sobre coronavirus con TrickBot

Campaña de malware sobre coronavirus con TrickBot

¿Qué hace el malware Trickbot y cómo puedes mantenerte protegido?

Como ya hemos informado anteriormente, los ciberdelincuentes están utilizando cada vez más la pandemia del coronavirus COVID19 como un desencadenante de sus ataques cibernéticos. Recientemente, Microsoft analizó que el troyano TrickBot es uno de los malware más productivos enviados a los usuarios de Microsoft 365 a través de correo electrónico. Como parte de una reciente campaña, un gran número de correos electrónicos fueron enviados en nombre de una organización benéfica inexistente que supuestamente ofrecía pruebas gratuitas de COVID19 – el archivo adjunto incluía un formulario infectado con el malware TrickBot.

Hornetsecurity explicará la actual campaña maliciosa acerca de COVID19, cómo se comportan los ataques TrickBot así como recomendaciones para proteger tu empresa contra ellos. 

¿Qué es TrickBot?

Trickbot troyano es un programa malicioso modular que fue utilizado originalmente como un troyano bancario online, pero ahora ha evolucionado en una herramienta de ataque cibernético universal utilizado por los ciberdelincuentes. Además de un componente para el fraude bancario online, el inventario incluye módulos para espiar los datos de acceso de navegadores web, programas de correo electrónico y otras aplicaciones.

En la mayoría de los casos, el malware ataca  a través de un archivo adjunto de correo electrónico infectado y se infiltra a través de Emotet. Una vez que se abre el documento, se activa el componente principal del troyano TrickBot: “el cargador”. Esto deshabilita inicialmente los servicios de Windows y la ejecución de procesos de Windows Defender y otros programas antivirus.

En el siguiente paso, TrickBot intenta obtener derechos administrativos para que todos los módulos cargados posteriormente se puedan ejecutar con derechos de administrador, por ejemplo, para leer los datos de acceso almacenados en el servicio de autoridad de seguridad local (LSA).

A continuación, TrickBot espía información sobre el sistema y la red en función del módulo cargado. Todos los datos recogidos se transmiten por el malware a los ciberdelincuentes que ahora pueden analizar si otras acciones valen la pena.

Al mismo tiempo, gracias a los datos de acceso espiados fuera de la LSA (Local Security Authority), TrickBot se extiende automáticamente por toda la red.  

El TrickBot a menudo aparece en una combinación particularmente peligrosa de malware junto a Emotet y Ryuk, que tienen como objetivo cifrar todos los archivos sensibles en el sistema y sólo los liberan de nuevo a cambio de pagos de rescate.

¿Qué está pasando en la actual campaña de Trickbot sobre el coronavirus?

Tanto Microsoft, como el Security Lab de Hornetsecurity han observado que los buzones de Microsoft 365 se están convirtiendo cada vez más en el objetivo de los ataques cibernéticos relacionados con el coronavirus. Un nuevo análisis muestra que TrickBot está demostrando ser particularmente productivo en este contexto: una actual campaña de correo electrónico en nombre de una ficticia organización humanitaria promete pruebas gratuitas de Covid 19. Los destinatarios sólo tendrían que solicitarlos a través de un documento adjunto.

Si se abre el archivo, se ejecuta el malware. La macro espera 20 segundos antes de recargar sus módulos maliciosos para no volverse visible en el análisis del sandbox.

Dependiendo  de cómo de lucrativo sea evaluado el golpe de destino por el análisis de TrickBot, otros componentes maliciosos como Ryuk, se pueden volver a cargar para cifrar datos confidenciales.

¿Por qué los buzones de Microsoft 365 son un destino popular?

El número de usuarios de Microsoft 365 está creciendo rápidamente – debido a la situación actual también se puede suponer que el crecimiento se acelerará una vez más – ya que muchas empresas están equipando a sus empleados para el teletrabajo con los servicios basados en la nube de Microsoft. Sin embargo, Microsoft 365 también se está convirtiendo en un objetivo popular para los ciberdelincuentes debido al creciente número de usuarios. Sólo en 2019, el número de ataques a las cuentas de correo electrónico de los usuarios se cuadruplicó.
El problema es que los usuarios de Microsoft 365 son fáciles de identificar porque los registros MX y los registros de detección automática están disponibles públicamente en la red. Los usuarios deben confiar en los mecanismos de seguridad de Microsoft, pero si un atacante obtiene acceso a una cuenta de Microsoft 365, todos los datos están disponibles para ellos sin restricciones. Si se toma una cuenta de administrador, el atacante puede incluso obtener datos de todos los usuarios de la empresa.

¿Cómo puedes protegerte contra una infección de TrickBot?

El ataque TrickBot descrito no sólo afecta a los buzones de Microsoft 365, sino que se propaga ampliamente a objetivos potencialmente lucrativos y es representativo de una multitud de ataques que actúan de acuerdo a un patrón similar. Ahora surge la pregunta: ¿Cómo puedes protegerte contra estos métodos?

Lo más importante es que los correos electrónicos maliciosos sean interceptados por filtros avanzados de spam y malware. Los correos electrónicos entrantes deben pasar a través de varias etapas de filtro antes de que se reconozcan como seguros y se entreguen al servidor de correo del cliente o de lo contrario los correos electrónicos terminarán en cuarentena.

Además, debe asegurarse que las contraseñas sólo se almacenan en un administrador de contraseñas, porque TrickBot roba las contraseñas que se almacenan directamente en aplicaciones como el navegador web. También se recomienda utilizar la autenticación de dos factores para los servicios que ofrecen esta característica. Porque si las contraseñas son robadas, lo cibercriminales no pueden hacer nada con la información.

Del mismo modo, la restricción de los derechos de acceso en la red minimiza el riesgo de propagación posterior.

Los usuarios de Microsoft 365 también deben ser conscientes de esto: con el fin de reducir la probabilidad de ser el objetivo de este tipo de ataques, tiene sentido proteger las cuentas de Microsoft 365 con una solución de terceros adicional además de los mecanismos de protección de Microsoft. Los proveedores especializados ocultan los registros DNS y MX de Microsoft, lo que hace que los usuarios de Microsoft 365 sean muy difíciles de identificar para los atacantes.

Algunos proveedores permiten el cifrado completo de los datos de buzón de correo, almacenados en la nube,  y ayudan a protegerlos del espionaje. Incluso si los ciberdelicuentes consiguen secuestrar la cuenta con éxito.