Este ZIP podría contener algo que no te gustará

Mosáicos en las villas romanas

El ingenio humano es infinito. Y se puede usar para el mal. En Hackers now use ZIP file concatenation to evade detection nos cuentan un truco que se basa en la utilización de varios ficheros ZIP (el formato permite utilizar varios para facilitar el envío de cantidades grandes de información). El problema es que el resultado parece un fichero ZIP normal pero contiene algo mucho más complicado (por ejemplo, otros datos en formato ZIP, que pueden ser pasados por alto por algunas soluciones de análisis).

Viene con un regalo: no todo es lo que parece

Tornillos

Siempre se había dicho que había que tener cuidado con lo que había en la definición de los sitios donde nuestro sistema busca los ejecutables por defecto (el PATH). La cuestión es que la superficie de exposición y dónde puede haber elementos peligrosos se va ampliando con el tiempo. En This New Supply Chain Attack Technique Can Trojanize All Your CLI Commands nos dan idea sobre elllo.

Primero nos habla de los ‘puntos de entrada’ (entry points) que es un mecanismo que permite que algunas funcionalidades estén disponibles a través de la línea de instrucciones sin necesidad de que el usuario conozca la estructura de un paquete; esto es, no sólo tenemos una biblioteca (librería) o un programa, sino que podemos tener otras formas de ejecutar algunas partes que puedan ser interesantes por algún motivo.

Entry points are a powerful feature of the packaging system that allows developers to expose specific functionality as a cli command without requiring users to know the exact import path or structure of the package.

¿El truco? Los malos pueden insertar en paquetes de apariencia normal sustitutos de algunas instrucciones habituales y utilizar estos puntos de entrada para ejecutar sus programas.

Malicious packages can use entry points to masquerade as widely-used third-party tools. This tactic is particularly effective against developers who frequently use these tools in their workflows.

En casos como estos podría ser bastante fácil darse cuenta de que algo va mal, así que una solución puede ser utilizar el nombre para hacer un programa que tiene el efecto esperado, además de los efectos maliciosos.

In addition to silently executing the attacker’s malicious code, it calls the original, legitimate command with all the user’s arguments.

La clave aquí (y la dificultad) es que el usuario ejecutará una instrucción, recibirá el resultado esperado y puede que a la vez esté sufriendo algún tipo de ataque (robo, borrado, ejecución de otras cosas,…).

Otro motivo para tener mucho cuidado con lo que se instala, dónde y cómo lo ejecutamos.

Confundiendo a los usuarios usando sitios habituales de alojamiento de información

Puerta del Perdón

En File hosting services misused for identity phishing hablan del uso de los sitios de alojamiento de ficheros para realizar ataques: se comprometen las credenciales (o algún sistema de acceso) de un usuario, se sube un fichero al servicio y se comparte con la organización objetivo del ataque. El ataque tiene éxito porque la gente confía en estos servicios de alojamiento (estamos acostumbrados a usarlos, recibir compartidos, …)

The attack typically begins with the compromise of a user within a trusted vendor. After compromising the trusted vendor, the threat actor hosts a file on the vendor’s file hosting service, which is then shared with a target organization. This misuse of legitimate file hosting services is particularly effective because recipients are more likely to trust emails from known vendors, allowing threat actors to bypass security measures and compromise identities

Una vez que se ha compartido el fichero el servicio enviará un enlace a las víctimas. No es un mensaje falso, sino uno de los que generan este tipo de servicios habitualemente.

Once the threat actor shares the files on the file hosting service with the intended users, the file hosting service sends the target user an automated email notification with a link to access the file securely.

Cuando el usuario accede al enlace se le pide que se identifique (con posible uso de medidas adicionales de seguridad del servicio)

When the targeted user accesses the shared file, the user is prompted to verify their identity by providing their email address:

Finalmente, el usuario puede ver el documento que, típicamente, invita a pinchar en algún enlace (ahora ya sí, malicioso)

the user is successfully authorized and can view a document, often masquerading as a preview, with a malicious link, which is another lure to make the targeted user click the “View my message” access link.

Ahora este enlace redirige al usuario a una página de phishing que emula el procedimiento de acceso habitual y allí ya le roban sus credenciales.

This link redirects the user to an adversary-in-the-middle (AiTM) phishing page, where the user is prompted to provide the password and complete multifactor authentication (MFA). The compromised token can then be leveraged by the threat actor to perform the second stage BEC attack and continue the campaign.

