Tecnologías de seguridad

Seguridad de macOS: cómo los atacantes se adaptan a los mecanismos de protección integrados

Cuanto más popular es un sistema entre los usuarios, más interés despierta entre los atacantes. Aunque Windows tiene la audiencia más amplia, macOS ocupa el segundo lugar en popularidad. Como consecuencia, este sistema operativo se está convirtiendo en un blanco cada vez más atractivo para los atacantes.

En macOS se han implementado varios mecanismos de protección, y la mayoría garantiza la seguridad integral del usuario. En este artículo, analizaremos cómo funcionan algunos de ellos, presentaremos ejemplos de ataques comunes y estrategias para detectar y prevenir estas amenazas.

Análisis de los mecanismos de seguridad de macOS

Para empezar, presentamos un conjunto de mecanismos de protección presentes en macOS y una breve descripción de cada uno:

  1. Keychain: administrador de contraseñas, viene preinstalado en el sistema.
  2. TCC: mecanismo de administración de accesos de aplicaciones.
  3. SIP: tecnología de protección de integridad para directorios y procesos vulnerables.
  4. Cuarentena de archivos (File Quarantine): protección contra la ejecución de archivos sospechosos descargados de Internet.
  5. Gatekeeper: sistema de protección contra ejecución de aplicaciones no verificadas.
  6. XProtect: protección contra software malicioso en macOS basada en firmas.
  7. XProtect Remediator: herramienta de respuesta automática a las amenazas detectadas con Xprotect.

Keychain

El administrador de contraseñas Keychain, presente en macOS desde 1999, sigue siendo uno de los componentes clave del sistema de seguridad de Apple. Brinda un almacenamiento centralizado y seguro de diversa información confidencial, desde certificados y claves de cifrado hasta contraseñas y credenciales. De forma predeterminada, todas las cuentas de usuario y contraseñas guardadas se almacenan en Keychain. El acceso a los datos está protegido mediante una contraseña maestra.

Los archivos de Keychain se encuentran en los directorios ~/Library/Keychains/, /Library/Keychains/ y /Network/Library/Keychains/. Aparte de la contraseña maestra, cada uno de los directorios puede estar protegido con su propia clave. De forma predeterminada, solo los propietarios de la copia correspondiente de Keychain y los administradores tienen acceso a estos archivos. Además, los datos en estos archivos se cifran utilizando el algoritmo seguro AES-256-GCM. Este enfoque garantiza un alto nivel de protección, incluso en caso de acceso físico al sistema.

No obstante, los delincuentes hacen intentos de atacar al administrador “nativo” de contraseñas macOS. Existen herramientas especializadas, poe ejemplo Chainbreaker, que se proponen la extracción de datos de los archivos Keychain. Si uno tiene acceso al archivo y la contraseña, Chainbreaker puede realizar un análisis local y descifrar todos los datos sin necesidad de estar instalado en el dispositivo de la víctima. Además, las herramientas de macOS integradas, tales como la aplicación gráfica Keychain Access o la herramienta de línea de comandos /usr/bin/security, también pueden ser utilizadas con fines maliciosos si el sistema ya está comprometido.

Así, aunque la arquitectura de Keychain ofrece una protección sólida, resulta fundamental controlar el acceso local, proteger la contraseña maestra y minimizar la posibilidad de la extracción de datos fuera del sistema. Presentamos un ejemplo de comando que un atacante puede utilizar para usar Chainbreaker:

python -m chainbreaker -pa test_keychain.keychain -o output

Para administrar a través de la línea de comandos, como lo hemos mencionado, se puede utilizar la herramienta security, con los siguientes comandos:

  • security list-keychains: muestra todos los archivos Keychain disponibles
Archivos Keychain disponibles para el usuario

Archivos Keychain disponibles para el usuario

  • security dump-keychain -a -d: realiza un volcado de todos los archivos Keychain
Volcado del archivo Keychain

Volcado del archivo Keychain

  • security dump-keychain ~/Library/Keychains/login.keychain-db: volcado de un archivo específico Keychain (se muestra el archivo del usuario como ejemplo)

Para detectar ataques de este tipo, se debe configurar el registro de eventos de inicio de procesos. Para hacerlo, conviene utilizar el mecanismo de registro integrado en macOS llamado ESF. Esto permite organizar la recopilación de los eventos necesarios y construir una lógica de detección. En Kaspersky Endpoint Detection and Response (KEDR) ya se ha implementado y configurado la recopilación de eventos necesarios mediante este mecanismo.

