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
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
- 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.
- 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 selectorexecuteAndReturnError:
.
- Pruebas:
- Un simple Apple Script para fines de prueba:
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)
- 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
).
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
- Accede y revisa un ejemplo de un archivo .xib malicioso que demuestra la ejecuci贸n de c贸digo arbitrario.
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:
- 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 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
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.