macOS Dirty NIB

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Para m谩s detalles sobre la t茅cnica, consulta la publicaci贸n original de: 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:

Qu茅 son los archivos Nib

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.

Proceso de Inyecci贸n de Dirty Nib

Creaci贸n y Configuraci贸n de un Archivo NIB

  1. Configuraci贸n Inicial:
  • Crea un nuevo archivo NIB usando XCode.
  • Agrega un objeto a la interfaz, configurando su clase como NSAppleScript.
  • Configura la propiedad source inicial a trav茅s de Atributos de Tiempo de Ejecuci贸n Definidos por el Usuario.
  1. 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:.
  1. Pruebas:
  • Un simple Apple Script para fines de prueba:
bash
set theDialogText to "PWND"
display dialog theDialogText
  • Prueba ejecutando en el depurador de XCode y haciendo clic en el bot贸n.

Apuntando a una Aplicaci贸n (Ejemplo: Pages)

  1. 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茅.
  1. Sobrescribiendo el Archivo NIB:
  • Reemplaza un archivo NIB existente (por ejemplo, About Panel NIB) con el archivo DirtyNIB creado.
  1. Ejecuci贸n:
  • Desencadena la ejecuci贸n interactuando con la aplicaci贸n (por ejemplo, seleccionando el elemento del men煤 About).

Prueba de Concepto: Acceso a Datos del Usuario

  • Modifica el AppleScript para acceder y extraer datos del usuario, como fotos, sin el consentimiento del usuario.

Ejemplo de C贸digo: Archivo .xib Malicioso

Otro Ejemplo

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.

Abordando las Restricciones de Lanzamiento

  • 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.

Otras Protecciones de macOS

Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones est谩n restringidas. Sin embargo, los m茅todos anteriores involucraban:

  1. Copiar la aplicaci贸n a una ubicaci贸n diferente (por ejemplo, /tmp/).
  2. Renombrar directorios dentro del paquete de la aplicaci贸n para eludir las protecciones iniciales.
  3. 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).
  4. 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 esta explotaci贸n al prevenir modificaciones de archivos dentro de los paquetes de aplicaciones despu茅s de la cach茅 de Gatekeeper, lo que hace que la explotaci贸n sea ineficaz.

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks