ESET descubrió BackSwap banker utilizando un nuevo método de manipulación del navegador

Los troyanos bancarios en los últimos años han perdido popularidad entre los ciberdelincuentes. Una de las razones es el desarrollo de tecnologías de protección para proveedores de antivirus y desarrolladores de navegadores web. Es difícil llevar a cabo un ataque con la ayuda de un banquero, por eso muchos escritores de virus están cambiando a herramientas más simples y rentables: encriptadores, mineros y software para robar criptomonedas.

Muchos, pero no todos. Hemos descubierto una nueva familia de banqueros que utilizan nuevas técnicas para manipular el navegador. En lugar de introducir código complejo en el proceso del navegador para monitorear su actividad, el malware detecta eventos de Windows en el ciclo de espera de mensajes para verificar los valores de los objetos relacionados con las operaciones bancarias.


Después de descubrir el trabajo con la banca en línea, el malware inyecta JavaScript malicioso en la página web, a través de la consola del desarrollador en el navegador, o directamente en la barra de direcciones. Las operaciones se llevan a cabo sin el conocimiento y la participación del usuario. A primera vista, un esquema simple le permite evitar los mecanismos avanzados para proteger los navegadores de ataques complejos.

Introduccion


Notamos por primera vez este grupo cibernético en enero de 2018, cuando distribuyó los primeros desarrollos, por ejemplo, un programa para robar criptomonedas cambiando la dirección de la billetera en el portapapeles. El grupo estuvo involucrado en la criptomoneda durante varios meses, después de lo cual lanzó la primera versión del banquero: a partir del 13 de marzo, los productos antivirus ESET lo detectarán como Win32 / BackSwap.A.

En el gráfico a continuación, puede ver un salto brusco en las detecciones en comparación con proyectos anteriores, según nuestras estadísticas. Los autores mejoran al banquero y lanzan nuevas versiones casi todos los días (con descansos para el fin de semana).

Figura 1. Descubra Win32 / BackSwap.A y proyectos anteriores relacionados

Distribución y ejecución.


Win32 / BackSwap.A se distribuye en correos electrónicos no deseados que contienen un cargador de JavaScript ofuscado de la familia Nemucod en el archivo adjunto. Actualmente, estos boletines están dirigidos a usuarios de Polonia.

A menudo encontramos en las máquinas víctimas otro conocido cargador de arranque Win32 / TrojanDownloader.Nymaim, que probablemente se extiende de la misma manera. En la actualidad, no sabemos si esta coincidencia o las familias están relacionadas entre sí.

La carga útil se entrega como una versión modificada de una aplicación legítima, parcialmente reescrita por un componente malicioso. La aplicación utilizada para modificaciones cambia regularmente: observamos TPVCGateway, SQLMon, DbgView, WinRAR Uninstaller, 7Zip, OllyDbg y FileZilla Server en esta calidad.

La aplicación se modifica de tal manera que cambia a código malicioso después de su inicialización. Para hacer esto, los autores agregan un puntero a un componente malicioso en la tabla de funciones _initterm() , el interior del tiempo de ejecución de la biblioteca C, que inicializa las variables globales y otras partes del programa antes de llamar a la función main ().


Figura 2. Matriz de punteros _initterm de una aplicación legítima, al final de la cual se agrega un puntero al shellcode del banquero

El método se asemeja a la trojanización; la diferencia es que en nuestro caso la aplicación original deja de funcionar después de inicializar el malvari. El propósito del método no es enmascarar al usuario, sino más bien contrarrestar la detección y la investigación. Los analistas encuentran más difícil detectar a este banquero, ya que muchas herramientas de ingeniería inversa, como IDA Pro, muestran la función main () original como el inicio legítimo del código de la aplicación. No es el hecho de que el analista a primera vista notará algo sospechoso.

La carga útil es un objeto de código binario independiente de la posición con datos incrustados. Las cadenas de caracteres se almacenan en texto sin formato, lo que le permite reemplazar trazas ya sutiles, ya que todas las API de Windows requeridas se buscan mediante hash. Al comienzo del trabajo, el malware proporciona persistencia al copiarse en la carpeta de inicio, luego de lo cual cambia a las funciones del banquero.

Métodos de inyección tradicionales


Un banquero ordinario para robar fondos de la cuenta de la víctima a través de la interfaz de banca en línea se presenta a sí mismo o un módulo especial en el espacio de direcciones del proceso del navegador. Por varias razones, esta no es una tarea fácil. En primer lugar, la inyección puede ser interceptada por un producto antiviral. Además, la profundidad de bits del módulo implementado debe coincidir con la profundidad de bits del navegador: el módulo de 32 bits no debe integrarse en el proceso de 64 bits y viceversa. Como resultado, un ataque requiere dos versiones del mismo módulo: 32- / 64-bit.