Para detectar esta actividad, se requieren eventos que incluyan los comandos security dump-keychain y security list-keychains, ya que esta actividad no es común para un usuario habitual de macOS. A continuación mostramos tabto un ejemplo de activación de EDR en un evento de volcado de keychain, tanto como un ejemplo de regla de detección.

Ejemplo de evento de EDR

Ejemplo de evento de EDR

Sigma:

SIP

La Protección de Integridad del Sistema (SIP) es uno de los mecanismos de protección más importantes de macOS, diseñado para prevenir la intervención no autorizada en archivos y procesos críticos del sistema, incluso por parte de usuarios con derechos administrativos. SIP se implementó por primera vez en OS X 10.11 El Capitan y representó un gran paso en el fortalecimiento de la seguridad al limitar la modificación de los componentes del sistema y protegerlos de impactos maliciosos.

El mecanismo protege archivos y directorios al asignarles atributos especiales que impiden que cualquiera los modifique, excepto los procesos confiables del sistema, a los que no tienen acceso ni los usuarios ni otro software. Esto evita que se inserten componentes maliciosos en dichos archivos. Por defecto, los siguientes directorios están protegidos por SIP:

  • /System
  • /sbin
  • /bin
  • /usr (excepto /usr/local)
  • /Applications (aplicaciones preinstaladas)
  • /Library/Application Support/com.apple.TCC

La lista completa de directorios protegidos se encuentra en el archivo de configuración /System/Library/Sandbox/rootless.conf. Sobre todo, se trata de archivos del sistema y de aplicaciones preinstaladas, pero SIP también permite añadir rutas adicionales.

SIP proporciona un alto nivel de protección para los componentes del sistema. Sin embargo, si se cuenta con acceso físico al sistema o si se han comprometido los privilegios de administrador, SIP puede desactivarse. Para ello, el sistema se debe reiniciar en modo de recuperación (Recovery Mode); luego ejecutarse el comando csrutil disable en el terminal. Para verificar el estado actual de SIP se usa el comando csrutil status.

Resultado del comando csrutil status

Resultado del comando csrutil status

Para detectar esta actividad, es necesario monitorear el comando csrutil status. A menudo, el delincuente verifica el estado de SIP para entender las posibilidades disponibles. Dado que csrutil disable se ejecuta en el modo de recuperación del sistema, antes de que se cargue cualquier solución de monitoreo, este comando no queda registrado y, por lo tanto, no tiene sentido rastrear su ejecución. En vez de eso, se puede organizar un monitoreo del estado de SIP y si cambia, enviar una alerta de seguridad.

Ejemplo de evento de EDR

Ejemplo de evento de EDR

Sigma:

TCC

MacOS incluye un sistema de control de privilegios de aplicaciones: TCC (Transparencia, Consentimiento y Control), que garantiza la transparencia del acceso de las aplicaciones a datos y funciones sensibles del sistema, exigiendo que el usuario otorgue un consentimiento explícito cuando se solicite dicho acceso. La base de TCC se encuentra en la estructura de las bases de datos SQLite (TCC.db), ubicadas tanto en directorios generales (/Library/Application Support/com.apple.TCC/TCC.db) como en los catálogos de usuarios individuales (/Users/<username>/Library/Application Support/com.apple.TCC/TCC.db).

Contenido de una de las tablas en la base de datos TCC

Contenido de una de las tablas en la base de datos TCC

La integridad de estas bases y la protección contra el acceso no autorizado se implementan mediante el mecanismo SIP (Protección de Integridad del Sistema), que hace imposible su modificación directa. Para intervenir estas bases, el atacante necesita desactivar SIP o acceder a uno de los procesos del sistema de confianza. Esto garantiza un alto nivel de resistencia del mecanismo TCC a la intervenciones y manipulaciones.

TCC funciona de la siguiente manera: cada acceso primario de la aplicación a funciones sensibles (tales como la cámara, el micrófono, la geolocalización, el acceso completo al disco, el control de entrada, etc.) va acompañado de una solicitud de confirmación, una ventana interactiva que informa al usuario sobre los permisos solicitados. Esto permite al usuario controlar la expansión de privilegios.

Ventana de TCC con una solicitud de permisos

Ventana de TCC con una solicitud de permisos

Una de las estrategias para evadir este mecanismo de seguridad es el TCC clickjacking, una técnica en la que se coloca una ventana falsa sobre la ventana de solicitud de permisos para ocultar lo que se está pidiendo en realidad. Como resultado, el usuario, sin siquiera sospecharlo, presiona el botón para otorgar permisos al software malicioso. Aunque esta técnica no explota el propio mecanismo TCC, permite a los atacantes eludir la protección para acceder a funciones sensibles del sistema.

