macOS Gatekeeper / Quarantine / XProtect
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Gatekeeper
Gatekeeper es una función de seguridad desarrollada para sistemas operativos Mac, diseñada para garantizar que los usuarios ejecuten solo software de confianza en sus sistemas. Funciona validando el software que un usuario descarga e intenta abrir desde fuentes fuera de la App Store, como una aplicación, un complemento o un paquete de instalación.
El mecanismo clave de Gatekeeper radica en su proceso de verificación. Verifica si el software descargado está firmado por un desarrollador reconocido, asegurando la autenticidad del software. Además, determina si el software está notarizado por Apple, confirmando que está libre de contenido malicioso conocido y que no ha sido alterado después de la notarización.
Además, Gatekeeper refuerza el control y la seguridad del usuario al solicitar a los usuarios que aprueben la apertura del software descargado por primera vez. Esta salvaguarda ayuda a prevenir que los usuarios ejecuten inadvertidamente código ejecutable potencialmente dañino que pueden haber confundido con un archivo de datos inofensivo.
Application Signatures
Las firmas de aplicaciones, también conocidas como firmas de código, son un componente crítico de la infraestructura de seguridad de Apple. Se utilizan para verificar la identidad del autor del software (el desarrollador) y para asegurar que el código no ha sido alterado desde que fue firmado por última vez.
Así es como funciona:
Firmar la Aplicación: Cuando un desarrollador está listo para distribuir su aplicación, firma la aplicación usando una clave privada. Esta clave privada está asociada con un certificado que Apple emite al desarrollador cuando se inscribe en el Programa de Desarrolladores de Apple. El proceso de firma implica crear un hash criptográfico de todas las partes de la aplicación y cifrar este hash con la clave privada del desarrollador.
Distribuir la Aplicación: La aplicación firmada se distribuye a los usuarios junto con el certificado del desarrollador, que contiene la clave pública correspondiente.
Verificar la Aplicación: Cuando un usuario descarga e intenta ejecutar la aplicación, su sistema operativo Mac utiliza la clave pública del certificado del desarrollador para descifrar el hash. Luego recalcula el hash basado en el estado actual de la aplicación y lo compara con el hash descifrado. Si coinciden, significa que la aplicación no ha sido modificada desde que el desarrollador la firmó, y el sistema permite que la aplicación se ejecute.
Las firmas de aplicaciones son una parte esencial de la tecnología Gatekeeper de Apple. Cuando un usuario intenta abrir una aplicación descargada de internet, Gatekeeper verifica la firma de la aplicación. Si está firmada con un certificado emitido por Apple a un desarrollador conocido y el código no ha sido alterado, Gatekeeper permite que la aplicación se ejecute. De lo contrario, bloquea la aplicación y alerta al usuario.
A partir de macOS Catalina, Gatekeeper también verifica si la aplicación ha sido notarizada por Apple, añadiendo una capa adicional de seguridad. El proceso de notarización verifica la aplicación en busca de problemas de seguridad conocidos y código malicioso, y si estas verificaciones son satisfactorias, Apple añade un ticket a la aplicación que Gatekeeper puede verificar.
Check Signatures
Al verificar alguna muestra de malware, siempre debes comprobar la firma del binario, ya que el desarrollador que lo firmó puede estar ya relacionado con malware.
Notarización
El proceso de notarización de Apple sirve como una salvaguarda adicional para proteger a los usuarios de software potencialmente dañino. Implica que el desarrollador envíe su aplicación para su examen por parte del Servicio de Notarización de Apple, que no debe confundirse con la Revisión de Aplicaciones. Este servicio es un sistema automatizado que examina el software enviado en busca de contenido malicioso y cualquier problema potencial con la firma de código.
Si el software aprueba esta inspección sin generar preocupaciones, el Servicio de Notarización genera un ticket de notarización. El desarrollador debe adjuntar este ticket a su software, un proceso conocido como 'stapling'. Además, el ticket de notarización también se publica en línea donde Gatekeeper, la tecnología de seguridad de Apple, puede acceder a él.
Al momento de la primera instalación o ejecución del software por parte del usuario, la existencia del ticket de notarización - ya sea adjunto al ejecutable o encontrado en línea - informa a Gatekeeper que el software ha sido notariado por Apple. Como resultado, Gatekeeper muestra un mensaje descriptivo en el diálogo de lanzamiento inicial, indicando que el software ha sido sometido a verificaciones de contenido malicioso por parte de Apple. Este proceso, por lo tanto, aumenta la confianza del usuario en la seguridad del software que instala o ejecuta en sus sistemas.
Enumerando GateKeeper
GateKeeper es tanto varios componentes de seguridad que evitan que se ejecuten aplicaciones no confiables como también uno de los componentes.
Es posible ver el estado de GateKeeper con:
Tenga en cuenta que las verificaciones de firma de GateKeeper se realizan solo en archivos con el atributo de Cuarentena, no en todos los archivos.
GateKeeper verificará si, de acuerdo con las preferencias y la firma, un binario puede ser ejecutado:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-792d07b4238223d86401b1ff9381173b3a996ba0%252Fimage%2520%281150%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8a263db9&sv=1)
La base de datos que mantiene esta configuración se encuentra en /var/db/SystemPolicy
. Puede verificar esta base de datos como root con:
Note cómo la primera regla terminó en "App Store" y la segunda en "Developer ID" y que en la imagen anterior estaba habilitado para ejecutar aplicaciones de la App Store y desarrolladores identificados. Si modificas esa configuración a App Store, las reglas de "Notarized Developer ID" desaparecerán.
También hay miles de reglas de tipo GKE:
Estos son hashes que provienen de /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
y /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
O podrías listar la información anterior con:
Las opciones --master-disable
y --global-disable
de spctl
desactivarán completamente estas verificaciones de firma:
Cuando está completamente habilitado, aparecerá una nueva opción:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-fe0c0ac0a075f9b9c1444c8ecf5d522a82f66a11%252Fimage%2520%281151%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=afd8612c&sv=1)
Es posible verificar si una aplicación será permitida por GateKeeper con:
Es posible agregar nuevas reglas en GateKeeper para permitir la ejecución de ciertas aplicaciones con:
Archivos en Cuarentena
Al descargar una aplicación o archivo, aplicaciones específicas de macOS como navegadores web o clientes de correo electrónico adjuntan un atributo de archivo extendido, comúnmente conocido como el "flag de cuarentena," al archivo descargado. Este atributo actúa como una medida de seguridad para marcar el archivo como proveniente de una fuente no confiable (internet), y potencialmente portadora de riesgos. Sin embargo, no todas las aplicaciones adjuntan este atributo; por ejemplo, el software común de clientes de BitTorrent generalmente omite este proceso.
La presencia de un flag de cuarentena señala la función de seguridad Gatekeeper de macOS cuando un usuario intenta ejecutar el archivo.
En el caso de que el flag de cuarentena no esté presente (como con archivos descargados a través de algunos clientes de BitTorrent), las verificaciones de Gatekeeper pueden no realizarse. Por lo tanto, los usuarios deben tener precaución al abrir archivos descargados de fuentes menos seguras o desconocidas.
Verificar la validez de las firmas de código es un proceso intensivo en recursos que incluye generar hashes criptográficos del código y todos sus recursos empaquetados. Además, verificar la validez del certificado implica hacer una verificación en línea a los servidores de Apple para ver si ha sido revocado después de ser emitido. Por estas razones, una verificación completa de la firma de código y la notarización es impráctica de ejecutar cada vez que se lanza una aplicación.
Por lo tanto, estas verificaciones solo se realizan al ejecutar aplicaciones con el atributo de cuarentena.
Este atributo debe ser establecido por la aplicación que crea/descarga el archivo.
Sin embargo, los archivos que están en sandbox tendrán este atributo establecido en cada archivo que creen. Y las aplicaciones no sandbox pueden establecerlo ellas mismas, o especificar la clave LSFileQuarantineEnabled en el Info.plist, lo que hará que el sistema establezca el atributo extendido com.apple.quarantine
en los archivos creados,
Además, todos los archivos creados por un proceso que llama a qtn_proc_apply_to_self
están en cuarentena. O la API qtn_file_apply_to_path
añade el atributo de cuarentena a una ruta de archivo especificada.
Es posible verificar su estado y habilitar/deshabilitar (se requiere root) con:
Puedes también encontrar si un archivo tiene el atributo extendido de cuarentena con:
Verifica el valor de los atributos extendidos y encuentra la aplicación que escribió el atributo de cuarentena con:
En realidad, un proceso "podría establecer banderas de cuarentena en los archivos que crea" (intenté aplicar la bandera USER_APPROVED en un archivo creado, pero no se aplica):
Last updated