Después de una inyección exitosa, el módulo bancario debe detectar las funciones relacionadas con el navegador e interceptarlas. Necesita funciones responsables de enviar y recibir solicitudes HTTP en formato de texto sin formato antes del cifrado y después del descifrado, respectivamente. La complejidad de encontrar características varía de un navegador a otro. En Mozilla Firefox, son exportados por la biblioteca nss3.dll, y sus direcciones son fáciles de encontrar por sus nombres conocidos. Google Chrome y otros navegadores basados ​​en Chromium ocultan estas características. Esto obliga a los creadores de virus a crear esquemas especiales dirigidos a una versión específica del navegador y cambiar las tácticas cuando se lanzan nuevas versiones.

Si se encuentran las funciones y se realiza la intercepción (y la solución antivirus no la detectó), el banquero puede cambiar el tráfico HTTP o redirigir a la víctima a sitios que simulan recursos bancarios en línea legítimos, falsificando certificados. Los famosos troyanos bancarios Dridex , Ursnif, Zbot, Trickbot, Qbot y muchos otros utilizan métodos similares.

Nuevo método de manipulación del navegador.


Win32 / BackSwap.A implementa un enfoque completamente diferente. Bunker utiliza elementos del shell gráfico de Windows e imitación de la entrada del usuario. El método puede parecer trivial, pero es efectivo porque le permite resolver los problemas conocidos de la inyección tradicional. Primero, el malware no interactúa con el navegador a nivel de proceso. Gracias a esto, no hay necesidad de privilegios especiales y evitar los antivirus que protegen contra la inyección convencional. La segunda ventaja para los atacantes es que el banquero no depende de la arquitectura del navegador o su versión; Un código funciona para todos.

El malware rastrea la URL de la página visitada configurando enlaces de eventos para un cierto rango de eventos relevantes disponibles a través del ciclo de espera de mensajes de Windows, como EVENT_OBJECT_FOCUS, EVENT_OBJECT_SELECTION, EVENT_OBJECT_NAMECHANGE y varios otros. El controlador busca valores de URL buscando objetos de cadena que comiencen con HTTP obtenidos llamando al método get_accValue desde la interfaz de eventos IAccessible .


Figura 3. Recepción utilizada para obtener la URL de la página actual en el navegador. Estas direcciones se obtienen marcando la subcadena [ht] tp [s] (resaltada en rojo)

Luego Win32 / BackSwap.A busca direcciones bancarias y encabezados de ventanas del navegador que indiquen que el usuario está preparando una transferencia de dinero.


Figura 4. El banquero está buscando líneas de código relacionadas con bancos específicos. La primera línea es el título de la ventana, la segunda es la parte de la URL

Una vez encontrado el deseado, el banquero descarga JavaScript malicioso correspondiente a un banco específico y lo inyecta en el navegador. La inyección se lleva a cabo de una manera simple pero efectiva.

En muestras anteriores, Win32 / BackSwap.A inserta un script malicioso en el portapapeles y simula una pulsación de tecla para abrir la consola del desarrollador (CTRL + SHIFT + J en Google Chrome, CTRL + SHIFT + K en Mozilla Firefox), luego pega el contenido del búfer (CTRL + V) y presiona ENTRAR para ejecutar el contenido de la consola. El malware luego repite la combinación de teclas para cerrar la consola. En este momento, la ventana del navegador se vuelve invisible: un usuario común probablemente piense que el navegador se congela durante unos segundos.

En nuevas versiones, se mejora el circuito. En lugar de interactuar con la consola del desarrollador, se ejecuta un script malicioso directamente desde la barra de direcciones a través de un protocolo especial de JavaScript , una función infrautilizada que admite la mayoría de los navegadores. El banquero imita presionar CTRL + L para seleccionar la barra de direcciones, BORRAR para borrar el campo, "ingresa" los caracteres en "javascript" a través de una llamada a SendMessageA en un bucle y luego inserta un script malicioso usando la combinación CTRL + V. El script se ejecuta después de "presionar" ENTER. Al final del proceso, la barra de direcciones se borra para eliminar rastros de compromiso.

En la Figura 5, puede ver parte del código inyectado en la consola. Primero, Win32 / BackSwap.A define un navegador al verificar el nombre de la clase de la ventana seleccionada (marcada en azul). JavaScript malicioso se copia en el búfer (marcado en rojo). Luego, el valor de transparencia de la ventana del navegador se cambia a "3", lo que lo hace invisible (marcado en púrpura). La parte relacionada con la función ToggleBrowserConsole , que enciende y apaga la consola, se ToggleBrowserConsole .


