mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-10 12:18:52 +00:00
153 lines
10 KiB
Markdown
153 lines
10 KiB
Markdown
# Protecciones de seguridad de macOS
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## Gatekeeper
|
|
|
|
Gatekeeper se utiliza generalmente para referirse a la combinación de **Quarantine + Gatekeeper + XProtect**, 3 módulos de seguridad de macOS que intentarán **evitar que los usuarios ejecuten software potencialmente malicioso descargado**.
|
|
|
|
Más información en:
|
|
|
|
{% content-ref url="macos-gatekeeper.md" %}
|
|
[macos-gatekeeper.md](macos-gatekeeper.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Limitantes de procesos
|
|
|
|
### SIP - Protección de la integridad del sistema
|
|
|
|
{% content-ref url="macos-sip.md" %}
|
|
[macos-sip.md](macos-sip.md)
|
|
{% endcontent-ref %}
|
|
|
|
### Sandbox
|
|
|
|
El Sandbox de macOS **limita las aplicaciones** que se ejecutan dentro del sandbox a las **acciones permitidas especificadas en el perfil del Sandbox** con el que se está ejecutando la aplicación. Esto ayuda a garantizar que **la aplicación solo acceda a los recursos esperados**.
|
|
|
|
{% content-ref url="macos-sandbox/" %}
|
|
[macos-sandbox](macos-sandbox/)
|
|
{% endcontent-ref %}
|
|
|
|
### TCC - Transparencia, Consentimiento y Control
|
|
|
|
**TCC (Transparencia, Consentimiento y Control)** es un mecanismo en macOS para **limitar y controlar el acceso de las aplicaciones a ciertas funciones**, generalmente desde una perspectiva de privacidad. Esto puede incluir cosas como servicios de ubicación, contactos, fotos, micrófono, cámara, accesibilidad, acceso completo al disco y muchas más.
|
|
|
|
{% content-ref url="macos-tcc/" %}
|
|
[macos-tcc](macos-tcc/)
|
|
{% endcontent-ref %}
|
|
|
|
### Restricciones de inicio
|
|
|
|
Las restricciones de inicio en macOS son una característica de seguridad para **regular el inicio de procesos** mediante la definición de **quién puede iniciar** un proceso, **cómo** y **desde dónde**. Introducidas en macOS Ventura, categorizan los binarios del sistema en categorías de restricciones dentro de una **caché de confianza**. Cada binario ejecutable tiene reglas establecidas para su inicio, incluyendo restricciones **propias**, **padres** y **responsables**. Extendidas a aplicaciones de terceros como Restricciones de **Entorno** en macOS Sonoma, estas características ayudan a mitigar posibles explotaciones del sistema al gobernar las condiciones de inicio de procesos.
|
|
|
|
{% content-ref url="macos-launch-environment-constraints.md" %}
|
|
[macos-launch-environment-constraints.md](macos-launch-environment-constraints.md)
|
|
{% endcontent-ref %}
|
|
|
|
## MRT - Herramienta de eliminación de malware
|
|
|
|
La Herramienta de eliminación de malware (MRT) es otra parte de la infraestructura de seguridad de macOS. Como su nombre indica, la función principal de MRT es **eliminar malware conocido de sistemas infectados**.
|
|
|
|
Una vez que se detecta malware en un Mac (ya sea por XProtect o por otros medios), se puede utilizar MRT para **eliminar automáticamente el malware**. MRT funciona en segundo plano de forma silenciosa y se ejecuta normalmente cuando se actualiza el sistema o cuando se descarga una nueva definición de malware (parece que las reglas que MRT tiene para detectar malware están dentro del binario).
|
|
|
|
Si bien tanto XProtect como MRT son parte de las medidas de seguridad de macOS, realizan funciones diferentes:
|
|
|
|
* **XProtect** es una herramienta preventiva. **Verifica los archivos al descargarlos** (a través de ciertas aplicaciones) y si detecta algún tipo de malware conocido, **impide que el archivo se abra**, evitando así que el malware infecte el sistema en primer lugar.
|
|
* **MRT**, por otro lado, es una herramienta **reactiva**. Opera después de que se haya detectado malware en un sistema, con el objetivo de eliminar el software ofensivo para limpiar el sistema.
|
|
|
|
La aplicación MRT se encuentra en **`/Library/Apple/System/Library/CoreServices/MRT.app`**
|
|
|
|
## Gestión de tareas en segundo plano
|
|
|
|
**macOS** ahora **alerta** cada vez que una herramienta utiliza una **técnica conocida para persistir la ejecución de código** (como elementos de inicio de sesión, demonios...), para que el usuario sepa mejor **qué software está persistiendo**.
|
|
|
|
<figure><img src="../../../.gitbook/assets/image (711).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Esto se ejecuta con un **daemon** ubicado en `/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd` y el **agente** en `/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app`
|
|
|
|
La forma en que **`backgroundtaskmanagementd`** sabe que algo está instalado en una carpeta persistente es **obteniendo los FSEvents** y creando algunos **manejadores** para ellos.
|
|
|
|
Además, hay un archivo plist que contiene **aplicaciones conocidas** que persisten con frecuencia mantenidas por Apple ubicado en: `/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist`
|
|
```json
|
|
[...]
|
|
"us.zoom.ZoomDaemon" => {
|
|
"AssociatedBundleIdentifiers" => [
|
|
0 => "us.zoom.xos"
|
|
]
|
|
"Attribution" => "Zoom"
|
|
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
|
|
"ProgramArguments" => [
|
|
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
|
|
]
|
|
"TeamIdentifier" => "BJ4HAAB9B3"
|
|
}
|
|
[...]
|
|
```
|
|
### Enumeración
|
|
|
|
Es posible **enumerar todos** los elementos de fondo configurados que se ejecutan con la herramienta de línea de comandos de Apple:
|
|
```bash
|
|
# The tool will always ask for the users password
|
|
sfltool dumpbtm
|
|
```
|
|
Además, también es posible listar esta información con [**DumpBTM**](https://github.com/objective-see/DumpBTM).
|
|
```bash
|
|
# You need to grant the Terminal Full Disk Access for this to work
|
|
chmod +x dumpBTM
|
|
xattr -rc dumpBTM # Remove quarantine attr
|
|
./dumpBTM
|
|
```
|
|
Esta información se almacena en **`/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm`** y el Terminal necesita FDA.
|
|
|
|
### Manipulando BTM
|
|
|
|
Cuando se encuentra una nueva persistencia, se genera un evento de tipo **`ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD`**. Por lo tanto, cualquier forma de **prevenir** que este **evento** se envíe o que el **agente alerte** al usuario ayudará a un atacante a _**burlar**_ BTM.
|
|
|
|
* **Restablecer la base de datos**: Ejecutar el siguiente comando restablecerá la base de datos (debería reconstruirla desde cero), sin embargo, por alguna razón, después de ejecutar esto, **no se alertará sobre ninguna nueva persistencia hasta que se reinicie el sistema**.
|
|
* Se requiere **root**.
|
|
```bash
|
|
# Reset the database
|
|
sfltool resettbtm
|
|
```
|
|
* **Detener el Agente**: Es posible enviar una señal de detención al agente para que **no alerte al usuario** cuando se encuentren nuevas detecciones.
|
|
```bash
|
|
# Get PID
|
|
pgrep BackgroundTaskManagementAgent
|
|
1011
|
|
|
|
# Stop it
|
|
kill -SIGSTOP 1011
|
|
|
|
# Check it's stopped (a T means it's stopped)
|
|
ps -o state 1011
|
|
T
|
|
```
|
|
* **Error**: Si el **proceso que creó la persistencia se cierra rápidamente después**, el demonio intentará **obtener información** al respecto, **fallará** y **no podrá enviar el evento** que indica que algo nuevo está persistiendo.
|
|
|
|
Referencias y **más información sobre BTM**:
|
|
|
|
* [https://youtu.be/9hjUmT031tc?t=26481](https://youtu.be/9hjUmT031tc?t=26481)
|
|
* [https://www.patreon.com/posts/new-developer-77420730?l=fr](https://www.patreon.com/posts/new-developer-77420730?l=fr)
|
|
* [https://support.apple.com/en-gb/guide/deployment/depdca572563/web](https://support.apple.com/en-gb/guide/deployment/depdca572563/web)
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|