mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
5.9 KiB
5.9 KiB
macOS Kernel Extensions
☁️ 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 PR a hacktricks repo y hacktricks-cloud repo.
Información básica
Las extensiones de kernel (Kexts) son paquetes con extensión .kext
que se cargan directamente en el espacio del kernel de macOS, proporcionando funcionalidades adicionales al sistema operativo principal.
Requisitos
Obviamente, esto es tan poderoso que es complicado cargar una extensión de kernel. Estos son los requisitos que debe cumplir una extensión de kernel para ser cargada:
- Al entrar en modo de recuperación, las extensiones de kernel deben estar permitidas para ser cargadas:
- La extensión de kernel debe estar firmada con un certificado de firma de código de kernel, que solo puede ser otorgado por Apple. Quien revisará en detalle la empresa y las razones por las que se necesita.
- La extensión de kernel también debe estar notarizada, Apple podrá verificarla en busca de malware.
- Luego, el usuario root es el que puede cargar la extensión de kernel y los archivos dentro del paquete deben pertenecer a root.
- Durante el proceso de carga, el paquete debe ser preparado en una ubicación protegida sin raíz:
/Library/StagedExtensions
(requiere la concesióncom.apple.rootless.storage.KernelExtensionManagement
) - Finalmente, al intentar cargarlo, el usuario recibirá una solicitud de confirmación y, si se acepta, la computadora debe reiniciarse para cargarlo.
Proceso de carga
En Catalina era así: Es interesante destacar que el proceso de verificación ocurre en userland. Sin embargo, solo las aplicaciones con la concesión com.apple.private.security.kext-management
pueden solicitar al kernel que cargue una extensión: kextcache, kextload, kextutil, kextd, syspolicyd
kextutil
cli inicia el proceso de verificación para cargar una extensión
- Hablará con
kextd
enviando usando un servicio Mach
kextd
comprobará varias cosas, como la firma
- Hablará con
syspolicyd
para comprobar si se puede cargar la extensión
syspolicyd
preguntará al usuario si la extensión no se ha cargado previamente
syspolicyd
indicará el resultado akextd
kextd
finalmente podrá indicar al kernel que cargue la extensión
Si kextd no está disponible, kextutil puede realizar las mismas comprobaciones.
Referencias
- https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/
- https://www.youtube.com/watch?v=hGKOskSiaQo
☁️ 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 PR a hacktricks repo y hacktricks-cloud repo.