# Extensiones del Sistema macOS
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)! * Obt茅n el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * Descubre [**The PEASS Family**](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铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
## Extensiones del Sistema / Marco de Seguridad de Punto Final A diferencia de las Extensiones del Kernel, las **Extensiones del Sistema se ejecutan en el espacio de usuario** en lugar del espacio del kernel, reduciendo el riesgo de un fallo del sistema debido al mal funcionamiento de la extensi贸n.
https://knight.sc/images/system-extension-internals-1.png
Existen tres tipos de extensiones del sistema: Extensiones **DriverKit**, Extensiones de **Red** y Extensiones de **Seguridad de Punto Final**. ### **Extensiones DriverKit** DriverKit es un reemplazo para las extensiones del kernel que **proporcionan soporte de hardware**. Permite que los controladores de dispositivos (como USB, serie, NIC y controladores HID) se ejecuten en el espacio de usuario en lugar del espacio del kernel. El marco de DriverKit incluye **versiones en espacio de usuario de ciertas clases de I/O Kit**, y el kernel reenv铆a eventos normales de I/O Kit al espacio de usuario, ofreciendo un entorno m谩s seguro para que estos controladores se ejecuten. ### **Extensiones de Red** Las Extensiones de Red proporcionan la capacidad de personalizar comportamientos de red. Hay varios tipos de Extensiones de Red: * **Proxy de Aplicaci贸n**: Se utiliza para crear un cliente VPN que implementa un protocolo VPN personalizado orientado al flujo. Esto significa que maneja el tr谩fico de red en funci贸n de las conexiones (o flujos) en lugar de paquetes individuales. * **T煤nel de Paquetes**: Se utiliza para crear un cliente VPN que implementa un protocolo VPN personalizado orientado a paquetes. Esto significa que maneja el tr谩fico de red en funci贸n de paquetes individuales. * **Filtrar Datos**: Se utiliza para filtrar "flujos" de red. Puede monitorear o modificar datos de red a nivel de flujo. * **Filtrar Paquete**: Se utiliza para filtrar paquetes individuales de red. Puede monitorear o modificar datos de red a nivel de paquete. * **Proxy DNS**: Se utiliza para crear un proveedor DNS personalizado. Puede usarse para monitorear o modificar solicitudes y respuestas DNS. ## Marco de Seguridad de Punto Final El Marco de Seguridad de Punto Final es un marco proporcionado por Apple en macOS que ofrece un conjunto de APIs para la seguridad del sistema. Est谩 destinado a ser utilizado por **proveedores de seguridad y desarrolladores para construir productos que puedan monitorear y controlar la actividad del sistema** para identificar y protegerse contra actividades maliciosas. Este marco proporciona una **colecci贸n de APIs para monitorear y controlar la actividad del sistema**, como ejecuciones de procesos, eventos del sistema de archivos, eventos de red y del kernel. El n煤cleo de este marco se implementa en el kernel, como una Extensi贸n del Kernel (KEXT) ubicada en **`/System/Library/Extensions/EndpointSecurity.kext`**. Esta KEXT se compone de varios componentes clave: * **EndpointSecurityDriver**: Act煤a como el "punto de entrada" para la extensi贸n del kernel. Es el principal punto de interacci贸n entre el sistema operativo y el marco de Seguridad de Punto Final. * **EndpointSecurityEventManager**: Este componente es responsable de implementar ganchos del kernel. Los ganchos del kernel permiten al marco monitorear eventos del sistema al interceptar llamadas del sistema. * **EndpointSecurityClientManager**: Gestiona la comunicaci贸n con los clientes en el espacio de usuario, manteniendo un registro de qu茅 clientes est谩n conectados y necesitan recibir notificaciones de eventos. * **EndpointSecurityMessageManager**: Env铆a mensajes y notificaciones de eventos a los clientes en el espacio de usuario. Los eventos que el marco de Seguridad de Punto Final puede monitorear se categorizan en: * Eventos de archivos * Eventos de procesos * Eventos de sockets * Eventos del kernel (como cargar/descargar una extensi贸n del kernel o abrir un dispositivo I/O Kit) ### Arquitectura del Marco de Seguridad de Punto Final
https://www.youtube.com/watch?v=jaVkpM1UqOs
La **comunicaci贸n en el espacio de usuario** con el marco de Seguridad de Punto Final se realiza a trav茅s de la clase IOUserClient. Se utilizan dos subclases diferentes, dependiendo del tipo de llamante: * **EndpointSecurityDriverClient**: Requiere el permiso `com.apple.private.endpoint-security.manager`, que solo es pose铆do por el proceso del sistema `endpointsecurityd`. * **EndpointSecurityExternalClient**: Requiere el permiso `com.apple.developer.endpoint-security.client`. Esto t铆picamente ser铆a utilizado por software de seguridad de terceros que necesita interactuar con el marco de Seguridad de Punto Final. Las Extensiones de Seguridad de Punto Final:**`libEndpointSecurity.dylib`** es la biblioteca C que las extensiones del sistema utilizan para comunicarse con el kernel. Esta biblioteca utiliza el I/O Kit (`IOKit`) para comunicarse con la KEXT de Seguridad de Punto Final. **`endpointsecurityd`** es un demonio del sistema clave involucrado en la gesti贸n y lanzamiento de extensiones del sistema de seguridad de punto final, especialmente durante el proceso de arranque temprano. **Solo las extensiones del sistema** marcadas con **`NSEndpointSecurityEarlyBoot`** en su archivo `Info.plist` reciben este tratamiento de arranque temprano. Otro demonio del sistema, **`sysextd`**, **valida las extensiones del sistema** y las mueve a las ubicaciones adecuadas del sistema. Luego solicita al demonio relevante cargar la extensi贸n. El **`SystemExtensions.framework`** es responsable de activar y desactivar las extensiones del sistema. ## Saltando ESF ESF es utilizado por herramientas de seguridad que intentar谩n detectar a un red teamer, por lo que cualquier informaci贸n sobre c贸mo evitar esto suena interesante. ### CVE-2021-30965 La cuesti贸n es que la aplicaci贸n de seguridad necesita tener **permisos de Acceso Completo al Disco**. Por lo tanto, si un atacante pudiera eliminar eso, podr铆a evitar que el software se ejecute: ```bash tccutil reset All ``` Para **m谩s informaci贸n** sobre este bypass y otros relacionados, consulta la charla [#OBTS v5.0: "El Tal贸n de Aquiles de la Seguridad del Punto Final" - Fitzl Csaba](https://www.youtube.com/watch?v=lQO7tvNCoTI) Al final, esto se solucion贸 otorgando el nuevo permiso **`kTCCServiceEndpointSecurityClient`** a la aplicaci贸n de seguridad gestionada por **`tccd`** para que `tccutil` no borre sus permisos, evitando que se ejecute. ## Referencias * [**OBTS v3.0: "Seguridad e Inseguridad del Punto Final" - Scott Knight**](https://www.youtube.com/watch?v=jaVkpM1UqOs) * [**https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html**](https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html)
Aprende a hackear AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas 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铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).