<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Los archivos NIB se utilizan en el ecosistema de desarrollo de Apple para **definir elementos de la interfaz de usuario (UI)** y sus interacciones dentro de una aplicación. Creados con la herramienta Interface Builder, contienen **objetos serializados** como ventanas, botones y campos de texto, que se cargan en tiempo de ejecución para presentar la UI diseñada. Aunque todavía se utilizan, Apple ha pasado a recomendar Storyboards para una representación más visual del flujo de UI de una aplicación.
Además, los **archivos NIB** también pueden usarse para **ejecutar comandos arbitrarios** y si se modifica un archivo NIB en una App, **Gatekeeper aún permitirá ejecutar la app**, por lo que pueden usarse para **ejecutar comandos arbitrarios dentro de aplicaciones**.
Primero necesitamos crear un nuevo archivo NIB, usaremos XCode para la mayor parte de la construcción. Comenzamos agregando un Objeto a la interfaz y establecemos la clase en NSAppleScript:
Para el objeto necesitamos establecer la propiedad inicial `source`, lo que podemos hacer usando Atributos de Tiempo de Ejecución Definidos por el Usuario:
Esto configura nuestro gadget de ejecución de código, que simplemente va a **ejecutar AppleScript a petición**. Para activar realmente la ejecución del AppleScript, por ahora solo agregaremos un botón (por supuesto, puedes ser creativo con esto ;). El botón se vinculará al objeto `Apple Script` que acabamos de crear, e **invocará el selector `executeAndReturnError:`**:
Con nuestra capacidad para ejecutar código AppleScript arbitrario desde un NIB, a continuación necesitamos un objetivo. Elijamos Pages para nuestra demostración inicial, que por supuesto es una aplicación de Apple y ciertamente no debería ser modificable por nosotros.
Después de lanzar (y matar) la aplicación por primera vez, necesitaremos sobrescribir un archivo NIB existente con nuestro archivo DirtyNIB. Para fines de demostración, vamos a sobrescribir el NIB del Panel de Acerca de para poder controlar la ejecución:
set grabbed to current application's NSData's dataWithContentsOfFile:"/Users/xpn/Pictures/Photos Library.photoslibrary/originals/6/68CD9A98-E591-4D39-B038-E1B3F982C902.gif"
Básicamente **impiden ejecutar aplicaciones fuera de sus ubicaciones esperadas**, así que si copias una aplicación protegida por Restricciones de Lanzamiento a `/tmp` no podrás ejecutarla.\
[**Encuentra más información en este post**](../macos-security-protections/#launch-constraints)**.**
Sin embargo, al analizar el archivo **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`** aún puedes encontrar **aplicaciones que no están protegidas por Restricciones de Lanzamiento** por lo que aún podrías **inyectar** archivos **NIB** en ubicaciones arbitrarias en **esas** (consulta el enlace anterior para aprender cómo encontrar estas aplicaciones).
Desde macOS Somona, hay algunas protecciones que **impiden escribir dentro de las Apps**. Sin embargo, aún es posible eludir esta protección si, antes de ejecutar tu copia del binario, cambias el nombre de la carpeta Contents:
5. Renombra a `/tmp/CarPlay Simulator.app/Contents`
6. Lanza `CarPlay Simulator.app` de nuevo
{% hint style="success" %}
Parece que esto ya no es posible porque macOS **impide modificar archivos** dentro de los paquetes de aplicaciones.\
Por lo tanto, después de ejecutar la app para cachearla con Gatekeeper, no podrás modificar el paquete.\
Y si cambias, por ejemplo, el nombre del directorio Contents a **NotCon** (como se indica en el exploit), y luego ejecutas el binario principal de la app para cachearlo con Gatekeeper, **se activará un error y no se ejecutará**.
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).