Volver a todas las publicaciones
Publicado el · por Renaud Deraison

La extensión que se salió del navegador

Zscaler encontró una puerta trasera llamada Edgecution que se ejecuta dentro de una ventana de Microsoft Edge que la víctima nunca abrió, y luego usa Native Messaging — el canal legítimo que una extensión usa para hablar con una aplicación de escritorio — para ejecutar comandos en el host. La pregunta que vale la pena hacerse es qué alcanza ese puente hacia el host cuando el navegador vive en una VM desechable.

Se supone que una extensión de navegador está atrapada dentro del navegador. Una puerta trasera llamada Edgecution es una demostración funcional de que «se supone» estaba haciendo gran parte del trabajo. Se ejecuta dentro de una ventana de Microsoft Edge que la víctima nunca abrió y no puede ver, y usa una función incorporada en todos los navegadores Chromium para ejecutar comandos en la máquina que hay debajo.

Imagina a la persona recién contratada en contabilidad, con tres semanas en el puesto, todavía diciendo que sí a todo. Llega un mensaje en Microsoft Teams de alguien cuyo nombre aparece en soporte de TI. Hay una actualización del filtro de spam para Outlook; el equipo de correo la está desplegando esta semana; aquí está la página. Ella la abre. Está rotulada como una «Consola de gestión de actualizaciones de Outlook», parece bastante interna, y le da un breve comando que ejecutar para terminar la instalación. Lo ejecuta. No parece pasar nada. Cierra la pestaña y vuelve al trabajo.

A finales de junio, el equipo ThreatLabz de Zscaler documentó lo que ocurre después de que ella cierra esa pestaña. La familia de malware es Edgecution, y BleepingComputer lo cubrió la misma semana. El malware es silencioso por diseño; la parte que merece una mirada más de cerca es dónde el atacante eligió esconderlo.

Un mensaje de TI que no lo era.

El primer movimiento es ingeniería social a través de Microsoft Teams, con el atacante haciéndose pasar por el propio personal de TI de la empresa y dirigiendo a la empleada hacia esa página falsa de actualización de Outlook. La página ofrece tres maneras de «terminar la instalación», y según el desglose de Zscaler todas entregan lo mismo: un script de AutoHotKey ofuscado empaquetado con un ejecutable real de AutoHotKey, un script batch de Windows copiado al portapapeles, o un script de PowerShell copiado al portapapeles. Dos de esos tres son la maniobra de pegar desde el portapapeles que quizá conozcas como ClickFix — la página escribe el comando por ti, y lo único que le queda hacer al humano es pegar y pulsar Enter.

Ese pegado lo es todo. La carga útil llega dentro de un ZIP cifrado con sus bytes mágicos PK eliminados, de modo que el archivo no parezca un ZIP para nada que lo escanee. Una vez que el script se ejecuta, el host queda comprometido — no por un exploit ingenioso, sino porque se convenció a una persona de ejecutar un programa en su propia computadora. Todo lo que viene después es el atacante decidiendo cómo quedarse.

El navegador como puerta trasera.

La forma en que sobrevive a un reinicio es la parte en la que vale la pena detenerse. La mayoría del malware que quiere persistir deja caer un ejecutable, escribe una clave de arranque en el registro, o instala un servicio — todas cosas que las herramientas de seguridad están diseñadas para vigilar. Edgecution hace algo más silencioso. El script de instalación programa una tarea de Windows que lanza Microsoft Edge con un puñado de banderas de línea de comandos, incluyendo --load-extension para cargar de forma lateral la propia extensión del atacante y --headless=new para que la ventana del navegador nunca se dibuje en pantalla. Ahora hay un proceso de Microsoft Edge ejecutándose en la máquina — un programa firmado, de confianza y corriente — que el usuario no puede ver y que no inició.

Dentro de ese navegador invisible, la extensión hace dos cosas. Emite señales hacia un servidor de mando y control (la dirección que los atacantes usan para enviar instrucciones) a través de un WebSocket alojado en Amazon CloudFront, de modo que el tráfico parece un navegador normal hablando con una red de contenidos normal. Y retransmite los comandos que recibe hacia el host usando Native Messaging.

Native Messaging es una función real y documentada de Chromium, funcionando como fue diseñada. Es el canal que permite a una extensión de navegador hablar con un programa de escritorio instalado en la misma máquina — el mecanismo que una extensión usa para entregarle trabajo a su aplicación de escritorio asociada, por ejemplo. Una extensión llama a chrome.runtime.sendNativeMessage, y el navegador lanza un pequeño programa «native host» nombrado en un archivo de manifiesto y le canaliza JSON. Edgecution registra su propio native host: un native_host.bat que arranca una puerta trasera en Python. A partir de ahí la puerta trasera puede ejecutar comandos de shell, ejecutar PowerShell, ejecutar Python arbitrario, leer y escribir archivos, listar procesos en ejecución, y reportar información del sistema de vuelta por la cadena — todo lo que necesitas para ser el corredor de acceso inicial que le entrega un punto de apoyo limpio a un grupo de ransomware. Zscaler vincula el modus operandi de este operador con la operación de ransomware Payouts King.

