.. | ||
macos-fs-tricks | ||
macos-sandbox | ||
macos-tcc | ||
macos-dangerous-entitlements.md | ||
macos-fs-tricks.md | ||
macos-gatekeeper.md | ||
macos-launch-environment-constraints.md | ||
macos-sip.md | ||
README.md |
Protecciones de seguridad de macOS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de Telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
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 {% endcontent-ref %}
Limitantes de procesos
SIP - Protección de la integridad del sistema
{% content-ref url="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 {% 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 {% endcontent-ref %}
Restricciones de lanzamiento/entorno y caché de confianza
Las restricciones de lanzamiento en macOS son una característica de seguridad para regular la iniciación de procesos mediante la definición de quién puede lanzar un proceso, cómo y desde dónde. Introducidas en macOS Ventura, categorizan los binarios del sistema en categorías de restricción dentro de una caché de confianza. Cada binario ejecutable tiene reglas establecidas para su lanzamiento, incluyendo restricciones propias, parentales 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 lanzamiento de procesos.
{% content-ref url="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, evita 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.
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 y que son mantenidas por Apple, ubicado en: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist
[...]
"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:
# The tool will always ask for the users password
sfltool dumpbtm
Además, también es posible listar esta información con DumpBTM.
# 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.
# 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.
# 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://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el merchandising oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de Telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.