Ejemplo de ventana reemplazada

Ejemplo de ventana reemplazada

Los delincuentes están interesados en obtener los derechos de Full Disk Access o Accessibility, ya que estos permisos proporcionan un acceso casi ilimitado al sistema. El monitoreo de los cambios en TCC.db y el control de la asignación de privilegios sensibles son tareas cruciales para asegurar la seguridad integral de macOS.

Cuarentena de archivos (File Quarantine)

El mecanismo integrado Cuarentena de archivos (File Quarantine) de macOS se incorporó por primera vez en OS X 10.5 Tiger. Su objetivo es aumentar la seguridad del sistema al trabajar con archivos descargados de fuentes externas. Este mecanismo es similar a la tecnología Mark-of-the-Web en Windows y sirve para advertir a los usuarios sobre el peligro potencial antes de ejecutar un archivo descargado.

Cuando un archivo se descarga a través de un navegador u otra aplicación compatible con la Cuarentena de archivos, se le asigna un atributo especial, com.apple.quarantine. Al ejecutar un archivo de este tipo por primera vez, en caso si tiene una firma válida y no genera sospechas en Gatekeeper (que revisaremos más adelante), se muestra una notificación para confirmar la ejecución. Esto tiene como propósito prevenir que el usuario, ejecute un programa malicioso sin saber.

Ejemplo de atributos de archivo, que incluyen el atributo de cuarentena

Ejemplo de atributos de archivo, que incluyen el atributo de cuarentena

Para obtener información detallada sobre el atributo com.apple.quarantine, se puede usar el comando xattr -p com.apple.quarantine <Nombre del archivo>. Por ejemplo, en la captura de pantalla que se presenta a continuación se pueden ver los siguientes datos en la salida de este comando:

  • 0083: indicador para acciones futuras de Gatekeeper
  • 689cb865: marca de tiempo en formato hexadecimal (Mac Absolute Time)
  • Safari: navegador a través del cual se descargó el archivo.
  • 66EA7FA5-1F9E-4779-A5B5-9CCA2A4A98F5: UUID adjunto a este archivo. Es necesario para almacenar el registro de un archivo en la base de datos.
Información detallada sobre el atributo com.apple.quarantine

Información detallada sobre el atributo com.apple.quarantine

La información obtenida mediante este comando se guarda en la base ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2, lo que permite una auditoría posterior.

Datos en la base com.apple.LaunchServices.QuarantineEventsV2

Datos en la base com.apple.LaunchServices.QuarantineEventsV2

Los delincuentes no están interesados en que sus archivos se pongan en cuarentena, por lo que utilizan diversos métodos para eludir la Cuarentena de archivos. Por ejemplo, descargan archivos a través de curl, wget u otras herramientas de bajo nivel que no están integradas con la Cuarentena de archivos y evitan que se les asigne el atributo.

Evasión de la cuarentena usando curl

Evasión de la cuarentena usando curl

Ademas, el atributo puede eliminarse manualmente usando el comando xattr -d com.apple.quarantine <nombre del archivo>.

Eliminación del atributo de cuarentena

Eliminación del atributo de cuarentena

Si se elimina el atributo de cuarentena, no se mostrará una advertencia al ejecutar el archivo, lo que puede ser utilizado en ataques de ingeniería social o en casos donde el atacante prefiera ejecutar software malicioso sin que el usuario lo sepa.

Ejecutar archivo sin verificación de Cuarentena de archivos

Ejecutar archivo sin verificación de Cuarentena de archivos

Para detectar esta actividad, es necesario monitorear la ejecución del comando xattr junto con -d y com.apple.quarantine, lo que indicará que se ha eliminado la etiqueta de cuarentena. Asimismo, al investigar incidentes que afecten a macOS, es importante conocer el origen del archivo: si llegó al host sin que se establezca la etiqueta de cuarentena, esto será un factor adicional de riesgo. A continuación mostramos un ejemplo de activación de EDR en un evento de eliminación de la etiqueta de cuarentena, así como un ejemplo de regla para detectar tales eventos.

Ejemplo de evento de EDR

Ejemplo de evento de EDR

Sigma:

Gatekeeper

Gatekeeper es uno de los elementos clave del sistema de seguridad de macOS, diseñado para proteger a los usuarios de la ejecución de aplicaciones peligrosas. Presentado por primera vez en OS X Leopard (2012), Gatekeeper verifica la firma digital de las aplicaciones y, el atributo de cuarentena (com.apple.quarantine) si existe, restringe la ejecución de programas no firmados y no aprobados por el usuario, reduciendo así el riesgo de ejecución de código malicioso.

Para gestionar Gatekeeper se utiliza la utilidad spctl. A continuación demostramos un ejemplo de cómo se invoca a la utilidad para verificar si la firma es válida y está certificada por Apple:

Spctl -a -t exec -vvvv <ruta al archivo>

Verificación de un archivo no confiable con spctl

Verificación de un archivo no confiable con spctl

Verificación de un archivo confiable con spctl

Verificación de un archivo confiable con spctl

Gatekeeper requiere que la aplicación esté:

  • o bien firmada con un certificado válido de desarrollador de Apple,
  • o bien certificada por Apple después de la verificación del código fuente.

Si la aplicación no cumple con estos requisitos, Gatekeeper la bloquea por defecto cuando se intenta iniciarla con doble clic. Es posible desbloquearla, pero el usuario necesita entrar en los ajustes y navegar por ellos. En consecuencia, para que un ataque tenga éxito, el atacante no solo tendrá que convencer a la víctima de marcar la aplicación como confiable, sino también explicarle cómo hacerlo. Hay que tomar en cuenta lo sospechoso que resulta que se necesiten manipulaciones complejas para iniciar el software. Sin embargo, al abrir la aplicación a través del menú contextual (clic derecho → Abrir), el usuario puede evitar el bloqueo con “un solo clic”, confirmando su intención de usar la aplicación directo en la notificación emergente. Esto se utiliza en ataques con ingeniería social: el software malicioso puede ir acompañado de instrucciones que inciten al usuario a ejecutar el archivo a través del menú contextual.

Ejemplo del uso de esta técnica en el Adware Chropex

Ejemplo del uso de esta técnica en el Adware Chropex

Pongamos a prueba el método para ejecutar programas mediante el menú contextual. Al hacerlo con doble clic en el ícono del programa que tiene el atributo de cuarentena, vemos esta ventana.

Inicio del programa con el atributo de cuarentena haciendo doble clic con el ratón

Inicio del programa con el atributo de cuarentena haciendo doble clic con el ratón

Si ejecutamos el programa utilizando el menú contextual, es decir, haciendo clic con el botón derecho del ratón y luego seleccionando la opción “Abrir”, veremos lo siguiente:

Inicio del programa con el atributo de cuarentena mediante el menú contextual

Inicio del programa con el atributo de cuarentena mediante el menú contextual

Los atacantes con acceso local y derechos de administrador pueden desactivar Gatekeeper utilizando el comando spctl –master disable o --global-disable.

Para detectarlo es necesario monitorear la ejecución del comando spctl con los parámetros --master-disable o --global-disable, los cuales desactivan Gatekeeper a nivel del sistema. A continuación se muestra un ejemplo de activación de EDR ante un evento de desactivación de Gatekeeper, así como un ejemplo de regla de detección.

Ejemplo de evento de EDR

Ejemplo de evento de EDR

Sigma:

Conclusión

Los mecanismos de protección integrados de macOS son muy resistentes y desempeñan un papel importante en garantizar la seguridad del sistema. No obstante, como ocurre en cualquier sistema operativo consolidado, los delincuentes siguen adaptándose y buscando formas de eludir incluso las barreras de protección más confiables. Muchas veces, cuando logran evadir con éxito los mecanismos estándar, puede resultar difícil implementar medidas de seguridad adicionales y detener el ataque. Por lo tanto, vale la pena utilizar también soluciones avanzadas de proveedores externos para una protección completa contra las ciberamenazas. Los productos de Kaspersky Lab, como Kaspersky EDR Expert o Kaspersky Endpoint Security, son capaces de detectar y bloquear la actividad maliciosa observada en este artículo. Además, se pueden utilizar las reglas Sigma que hemos proporcionado para evitar que se evadan las medidas de protección estándar.

Seguridad de macOS: cómo los atacantes se adaptan a los mecanismos de protección integrados

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Informes

BlindEagle vuela alto en LATAM

Kaspersky proporciona información sobre la actividad y los TTPs del APT BlindEagle. Grupo que apunta a organizaciones e individuos en Colombia, Ecuador, Chile, Panamá y otros países de América Latina.

MosaicRegressor: acechando en las sombras de UEFI

Encontramos una imagen de firmware de la UEFI infectada con un implante malicioso, es el objeto de esta investigación. Hasta donde sabemos, este es el segundo caso conocido en que se ha detectado un firmware malicioso de la UEFI usado por un actor de amenazas.