1 · TEAMSMensaje de «TI»actualización del filtro de spam2 · SEÑUELOPágina falsa de Outlook«Consola de actualizaciones»3 · EJECUCIÓNLa víctima ejecuta el scriptpegar, o AutoHotKey4 · PUERTA TRASERAEdge oculto--headless --load-extLÍMITE DEL SANDBOX DEL NAVEGADORNative MessagingsendNativeMessageEN TU SISTEMA OPERATIVO HOSTnative_host.batPuerta trasera en Pythoncomandos como el usuarioLO QUE PUEDE HACER LA PUERTA TRASERAejecutar shell + PowerShellejecutar Python arbitrarioleer + escribir archivoslistar procesosrecopilar info del sistemaentregar al ransomware
La cadena de Edgecution. Se convence a la víctima de ejecutar un script (paso 3) — el host queda comprometido ahí. Desde ese punto de apoyo el malware lanza una ventana de Microsoft Edge que mantiene oculta, carga de forma lateral su propia extensión, y usa Native Messaging — el canal legítimo que una extensión usa para hablar con un programa de escritorio — para ejecutar comandos en el host a través de una puerta trasera en Python. Fuente: Zscaler ThreatLabz.

Fíjate en lo que no está en esa imagen: ningún servicio nuevo, y ningún .exe dejado caer reposando en el disco esperando a ser marcado. Lo que ejecuta los comandos del atacante es python.exe lanzado por un archivo batch lanzado por Microsoft Edge — y el tráfico que transporta esos comandos es un navegador hablando con un CDN. Se mezcla con el entorno porque casi cada parte es algo legítimo realizando una acción de apariencia legítima.

Los titulares llamaron a esto un escape del sandbox. La versión precisa: el host ya estaba comprometido en el momento en que la empleada ejecutó el script. Native Messaging no es un agujero que el atacante reventó; es una puerta que el navegador trae de fábrica, y el atacante la cruzó. La distinción señala dónde debe vivir el verdadero arreglo. No se sale uno a base de parches de una función que funciona como fue diseñada. Cambias hacia dónde da esa puerta.

Lo que alcanza «el puente hacia el host» en Bromure.

Bromure es un navegador que pone la seguridad primero. Cada pestaña se ejecuta dentro de una VM Linux desechable (máquina virtual — su propia computadora aparte) en tu Mac, y la VM se borra cuando cierras la ventana. Esa única decisión arquitectónica cambia lo que el resto de la historia de Edgecution significa en tu máquina.

Empieza por Native Messaging, el meollo de todo el ataque. En un navegador normal, el «native host» con el que una extensión habla es un programa en tu sistema operativo — el mismo sistema operativo que guarda tus archivos, tu llavero, y tus recursos de red compartidos. El puente es abierto: cualquier extensión puede registrar un native host, y ese host puede ser cualquier cosa. Todo el truco de Edgecution depende de que el navegador y tus archivos estén en la misma máquina.

En Bromure, el navegador no está en esa máquina. Se ejecuta dentro de la VM desechable, así que el sistema operativo que está debajo del navegador es el invitado Linux desechable, no macOS. Un native host malicioso registrado por algo dentro de la VM sería un programa dentro de la VM — hablando con una computadora que no contiene nada de tu vida y que deja de existir cuando cierras la ventana. El estrecho conjunto de puentes que sí llegan hasta macOS son de origen propio y están integrados en la imagen de disco de solo lectura: el puente de credenciales, por ejemplo, rellena passkeys y contraseñas desde el Keychain de tu Mac. No hay forma de que una sesión en ejecución añada uno nuevo, porque — y esta es la segunda mitad de la respuesta — no puedes instalar extensiones en absoluto.

Navegador tradicionalTU COMPUTADORANavegadorExtensiónNative MessagingSO HOSTTus archivosKeychainRecursos de redEl puente aterriza donde están tus archivos.BromureTU MACVM DESECHABLENavegadorsolo puentes de origen propio · sin instalaciónNative MessagingSO Linux invitadose borra cuando cierras la ventanaAISLAMIENTO POR HARDWAREmacOS — tus archivos y KeychainintactosEl puente se queda en la máquina desechable.
La misma extensión, la misma llamada de Native Messaging. A la izquierda, el puente conecta el navegador con el sistema operativo que guarda tus archivos. En Bromure, el navegador se ejecuta dentro de una VM desechable, así que el puente llega al Linux desechable del invitado — y, para empezar, no habrías podido instalar la extensión. Los pocos puentes que sí llegan a macOS (passkeys y contraseñas desde Keychain) son de origen propio y están integrados en la imagen.

