dmXProtect: detén, frena y acaba con el malware antes de que se instale

Nota del autor: sería un descuido no mencionar lo extraño del título de este blog, un spin-off simple pero ridículo de una canción de DMX. Esta publicación comenzó como una charla para la conferencia MacDevOps YVR en Vancouver, Columbia Británica. La idea de 'dmXProtect' no dejaba de hacerme gracia mientras la preparaba. Notarás este hilo conductor a lo largo del blog, así que espero que me perdones mientras cumplo mi sueño de integrar con éxito el R&B/HipHop de los 2000 con la seguridad de macOS 😂

A medida que la adopción de macOS se vuelve más común en las empresas, ya sea en la pequeña y mediana empresa (SMB) o a nivel de gran empresa, una de las preguntas más frecuentes es: "¿Necesito una herramienta de seguridad de terceros?"

En una publicación titulada Built-In macOS Security Tools, hablé de varias herramientas que Apple incluye en sus dispositivos para mantener seguros a sus usuarios. Dos de esas herramientas están cambiando rápidamente, y además creo que son lo bastante valiosas e interesantes como para merecer un blog entero dedicado a ellas. Esos dos productos son XProtect y XProtect Remediator (XPR). Gran parte de la información a continuación también se presentó en MacDevOps YVR; sin embargo, debido a las limitaciones de tiempo y a las particularidades de estas dos herramientas, vale la pena profundizar aún más en ellas.

Al observar las herramientas de seguridad integradas de macOS, tres cumplen un papel fundamental en la protección de los usuarios de macOS: Gatekeeper, XProtect y XPR. Estas tres se corresponden muy bien con tres conceptos centrales de la seguridad de macOS: verificar, bloquear y remediar.

Hablaremos de Gatekeeper en otra ocasión, pero conversemos sobre lo que XProtect y XPR están diseñados para hacer: bloquear comportamiento malicioso y remediar amenazas. También veremos cómo interactúan entre sí, trabajando juntos hacia un objetivo común.

XProtect

Primero, hablemos de XProtect. ¿Qué es?

Es un conjunto de archivos cuyo objetivo es investigar archivos. Como parte del subsistema com.apple.xprotect, verifica si hay contenido malicioso cuando ocurre alguno de estos eventos: se abre una aplicación por primera vez, se realizan cambios en una aplicación o se actualizan las firmas de XProtect.

Si bajamos hasta donde viven los archivos de XProtect, en /Library/Apple/System/Library/CoreServices, vemos varios archivos distintos, entre ellos XProtect.bundle y XProtect.app. Si profundizamos más, llegamos a cinco archivos.

XProtect.meta.plist

La idea original detrás de XProtect era verificar software desactualizado como Java y Flash, y aunque todavía busca detectar software desactualizado, el propósito principal de este archivo es prevenir extensiones maliciosas de Safari.

Las extensiones que bloquea se identifican por su identificador de paquete y un ID de desarrollador correspondiente.

XProtect.plist

XProtect también busca bloquear malware, y eso se evidencia en el XProtect.plist. Como podemos ver abajo, mediante la clave Description, XProtect busca aquí bloquear el malware Bundlore. En este caso, busca el LSItemContentType de 'application bundle'.

LegacyEntitlementAllowlist.plist

El LegacyEntitlementAllowlist es un poco un enigma, ya que no está documentado exactamente para qué se usa este archivo.

Afortunadamente, basándonos en el nombre del archivo, la especulación es relativamente directa: contiene un arreglo de más de 42.500 cdhashes. A partir de esto, junto con el nombre de este plist, podemos especular que esto se refiere a binarios macho específicos que necesitan un entitlement heredado para funcionar correctamente.

XProtect.yara

La función principal actual de XProtect no es solo buscar amenazas conocidas, sino también buscar amenazas desconocidas. Para esto, XProtect aprovecha YARA, que permite a terceros "crear descripciones de familias de malware (o lo que sea que quieras describir) basadas en patrones textuales o binarios". Esto permite a los usuarios, y en este caso a Apple, no buscar malware basándose únicamente en su hash o ID de desarrollador, sino buscar patrones comunes entre el malware. Esto significa que si el malware cambia sus credenciales de desarrollador o su identificador de paquete, YARA aún podría potencialmente prevenirlo.

Todas las reglas YARA dentro de XProtect.yara están ofuscadas, lo que dificulta entender a qué familias de malware apunta cada regla, especialmente si no estás investigando activamente malware de macOS. Con más de doscientas reglas, Apple continúa ampliando este conjunto de reglas con actualizaciones a este archivo.

gk.db

Este archivo está diseñado para funcionar con Gatekeeper para verificar archivos cuando se establece el bit de cuarentena. Dentro de gk.db, encontramos varias tablas distintas llamadas blocked_hashes y blocked_teams. La tabla blocked_hashes contiene 546 hashes que Gatekeeper, aprovechando XProtect, bloquea.

Si pasamos a la tabla blocked_teams, vemos que contiene solo dos columnas, una de las cuales enumera el ID de desarrollador de software malicioso.

Dentro de esta tabla, tenemos 132 ID de equipo únicos (también llamados 'ID de desarrollador').

Esta tabla solo la consulta Gatekeeper, así que si el indicador de cuarentena se ha marcado como seguro (o permitido), entonces XProtect no consultará esta tabla, y viceversa. Para ver esto en acción, incluí una demostración.

Dónde están mis logs

Como mencionamos antes, XProtect funciona desde el subsistema com.apple.xprotect, así que usando el registro unificado, podemos transmitir los eventos de XProtect a nuestra Terminal o a tu gestión de dispositivos móviles (MDM) si es compatible.

Para recopilar estos logs de XProtect, puedes usar el comando
log show -info -backtrace -debug -loss -signpost -predicate 'subsystem == "com.apple.xprotect"'

A partir de aquí, podemos obtener más información sobre lo que está haciendo XProtect.

XProtect Remediator

XProtect Remediator (XPR) está reemplazando activamente a la Malware Removal Tool (MRT) y ahora es la herramienta de remediación de facto de Apple. No hablaremos de MRT, pero puedes encontrar más información en nuestro blog Built-In macOS Security Tools.

XPR es un paquete de aplicación (XProtect.app) que vive junto a XProtect.bundle en CoreServices.

Al entrar en la aplicación hasta el nivel más bajo del paquete, vemos que hay veinte binarios macho.

Cada uno de estos tiene una función única para remediar una familia específica de malware.


Los veinte binarios de XPR a partir de la versión 99 de XProtectRemediator

Desde la creación de XPR, ha habido otras actualizaciones relacionadas. El Endpoint Security de Apple se ha ampliado para capturar algunos de los eventos de XPR: ES_EVENT_TYPE_NOTIFY_XP_MALWARE_DETECTED y ES_EVENT_TYPE_NOTIFY_XP_MALWARE_REMEDIATED.

Esto es una gran victoria para los investigadores de amenazas y los desarrolladores, ya que brinda un conocimiento más preciso sobre XProtect y XPR. Por otro lado, la información que devuelven estos dos eventos de ES sigue siendo limitada por ahora.

Nos proporciona una ruta hacia donde se detectó, el nombre del malware (mediante el nombre de la regla de XProtect.yara) y eso es prácticamente todo el contexto. Sin embargo, los logs unificados para XPR son bastante completos.

Para recopilar los logs unificados de XPR, puedes usar el comando
log show -info -backtrace -debug -loss -signpost -predicate 'subsystem == "com.apple.XProtectFramework.PluginAPI"  && category == "XPEvent.structured"'

Usando nuestra demostración anterior, podemos saltarnos la primera parte y ver de inmediato los logs de XPR tras bloquear la ejecución de nuestro malware.

¿Soy suficiente?

Una de las principales preguntas que busco responder es: "¿Son XProtect y XPR soluciones lo bastante buenas para mantenerme a mí (o a mis usuarios) a salvo?" Mi postura se ha mantenido bastante firme desde la introducción de YARA en XProtect. Creo que la combinación de estas dos herramientas sería suficiente para tu tía que solo usa su equipo para apostar en línea o navegar por Pinterest; sin embargo, a gran escala, no creo que estas herramientas tengan la cobertura que necesitas para mantener seguros a los usuarios.

La falta de visibilidad consumible sobre lo que ocurre con XProtect y XPR dificulta la clasificación de problemas a gran escala. A esto se suma que Apple tiene millones de endpoints, y cualquier cambio en estas reglas se envía a todas esas máquinas. Dicho esto, no tienen margen alguno para falsos positivos, lo cual, aunque es justo lo que toda empresa de EDR busca reducir, en realidad creo que lanzar una red un poco más amplia para capturar comportamiento malicioso, arriesgándose a algún falso positivo ocasional, es un gran intercambio. Por último, aunque YARA ayuda a capturar más muestras de familias de malware, no necesariamente captura comportamiento malicioso. El malware tiene que pertenecer a familias específicas para poder prevenirlo.

Mirando hacia adelante:  macOS Sonoma

En macOS Ventura, hemos visto una nueva base de datos SQLite en /var/protected/xprotect/XPdb. Esta es una base de datos que parece estar orientada a detecciones de comportamiento, usando reglas llamadas BastionRule-1,2,3,4.

Al observar un evento de muestra, podemos ver cómo estos se asignan a las distintas columnas.

En un hilo muy interesante de @tsunek0h, hablan de este nuevo conjunto de reglas, de cómo interactúan con syspolicyd y del experimental XProtectBehaviorService en su conjunto.

Epílogo

La prevención de malware sigue siendo un foco importante para Apple, que continúa (aunque con una cadencia irregular) actualizando XProtect y XPR. Además, con las funciones beta tempranas de posibles detecciones de comportamiento, Apple parece estar dando un paso hacia gestionar ella misma el comportamiento malicioso. Sin embargo, hasta que llegue ese día, es probable que los usuarios y administradores estén más protegidos invirtiendo en una solución de terceros.

Para saber más sobre las ofertas de Huntress en macOS, contáctanos o revisa este blog.

Si te interesa más contenido sobre macOS, mira este episodio de Tradecraft Tuesday donde exploramos un malware de macOS bastante turbio.

También te podría interesar