Figura 5. Inyección de script

Win32 / BackSwap.A admite ataques en Google Chrome y Mozilla Firefox, se ha agregado compatibilidad con Internet Explorer en versiones recientes. El método es adecuado para la mayoría de los navegadores con una consola de desarrollador o la capacidad de ejecutar código JavaScript desde la barra de direcciones (funciones estándar del navegador).

Tres navegadores comprometidos tienen una característica de seguridad interesante diseñada para evitar ataques Self-XSS : cuando un usuario intenta pegar texto copiado que comienza con "javascript:" en la barra de direcciones, el prefijo del protocolo se elimina y debe ingresarse manualmente nuevamente para ejecutar el script. Win32 / BackSwap.A evita este obstáculo al simular la entrada de caracteres de un prefijo en la barra de direcciones antes de pegar el script malicioso copiado.

Otra herramienta de seguridad se implementa en Mozilla Firefox. El navegador prohíbe copiar scripts a la consola por defecto; en su lugar, muestra una notificación de posibles riesgos y obliga al usuario a ingresar primero manualmente la frase "permitir pegar" para permitir la inserción de caracteres copiados. Para omitir esta medida de seguridad, Win32 / BackSwap.A proporciona la ejecución de un comando de shell (Figura 6), que realiza cambios en el prefs.js configuración prefs.js y elimina esta protección.


Figura 6. Un comando de shell que elimina la protección de insertar un script en la consola de Firefox

Código malicioso de JavaScript


Win32 / BackSwap.A utiliza un script especial para cada uno de los bancos objetivo. Como todos los bancos tienen sitios diferentes, el código es diferente y tiene diferentes variables. Los guiones se inyectan en las páginas en las que, según el banquero, se realiza la preparación de la transferencia de dinero. Los scripts implementados reemplazan en secreto el número de cuenta del destinatario con otro, y cuando la víctima envía la transferencia, el dinero irá a la cuenta de los atacantes. Las contramedidas contra transferencias no autorizadas (autenticación de dos factores) no tienen poder, ya que el titular de la cuenta confirma el envío de fondos.

Los autores de Win32 / BackSwap.A escribieron guiones para trabajar con cinco bancos polacos: PKO Bank Polski, Bank Zachodni WBK SA, mBank, ING y Pekao. Los operadores eliminan algunos bancos de la lista de objetivos: en la mayoría de las versiones nuevas quedan tres bancos: PKO BP, mBank e ING. En versiones anteriores, los atacantes envían el número de cuenta del destinatario desde servidores C&C en sitios de WordPress pirateados. En las nuevas versiones, los números se almacenan en los propios scripts maliciosos. Las cuentas a menudo cambian: se usa un nuevo número de cuenta en casi todas las campañas nuevas.

Los banqueros están interesados ​​en transferencias en un cierto rango, generalmente de 10,000 a 20,000 zlotys polacos (168,000-337,000 rublos). El script no solo reemplaza el número de cuenta del destinatario, sino que también reemplaza el campo de entrada por uno falso: el usuario ve el número correcto y no sospecha nada.


Figura 7. Parte del código malicioso de JavaScript. Los sitios marcados en rojo son responsables de verificar el monto de la transferencia y reemplazar el número de cuenta del destinatario

Conclusión


Win32 / BackSwap.A demuestra que la confrontación entre la industria de la seguridad y los creadores de virus no siempre requiere una nueva técnica y táctica sofisticadas. Los navegadores mejoran la protección contra la inyección de código, por lo que los autores del malware cambiaron a otros métodos de ataque, y solo uno está implementado en Win32 / BackSwap.A.

Los productos antivirus ESET detectan una amenaza como Win32 / BackSwap.A.

Los especialistas de ESET informaron a los desarrolladores de navegadores comprometidos acerca de un nuevo método de ataque.

IoC


9BC4C1D5403DDD90712CE87225490A21D1EDC516 JS/Nemucod.EAN trojan
CF5A74C268661501156663F74CD5E20603B0F261 Win32/BackSwap.A trojan
6251F9AD0E5F551AC4A6B918EF366E86C4CCFDC4 Win32/BackSwap.A trojan
2DC9760A7C6E9D261C73EFB7B2604840734BC058 Win32/BackSwap.A trojan
A68901D0D8C1247FF280F9453E3AE45687C57566 Win32/BackSwap.A trojan (JavaScript)

Source: https://habr.com/ru/post/es413307/


All Articles