Estamos tan acostumbrados a identificarnos, reidentificarnos y volvernos a identificar en estas plataformas con este tipo de flujos de trabajo que, aparentemente, los usuarios caen sin darle muchas vueltas.

Atención.

Las extensiones de los navegadores y algunos consejos sobre su seguridad

Libro. There is a cat con the internet!

En Attacking browser extensions un nuevo recordatorio de que las extensiones del navegador son programas externos que ejecutamos en nuestra máquina y que deberíamos prestarles atención.

Una extensión del navegador es un conjunto de ficheros HTML, CSS, y JavaScript que realizan conjuntamente algún tipo de transformación para ‘mejorar’ nuestra navegación.

A browser extension is a group of HTML, CSS, and JavaScript files that work together to enhance the browsing experience.

También tienen un fichero de configuración manifest.json donde se pueden especificar algunas cuestiones como el contexto de ejecución (contenido, ventanas emergentes -popup-, y de fondo).

In the manifest.json file, we can specify the context that a file will run. The three major contexts are the webpage/content script, the popup and the background.

El contexto de fondo es el más potente, porque permite el acceso a la mayoría de APIs de extensiones del navegador, dándole control sobre la experiencia de navegación, con muchas capacidades.

The Extension APIs give an extension a lot of control of the user’s browsing experience, with the ability to arbitrarily control tabs, read from the websites, or modify and read cookies, to name a few.

También hay un sistema de permisos, que permite limitar este control.

Luckily, these abilities are each locked behind permissions, requested in the manifest.json file under the “permissions” key.

Habría que fijarse en permisos como el de pestaña activa (activeTab), que puede ser bastante peligroso.

This activeTab is interesting for exploitation and malicious extensions alike due to its immense power.

Por su parte. los permisos relacionados con el contenido pueden afectar porque interactúan con el DOM (modelo de objetos de la página), escuchar las interacciones del usuario, y reaccionar ante ellas.

The frontend of an extension is just as important as the backend when extensions want to interact with the DOM of the pages visited by the user

The content script may also listen for user interaction on the current page, allowing an action to be taken based on the user interaction.

Finalmente el contexto de las ventanas emergentes tiene que ver con la ejecución de JavaScript que interactuará con la extensión, permitiendo cambios en la configuración, realización de peticiones…

… the popup will let the user directly interact with the functionality of the extension, usually allowing them to change settings and make requests to backend servers that are tied to the extension.

Naturalmente, con acceso a las APIs de extensiones, con las correspondientes consecuencias.

Like the background script, the JavaScript running in the popup page can use all the Extensions APIs that the extension has permissions for and any JavaScript runs in the domain of the extension.

Por lo tanto, las extensiones pueden ser la causa de:

  1. Aceptar contenido proporcionado por un atacante y utilizarlo de forma insegura.

The extension takes attacker-supplied input from the website and uses it in some unsafe way.

  1. Otra extensión o un sitio web envían un mensaje a la extensión y ésta la utiliza de forma peligrosa.

Another extension or a website sends a message to the extension and the extension uses that input in a dangerous way.

  1. La extensión utiliza algunos de los parámetros de la URL cuando se carga y los utilizar para realizar alguna operación con privilegio para realizar acciones peligrosas. Para que esto sea posible debería haber algún problema en la configuración.

The extension takes in URL parameters when it is loaded, and those parameters are used to do a privileged operation. This requires a vulnerable configuration.

La primera consecuencia es que pueden ocurrir cosas malas pero que, en general, no es tan fácil.

why browser extensions are generally pretty secure, because it often requires multiple points of failure in order to introduce an exploitable vulnerability

Sobre las posibles vulnerabilidades que podrían ocurrir son las esperables: cross-site scripting, server-side request forgery e inyección en el API de extensiones (Extension API injection).

Entre las mitigaciones, los navegadores implementan aleatorización de los identificadores (UUID randomization) de forma que un ataque en el HTML tenga menos posibilidades de éxito.

Firstly, many browsers have randomized the ID of the extension, so that attacking exposed HTML files is no longer a threat, unless a leak of the internal ID, called the UUID, can be found.

Modelado con herramientas como CodeQL (proporcionado por GitHub, de cuyo blog es el artículo), que permiten detectar comportamientos maliciosos de algunos flujos de ejecución.

CodeQL’s code injection query gets a RemoteFlowSource (any Javascript APIs that potentially take in data from an external system or user) and looks for flow into Javascript code injection sinks such as eval.

Interesante. Los ‘malos’ sólo tienen que encontrar una de todas las vías de entrada que existen.