El objetivo es evitar que incluso los usuarios Root desinstalen nuestra aplicación en su mac.
Aparentemente, muchas aplicaciones de seguridad tienen este tipo de funcionalidad en la que un usuario (incluso con privilegios de Root) no puede desinstalar o manipular el agente en su máquina.
He probado a manipular/borrar una aplicación antivirus en Catalina pero fallé y me di cuenta de algunas cosas interesantes:
-
Tiene una extensión del núcleo. Pero no puedo eliminar la extensión del kernel (como Root).
#kextunload /Library/Extensions/xxx.kext (kernel) Kext com.xxx.kext did not stop (return code 0x5). (kernel) Kext com.xxx.kext can't unload - module stop returned 0xdc008017. Failed to unload com.xxx.kext - (libkern/kext) kext (kmod) start/stop routine failed.
-
La aplicación se instala en
/Library
en lugar del habitual/Applications
directorio.drwxr-xr-x 7 root wheel 224 Oct 28 14:40 xxxx
La carpeta no tiene ningún atributo extendido. No puedo eliminar esta carpeta ni ninguna de sus subcarpetas y me da error de permiso denegado incluso como Root.
-
La aplicación tiene un montón de launchdaemons pero no puedo eliminarlos (de nuevo probado como Root)
#launchctl remove com.xxx.xxx. Not privileged to remove service.
-
Intenté matar los procesos, de nuevo operación no permitida.
-
La aplicación viene con un desinstalador que de alguna manera puede desinstalar la aplicación, pero necesita una contraseña especial (aparte de la contraseña del sistema) para que funcione
Muchas de las aplicaciones y servicios propios de Apple tienen este tipo de comportamiento, pero vienen con el sistema y están respaldados por la Protección de la Integridad del Sistema.
¿Cómo puede una aplicación de terceros lograr este tipo de comportamiento? Esto no es exclusivo de esta aplicación en particular, pero los antivirus tienen características similares. Cualquier idea sobre cómo lograr esto..
Nota: La nuestra es una aplicación empresarial que se instalará en máquinas propiedad de las empresas y gestionadas por TI, pero los usuarios finales tendrán acceso Root en su máquina.