Muchos usuarios de macOS aún confían en que sus equipos no necesitan protección. Y, lo que es peor, los administradores de sistemas de las empresas en las que los empleados trabajan con hardware de Apple suelen pensar lo mismo.
En la conferencia Black Hat USA 2020, el investigador Patrick Wardle intentó cambiar la opinión de la audiencia sobre este concepto erróneo presentando su análisis de malware para macOS y construyendo una cadena de exploits para tomar el control de un ordenador Apple.
Microsoft, macros y Mac
Una de las formas más comunes de atacar a los ordenadores que ejecutan macOS es a través de documentos con macros maliciosas, es decir, a través de aplicaciones de Microsoft Office. De hecho, a pesar de la disponibilidad de las propias aplicaciones de productividad de Apple, muchos usuarios prefieren utilizar Microsoft Office. Algunos lo hacen por costumbre; otros por la compatibilidad con los documentos que generan sus compañeros.
Por supuesto, todo el mundo conoce desde hace mucho tiempo la amenaza potencial que plantean los documentos que contienen macros. Por ello, tanto Microsoft como Apple cuentan con mecanismos para proteger al usuario.
Microsoft alerta a los usuarios cuando abren un documento que contiene una macro. Además, si el usuario decide iniciar la macro de todos modos, el código se ejecuta en un sandbox o entorno de pruebas que, según los desarrolladores de Microsoft, evita que el código acceda a los archivos del usuario o cause otros daños al sistema.
En lo que respecta a Apple, la compañía introdujo varias funciones de seguridad nuevas en la última versión de su sistema operativo, macOS Catalina. En concreto, se incluyen la cuarentena de archivos y la “notarización”, una tecnología que evita el lanzamiento de ejecutables desde fuentes externas.
Básicamente, la combinación de estas tecnologías debería bastar para evitar cualquier daño de macros maliciosas. En teoría, todo parece bastante seguro.
Una cadena de exploits extrae la macro del sandbox
En la práctica, sin embargo, muchos mecanismos de seguridad se implementan de manera bastante problemática. Por lo tanto, los investigadores (o atacantes) pueden encontrar métodos para evitarlos. Wardle ilustró su presentación demostrando una cadena de exploits.
1. Omitir el mecanismo que deshabilita las macros
Tomemos como ejemplo el sistema que advierte al usuario cuando detecta una macro en un documento. En la mayoría de los casos, funciona según lo previsto por los desarrolladores. Pero al mismo tiempo, es posible crear un documento en el que la macro se inicie automáticamente y sin notificar al usuario, incluso aunque las macros se hayan deshabilitado en la configuración.
Esto es posible utilizando el formato de archivo Sylk (SLK). Este formato, que utiliza el lenguaje de macros XLM, se desarrolló en la década de los 80 y se actualizó por última vez en 1986. Sin embargo, las aplicaciones de Microsoft (por ejemplo, Excel) todavía admiten Sylk por razones de compatibilidad con versiones anteriores. Esta vulnerabilidad no es nueva y se describió con detalle en el 2019.
2. Escapar del sandbox
Como acabamos de establecer, un atacante puede ejecutar una macro de forma invisible. Pero el código se sigue ejecutando en el sandbox de MS Office. Entonces, ¿cómo puede el ciberdelincuente atacar el ordenador? Bueno, resulta que no es tan difícil escapar del sandbox de Microsoft en Mac.
Es cierto que no puedes modificar archivos que ya están almacenados en tu ordenador desde el sandbox. Sin embargo, sí puedes crearlos. Este exploit ya se ha utilizado antes para escapar del sandbox y parece que Microsoft lanzó una actualización para cerrar la vulnerabilidad. Sin embargo, el problema no llegó a resolverse y, como ha demostrado un análisis más detallado del parche, la solución abordó los síntomas, bloqueando la creación de archivos desde lugares que algunos de los desarrolladores consideraban inseguros, como la carpeta LaunchAgents, que es la ubicación de almacenamiento para las secuencias de comandos que se inician automáticamente después de reiniciar el equipo.
Pero ¿quién decidió que Microsoft tuviera en cuenta todas las “ubicaciones peligrosas” a la hora de crear el parche? Como sucedió, un script escrito en Python y lanzado desde un documento de Office, y por lo tanto ejecutado en un sandbox, se pudo usar para crear un objeto llamado “ítem de inicio”. Cuando el usuario inicia sesión en el sistema, se genera un objeto con ese nombre de forma automática. El sistema lanza el objeto, por lo que se ejecutará fuera del sandbox de Office y, por lo tanto, evitará las restricciones de seguridad de Microsoft.
3. Eludir los mecanismos de seguridad de Apple
Bueno, ahora sabemos cómo ejecutar en secreto una macro y crear un ítem de inicio. Por supuesto, los mecanismos de seguridad en macOS aún siguen evitando que se inicie la puerta trasera, que después de haber sido creada por un proceso sospechoso desde el interior del sandbox no es de confianza, ¿verdad?
Por un lado, sí: los mecanismos de seguridad de Apple efectivamente bloquean la ejecución del código obtenido de esta forma. Por otro lado, hay una solución alternativa: si insertas un archivo ZIP como un ítem de inicio, en el siguiente inicio de sesión, el sistema descomprimirá automáticamente el archivo.
Todo lo que le queda por hacer al atacante es elegir la ubicación correcta para descomprimir el archivo. Por ejemplo, el archivo se puede colocar en el mismo directorio que las bibliotecas de usuario, un paso por encima de aquel donde se supone que deben almacenarse los objetos de tipo Launch Agent (los que Microsoft considera peligrosos). El archivo en sí puede incluir un directorio llamado LaunchAgents, con el script Launch Agent.
Una vez descomprimido, el script se ubica en la carpeta LaunchAgents para ejecutarse tras el reinicio del equipo. Al haber sido creado por un programa de confianza (The Archiver) y no tener atributos en cuarentena, puede usarse para lanzar algo más peligroso. Los mecanismos de seguridad ni siquiera evitarán el inicio de este archivo.
Como resultado, un atacante puede lanzar un mecanismo a través de la shell de comandos Bash para obtener acceso remoto (obteniendo así la llamada shell inversa). Este proceso Bash se puede utilizar para descargar archivos, que también carecerán del atributo de cuarentena, lo que permitirá al atacante descargar código verdaderamente malicioso y ejecutarlo sin restricciones.
En resumen:
- Un atacante puede lanzar en secreto una macro maliciosa sin mostrar ninguna advertencia ni preguntar al usuario, incluso aunque la ejecución de la macro esté desactivada en la configuración. Todo lo que el atacante necesita es que el usuario descargue un documento de Office y lo abra.
- A continuación, el atacante puede escapar del sandbox de Microsoft Office y crear un ítem de inicio y un archivo con Launch Agent dentro que se ejecutará automáticamente fuera del sandbox cuando tenga lugar el siguiente inicio de sesión.
- Con unos simples pasos, el atacante puede eludir fácilmente los mecanismos de seguridad de Apple extrayendo un objeto tipo Launch Agent de un archivo ZIP. Evadiendo así los mecanismos de seguridad del sistema, el programa puede descargar y ejecutar la parte de “combate” del código malicioso.
Cómo protegerse de las macros maliciosas en macOS
Por supuesto, el investigador informó de sus hallazgos tanto a Apple como a Microsoft, y ambas compañías hicieron sus correcciones en silencio sin publicitarlas e, incluso, sin asignar identificadores CVE oficiales a las vulnerabilidades. Pero esta situación sugiere que, con un estudio cuidadoso de los mecanismos de seguridad, es muy posible encontrar métodos para evitarlos.
Antes, macOS se consideraba más seguro, pero el motivo no eran los mecanismos de seguridad particularmente avanzados, sino que los atacantes lo ignoraban en general. Sin embargo, los ordenadores Apple ahora son mucho más populares, incluso en el entorno corporativo y, por lo tanto, los ataques dirigidos a macOS se están volviendo mucho más interesantes para los ciberdelincuentes.
Por lo tanto, para mantenerte seguro, no solo necesitas mantener actualizado tu sistema y todo el software que contiene, sino también utilizar soluciones de seguridad que puedan detectar y contrarrestar la actividad sospechosa. Por ejemplo, nuestra línea de productos de seguridad, tanto para usuarios domésticos como para clientes corporativos, incluye versiones para macOS.