`, el archivo `~/.zshenv` se activaría, elevándose efectivamente a root.
#### [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/)
En [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) se descubrió que el mismo proceso **`system_installd`** aún podía ser abusado porque colocaba el **script post-instalación dentro de una carpeta con nombre aleatorio protegida por SIP dentro de `/tmp`**. La cuestión es que **`/tmp` en sí no está protegido por SIP**, por lo que era posible **montar** una **imagen virtual en él**, luego el **instalador** colocaría allí el **script post-instalación**, **desmontaría** la imagen virtual, **recrearía** todas las **carpetas** y **añadiría** el **script de post instalación** con el **carga útil** a ejecutar.
#### [Utilidad fsck\_cs](https://www.theregister.com/2016/03/30/apple\_os\_x\_rootless/)
Se identificó una vulnerabilidad donde **`fsck_cs`** fue engañado para corromper un archivo crucial, debido a su capacidad para seguir **enlaces simbólicos**. Específicamente, los atacantes crearon un enlace desde _`/dev/diskX`_ al archivo `/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist`. Ejecutar **`fsck_cs`** en _`/dev/diskX`_ llevó a la corrupción de `Info.plist`. La integridad de este archivo es vital para la Protección de Integridad del Sistema (SIP) del sistema operativo, que controla la carga de extensiones de kernel. Una vez corrompido, la capacidad de SIP para gestionar exclusiones de kernel se ve comprometida.
Los comandos para explotar esta vulnerabilidad son:
```bash
ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot
```
La explotación de esta vulnerabilidad tiene graves implicaciones. El archivo `Info.plist`, normalmente responsable de gestionar los permisos para las extensiones del kernel, se vuelve ineficaz. Esto incluye la imposibilidad de poner en lista negra ciertas extensiones, como `AppleHWAccess.kext`. En consecuencia, con el mecanismo de control de SIP desactivado, esta extensión puede cargarse, otorgando acceso no autorizado de lectura y escritura a la RAM del sistema.
#### [Montar sobre carpetas protegidas por SIP](https://www.slideshare.net/i0n1c/syscan360-stefan-esser-os-x-el-capitan-sinking-the-ship)
Era posible montar un nuevo sistema de archivos sobre **carpetas protegidas por SIP para evadir la protección**.
```bash
mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg
```
#### [Bypass de actualización (2016)](https://objective-see.org/blog/blog\_0x14.html)
El sistema está configurado para arrancar desde una imagen de disco del instalador incrustada dentro de `Install macOS Sierra.app` para actualizar el sistema operativo, utilizando la utilidad `bless`. El comando utilizado es el siguiente:
```bash
/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer
```
La seguridad de este proceso puede ser comprometida si un atacante altera la imagen de actualización (`InstallESD.dmg`) antes de arrancar. La estrategia implica sustituir un cargador dinámico (dyld) con una versión maliciosa (`libBaseIA.dylib`). Esta sustitución resulta en la ejecución del código del atacante cuando se inicia el instalador.
El código del atacante obtiene control durante el proceso de actualización, explotando la confianza del sistema en el instalador. El ataque continúa alterando la imagen `InstallESD.dmg` a través de method swizzling, apuntando particularmente al método `extractBootBits`. Esto permite la inyección de código malicioso antes de que la imagen de disco sea utilizada.
Además, dentro de `InstallESD.dmg`, hay un `BaseSystem.dmg`, que sirve como sistema de archivos raíz del código de actualización. Inyectar una biblioteca dinámica en esto permite que el código malicioso opere dentro de un proceso capaz de alterar archivos a nivel de sistema, aumentando significativamente el potencial de compromiso del sistema.
#### [systemmigrationd (2023)](https://www.youtube.com/watch?v=zxZesAN-TEk)
En esta charla de [**DEF CON 31**](https://www.youtube.com/watch?v=zxZesAN-TEk), se muestra cómo **`systemmigrationd`** (que puede evadir SIP) ejecuta un script de **bash** y un script de **perl**, que pueden ser abusados a través de las variables de entorno **`BASH_ENV`** y **`PERL5OPT`**.
### **com.apple.rootless.install**
{% hint style="danger" %}
La concesión **`com.apple.rootless.install`** permite evadir SIP
{% endhint %}
La concesión `com.apple.rootless.install` es conocida por evadir la Protección de Integridad del Sistema (SIP) en macOS. Esto fue mencionado notablemente en relación con [**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/).
En este caso específico, el servicio XPC del sistema ubicado en `/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc` posee esta concesión. Esto permite que el proceso relacionado evite las restricciones de SIP. Además, este servicio presenta notablemente un método que permite el movimiento de archivos sin aplicar medidas de seguridad.
## Instantáneas de Sistema Selladas
Las Instantáneas de Sistema Selladas son una característica introducida por Apple en **macOS Big Sur (macOS 11)** como parte de su mecanismo de **Protección de Integridad del Sistema (SIP)** para proporcionar una capa adicional de seguridad y estabilidad del sistema. Son versiones de solo lectura del volumen del sistema.
Aquí tienes un vistazo más detallado:
1. **Sistema Inmutable**: Las Instantáneas de Sistema Selladas hacen que el volumen del sistema macOS sea "inmutable", lo que significa que no se puede modificar. Esto evita cambios no autorizados o accidentales en el sistema que podrían comprometer la seguridad o la estabilidad del sistema.
2. **Actualizaciones de Software del Sistema**: Cuando instalas actualizaciones o mejoras de macOS, macOS crea una nueva instantánea del sistema. El volumen de arranque de macOS luego utiliza **APFS (Sistema de Archivos Apple)** para cambiar a esta nueva instantánea. Todo el proceso de aplicar actualizaciones se vuelve más seguro y confiable, ya que el sistema siempre puede revertir a la instantánea anterior si algo sale mal durante la actualización.
3. **Separación de Datos**: En conjunto con el concepto de separación de volúmenes de Datos y Sistema introducido en macOS Catalina, la función de Instantáneas de Sistema Selladas se asegura de que todos tus datos y configuraciones se almacenen en un volumen "**Datos**" separado. Esta separación hace que tus datos sean independientes del sistema, lo que simplifica el proceso de actualizaciones del sistema y mejora la seguridad del sistema.
Recuerda que estas instantáneas son gestionadas automáticamente por macOS y no ocupan espacio adicional en tu disco, gracias a las capacidades de uso compartido de espacio de APFS. También es importante tener en cuenta que estas instantáneas son diferentes de las **instantáneas de Time Machine**, que son copias de seguridad accesibles por el usuario de todo el sistema.
### Verificar Instantáneas
El comando **`diskutil apfs list`** lista los **detalles de los volúmenes APFS** y su distribución:
+-- Contenedor disco3 966B902E-EDBA-4775-B743-CF97A0556A13
| ====================================================
| Referencia de Contenedor APFS: disco3
| Tamaño (Capacidad Máxima): 494384795648 B (494.4 GB)
| Capacidad Utilizada por Volúmenes: 219214536704 B (219.2 GB) (44.3% usado)
| Capacidad No Asignada: 275170258944 B (275.2 GB) (55.7% libre)
| |
| +-< Almacenamiento Físico disco0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
| | -----------------------------------------------------------
| | Disco de Almacenamiento Físico APFS: disco0s2
| | Tamaño: 494384795648 B (494.4 GB)
| |
| +-> Volumen disco3s1 7A27E734-880F-4D91-A703-FB55861D49B7
| | ---------------------------------------------------
| | Disco de Volumen APFS (Rol): disco3s1 (Sistema)
| | Nombre: Macintosh HD (No sensible a mayúsculas)
| | Punto de Montaje: /System/Volumes/Update/mnt1
| | Capacidad Consumida: 12819210240 B (12.8 GB)
| | Sellado: Roto
| | FileVault: Sí (Desbloqueado)
| | Encriptado: No
| | |
| | Instantánea: FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
| | Disco de Instantánea: disco3s1s1
| | Punto de Montaje de Instantánea: /
| | Instantánea Sellada: Sí
[...]
+-> Volumen disco3s5 281959B7-07A1-4940-BDDF-6419360F3327
| ---------------------------------------------------
| Disco de Volumen APFS (Rol): disco3s5 (Datos)
| Nombre: Macintosh HD - Datos (No sensible a mayúsculas)
| Punto de Montaje: /System/Volumes/Data
| Capacidad Consumida: 412071784448 B (412.1 GB)
| Sellado: No
| FileVault: Sí (Desbloqueado)
En la salida anterior es posible ver que las **ubicaciones accesibles por el usuario** están montadas bajo `/System/Volumes/Data`.
Además, la **instantánea del volumen del sistema macOS** está montada en `/` y está **sellada** (firmada criptográficamente por el sistema operativo). Por lo tanto, si se evade SIP y se modifica, el **sistema no arrancará más**.
También es posible **verificar que el sellado está habilitado** ejecutando:
```bash
csrutil authenticated-root status
Authenticated Root status: enabled
```
Además, el disco de instantáneas también se monta como **solo lectura**:
```
mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
```
Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Ú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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.