mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-10 20:28:57 +00:00
6 KiB
6 KiB
Extensiones del Kernel 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 PR a hacktricks repo y hacktricks-cloud repo.
Información Básica
Las extensiones del kernel (Kexts) son paquetes con una 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 del kernel. Estos son los requisitos que una extensión del kernel debe cumplir para ser cargada:
- Al entrar en modo de recuperación, las extensiones del kernel deben ser permitidas para su carga:
- La extensión del kernel debe estar firmada con un certificado de firma de código del 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 del kernel también debe ser notarizada, Apple podrá revisarla en busca de malware.
- Luego, el usuario root es quien puede cargar la extensión del 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 no root:
/Library/StagedExtensions
(requiere el permisocom.apple.rootless.storage.KernelExtensionManagement
). - Finalmente, al intentar cargarla, el usuario recibirá una solicitud de confirmación y, si es aceptada, el ordenador debe ser reiniciado para cargarla.
Proceso de Carga
En Catalina era así: Es interesante notar que el proceso de verificación ocurre en userland. Sin embargo, solo las aplicaciones con el permiso com.apple.private.security.kext-management
pueden solicitar al kernel que cargue una extensión: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
- La CLI
kextutil
inicia el proceso de verificación para cargar una extensión- Se comunicará con
kextd
enviando un servicio Mach.
- Se comunicará con
kextd
verificará varias cosas, como la firma- Se comunicará con
syspolicyd
para verificar si la extensión puede ser cargada.
- Se comunicará con
syspolicyd
solicitará al usuario si la extensión no ha sido cargada previamente.syspolicyd
informará el resultado akextd
.
kextd
finalmente podrá indicar al kernel que cargue la extensión.
Si kextd
no está disponible, kextutil
puede realizar las mismas verificaciones.
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.