El bloqueo no es un ajuste del que una página de phishing pueda convencerte para saltártelo. En la política del navegador de Bromure, chrome://extensions y la Web Store están en una lista de bloqueo rígida, y no hay developer mode, ni «load unpacked», ni ningún interruptor avanzado para esquivarlo. Tampoco hay forma de hacer lo que Edgecution hace del lado del host — lanzar un segundo Chromium con --load-extension apuntando a tu perfil real — porque tu perfil real no es una carpeta en tu Mac a la que un proceso descarriado pueda apuntar un navegador. Está sellado dentro de la VM.

Hay un hilo más que vale la pena tirar, porque es la victoria más barata de toda la historia. El señuelo llegó por Microsoft Teams. Mucha gente ahora usa Teams, Outlook y Slack como aplicaciones web. Si ese hábito vive dentro de una pestaña desechable de Bromure, el mensaje de suplantación, el enlace y la página falsa de «actualización de Outlook» aterrizan todos en una sesión aislada desde el primer segundo — y la cadena que acabamos de recorrer nunca llega al paso tres, porque la página que quiere que ejecutes un script está sentada en una VM que no puede alcanzar tu shell. El ataque que necesita el host nunca se encuentra con el host.

Lo que esto no resuelve.

El aislamiento no es un hechizo, y vale la pena exponer sus límites con claridad.

Un comando que ejecutas tú mismo

El punto de entrada aquí es un humano ejecutando un script — un comando batch o de PowerShell copiado al portapapeles, o un ejecutable de AutoHotKey. Si pegas un comando en tu propia shell y pulsas Enter, no hay ningún aislamiento de navegador en ese bucle. El uso compartido del portapapeles entre la VM y tu Mac está activado por defecto porque copiar y pegar es parte de la navegación normal; puedes cambiar un perfil a aislamiento total, y la capa de phishing está ahí para señalar la página antes de que actúes. Pero la regla perdurable es más antigua que todo esto: nunca ejecutes un comando que te haya entregado una página web.

Binarios de Windows, una técnica portable

Edgecution apunta a Microsoft Edge en Windows, y esos archivos exactos no se ejecutarán en un Mac. Eso es un consuelo pobre, no una defensa. Native Messaging es también una función de Chromium en macOS, y esa misma semana trajo una campaña en macOS que convenció a los usuarios de pegar un comando de Terminal para soltar el infostealer Atomic. La técnica es portable; solo los binarios son específicos del sistema operativo.

Lo que Bromure cambia es más acotado y, creemos, más útil que una promesa de que nada malo podrá nunca alcanzarte. Elimina las condiciones que hicieron a Edgecution silencioso y duradero. El navegador ya no es un proceso permanente y de confianza sentado junto a tus archivos. Native Messaging ya no es un puente abierto que cualquier extensión pueda registrar — las extensiones no se pueden añadir en absoluto, y el propio sistema operativo del navegador es desechable. Y la persistencia, lo que toda esta arquitectura fue construida para lograr, no tiene nada en lo que persistir: cierra la ventana y la máquina en la que vivía la puerta trasera desaparece.

El navegador peligroso es el que no puedes ver.

Durante veinte años, los consejos de seguridad sobre navegadores han girado en torno a la ventana que tienes delante — revisa la barra de direcciones, busca el candado, no hagas clic en enlaces extraños. Edgecution es un pequeño recordatorio de que el navegador que hace el daño es cada vez más el que nunca ves: un proceso headless, iniciado por una tarea programada, hablando con un CDN, ejecutando una extensión que no instalaste. No puedes inspeccionar la barra de direcciones de una ventana que nunca se dibujó.

La pregunta ya no es si la ventana que tienes delante es segura. Es qué puede alcanzar cualquier navegador en esta máquina, si se vuelve en tu contra. En una computadora corriente, la respuesta es tus archivos, a través de un puente que viene de fábrica. En una máquina que ejecuta Bromure, la respuesta es: una caja Linux desechable que olvida todo en el momento en que terminas con ella. Esa es la diferencia que vale la pena tener. Instálalo, conviértelo en tu navegador por defecto para la mitad de tu navegación en la que no confías, y deja que las ventanas ocultas den a algo que de todos modos ibas a tirar.