Protecciones de Seguridad de macOS
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.
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 prevenir que los usuarios ejecuten software potencialmente malicioso descargado.
M谩s informaci贸n en:
macOS Gatekeeper / Quarantine / XProtect
L铆mites de Procesos
MACF
SIP - Protecci贸n de Integridad del Sistema
Sandbox
El Sandbox de macOS limita las aplicaciones que se ejecutan dentro del sandbox a las acciones permitidas especificadas en el perfil de Sandbox con el que se est谩 ejecutando la aplicaci贸n. Esto ayuda a garantizar que la aplicaci贸n solo acceda a los recursos esperados.
TCC - Transparencia, Consentimiento y Control
TCC (Transparencia, Consentimiento y Control) es un marco de seguridad. Est谩 dise帽ado para gestionar los permisos de las aplicaciones, regulando espec铆ficamente su acceso a funciones sensibles. Esto incluye elementos como servicios de ubicaci贸n, contactos, fotos, micr贸fono, c谩mara, accesibilidad y acceso completo al disco. TCC asegura que las aplicaciones solo puedan acceder a estas funciones despu茅s de obtener el consentimiento expl铆cito del usuario, fortaleciendo as铆 la privacidad y el control sobre los datos personales.
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 definiendo 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 de auto, padre y responsable. Ampliadas 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.
macOS Launch/Environment Constraints & Trust Cache
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 usar MRT para eliminar autom谩ticamente el malware. MRT opera silenciosamente en segundo plano y generalmente se ejecuta cada vez que 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).
Mientras que tanto XProtect como MRT son parte de las medidas de seguridad de macOS, realizan funciones diferentes:
- XProtect es una herramienta preventiva. Verifica archivos a medida que se descargan (a trav茅s de ciertas aplicaciones), y si detecta alg煤n tipo de malware conocido, previene que el archivo se abra, evitando as铆 que el malware infecte su sistema en primer lugar.
- MRT, por otro lado, es una herramienta reactiva. Opera despu茅s de que se ha 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 bien conocida para persistir la ejecuci贸n de c贸digo (como Elementos de Inicio de Sesi贸n, Daemons...), 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 esos.
Adem谩s, hay un archivo plist que contiene aplicaciones bien conocidas que frecuentemente persisten mantenido 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 ejecutando la herramienta cli 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 est谩 almacenando 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 sea enviado o que el agente alerte al usuario ayudar谩 a un atacante a eludir BTM.
- Restableciendo la base de datos: Ejecutar el siguiente comando restablecer谩 la base de datos (deber铆a reconstruirse desde cero), sin embargo, por alguna raz贸n, despu茅s de ejecutar esto, no se alertar谩 sobre ninguna nueva persistencia hasta que el sistema se reinicie.
- 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 existe r谩pidamente despu茅s de 茅l, el daemon intentar谩 obtener informaci贸n sobre 茅l, fallar谩 y no podr谩 enviar el evento indicando que una nueva cosa 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
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.