macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Para más detalles sobre la técnica, consulta la publicación original en: https://blog.xpnsec.com/dirtynib/ y la siguiente publicación de https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Aquí hay un resumen:
Los archivos Nib (abreviatura de NeXT Interface Builder), parte del ecosistema de desarrollo de Apple, están destinados a definir elementos de UI y sus interacciones en aplicaciones. Incluyen objetos serializados como ventanas y botones, y se cargan en tiempo de ejecución. A pesar de su uso continuo, Apple ahora aboga por Storyboards para una visualización más completa del flujo de UI.
El archivo Nib principal se referencia en el valor NSMainNibFile
dentro del archivo Info.plist
de la aplicación y se carga mediante la función NSApplicationMain
ejecutada en la función main
de la aplicación.
Configuración Inicial:
Crea un nuevo archivo NIB usando XCode.
Agrega un objeto a la interfaz, configurando su clase a NSAppleScript
.
Configura la propiedad source
inicial a través de Atributos de Tiempo de Ejecución Definidos por el Usuario.
Gadget de Ejecución de Código:
La configuración facilita la ejecución de AppleScript bajo demanda.
Integra un botón para activar el objeto Apple Script
, desencadenando específicamente el selector executeAndReturnError:
.
Pruebas:
Un simple Apple Script para fines de prueba:
Prueba ejecutando en el depurador de XCode y haciendo clic en el botón.
Preparación:
Copia la aplicación objetivo (por ejemplo, Pages) en un directorio separado (por ejemplo, /tmp/
).
Inicia la aplicación para eludir problemas de Gatekeeper y almacenarla en caché.
Sobrescribiendo el Archivo NIB:
Reemplaza un archivo NIB existente (por ejemplo, About Panel NIB) con el archivo DirtyNIB creado.
Ejecución:
Desencadena la ejecución interactuando con la aplicación (por ejemplo, seleccionando el elemento del menú About
).
Modifica el AppleScript para acceder y extraer datos del usuario, como fotos, sin el consentimiento del usuario.
Accede y revisa un ejemplo de un archivo .xib malicioso que demuestra la ejecución de código arbitrario.
En la publicación https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ puedes encontrar un tutorial sobre cómo crear un dirty nib.
Las restricciones de lanzamiento obstaculizan la ejecución de aplicaciones desde ubicaciones inesperadas (por ejemplo, /tmp
).
Es posible identificar aplicaciones que no están protegidas por restricciones de lanzamiento y apuntar a ellas para la inyección de archivos NIB.
Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, los métodos anteriores involucraban:
Copiar la aplicación a una ubicación diferente (por ejemplo, /tmp/
).
Renombrar directorios dentro del paquete de la aplicación para eludir las protecciones iniciales.
Después de ejecutar la aplicación para registrarse con Gatekeeper, modificar el paquete de la aplicación (por ejemplo, reemplazando MainMenu.nib con Dirty.nib).
Renombrar los directorios de nuevo y volver a ejecutar la aplicación para ejecutar el archivo NIB inyectado.
Nota: Las actualizaciones recientes de macOS han mitigado este exploit al prevenir modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, lo que hace que el exploit sea ineficaz.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)