Cómo desinstalar el antivirus en Mac sin romper tu red
Un producto antivirus no es una sola app. Es un bundle de app más un conjunto de registros que macOS guarda en su propio lado de la valla: una extensión del sistema, una configuración de filtro de red guardada, uno o más trabajos de launchd, normalmente un helper con privilegios, y en un Mac gestionado un perfil de configuración. Arrastrar el bundle a la Papelera quita la fachada y deja intacto cada registro. Por eso esta categoría tiene fama de no poderse quitar, y por eso el primer movimiento es el propio desinstalador del proveedor y no el Finder.
Qué instala un producto de seguridad más allá del bundle de la app
Puedes inventariar toda la superficie de forma solo lectura, en cualquier Mac, en alrededor de un minuto:
systemextensionsctl list
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
ls -la /Library/PrivilegedHelperTools
profiles list
pkgutil --pkgs | grep -i vendorname
Una extensión del sistema lleva el código que inspecciona archivos y tráfico,
reemplazando las kernel extensions que este software solía traer, por eso los consejos
viejos sobre borrar un .kext ya no describen nada. La
guía de extensiones del sistema
de Apple dice dónde vive: "Las system extensions residen dentro de la carpeta
Contents/Library/SystemExtensions de tu app." Activar una requiere tu aprobación, por
eso instalar software de seguridad siempre implica un viaje a Ajustes. La
nota técnica de despliegue
de Apple añade la propiedad que importa al momento de quitarlo: un proveedor empaquetado
así "corre en un contexto global, completamente independiente del usuario que tiene la
sesión iniciada."
Un filtro de contenido de red o proxy transparente es un objeto separado, y es el que le quita internet a la gente. La configuración que lo activa pertenece al sistema y no a la app. NEFilterManager lo dice explícitamente: "La configuración del filtro se guarda en las preferencias de Network Extension, que gestiona el framework Network Extension," y los cambios solo surten efecto cuando la app propietaria los guarda de forma explícita.
Los trabajos de launchd arrancan las piezas en segundo plano. /Library/LaunchDaemons
corre como root al arrancar, antes de que nadie inicie sesión; /Library/LaunchAgents
corre para cada usuario al iniciar sesión; ~/Library/LaunchAgents corre para ti. Un
plist en esas carpetas es un registro con launchd, no un archivo de ajustes normal.
Un helper con privilegios bajo /Library/PrivilegedHelperTools es un ejecutable
propiedad de root emparejado con un daemon que debería descargarse antes de que el
archivo vaya a ningún lado. Un perfil de configuración, en un Mac desplegado por un
empleador o una escuela, lleva las aprobaciones de extensión y los payloads de filtro
para que el software se instale sin preguntarle a nadie, y el mismo mecanismo puede
volver a ponerlo.
Por qué arrastrarlo a la Papelera no puede funcionar
Apple documenta una buena noticia, y es más estrecha de lo que parece a primera vista: "El sistema desinstala automáticamente cualquier system extension cuando el usuario borra la app correspondiente." Eso cubre la extensión dentro del bundle, y no dice nada sobre los demás registros, ninguno de los cuales está dentro del bundle.
La configuración del filtro está detrás de la queja más común aquí. Tiene su propio ciclo de vida en las preferencias de Network Extension, y Apple documenta su eliminación como una llamada explícita que hace la app propietaria. Borrar una app nunca hace esa llamada. Lo que queda es un filtro activado apuntando a un proveedor que ya no existe, y los síntomas son los que la gente reporta tras una eliminación a medias: búsquedas DNS que fallan, un navegador que se cuelga en cada página, conexiones que agotan el tiempo de espera mientras el ícono de Wi-Fi muestra señal completa. La red está bien. El tráfico se le está entregando a un filtro que no puede responder.
Los trabajos de launchd son el segundo fallo. Borrar un ejecutable no da de baja el trabajo que lo arranca, convierte un servicio que funcionaba en uno que falla en cada arranque, y un trabajo configurado para mantenerse vivo se reintenta en bucle, de ahí vienen los reportes de "el ventilador se dispara después de desinstalarlo." Borrar el plist mientras el trabajo está cargado es la imagen espejo: launchd mantiene el trabajo hasta el siguiente reinicio sin nada en disco detrás. El helper y el perfil sobreviven por la misma razón, y un perfil que lleva un payload de software va a reinstalar lo que borraste.
La dificultad es una decisión de diseño
Un software de seguridad que cualquier proceso pudiera desinstalar en silencio no
valdría nada, porque lo primero que haría un malware capaz sería quitar lo que lo vigila.
Así que macOS pone los dos extremos del ciclo de vida donde un proceso en segundo plano
no puede llegar: activar requiere que un humano haga clic en Permitir en Ajustes (la
página de alerta de Apple apunta a Ítems de
inicio y extensiones en macOS 15 y posteriores, Privacidad y seguridad antes de eso), y
desactivar es una solicitud de la app dueña de la extensión. La fricción es ese diseño
funcionando, y no existe ninguna secuencia de comandos rm que sea la desinstalación
real que te están ocultando.
La regla: corre primero el desinstalador del proveedor
Siempre, y antes de tocar cualquier otra cosa. Solo la app contenedora puede enviar una solicitud de desactivación para su propia extensión. Solo la app que guardó la configuración del filtro puede quitarla de las preferencias de Network Extension. Solo la herramienta del proveedor sabe cuál de sus componentes va a reinstalar a los demás si se detienen fuera de orden. Ningún desinstalador de terceros puede obtener esos permisos, así que un escáner de restos, Mole incluido, sirve para lo que queda después de que corrió la herramienta del proveedor, nunca como sustituto de ella.
Si ya arrastraste la app a la Papelera, devuélvela con Archivo > Devolver, ábrela, y usa su propio desinstalador. Las secciones de abajo dicen dónde guarda cada proveedor el suyo.
Dónde guarda cada proveedor su desinstalador
Cada enlace de abajo apunta al propio sitio de soporte del proveedor, que es donde viven los pasos actuales. Las páginas de soporte se mueven, así que sigue la página y no este resumen si los dos no coinciden.
McAfee
El desinstalador ya está en el Mac, en Applications, nombrado según el producto que compraste, así que una instalación de Total Protection y una de LiveSafe no usan el mismo. El artículo de McAfee te pide iniciar sesión como administrador, cerrar toda app de McAfee, y luego abrir Ir > Aplicaciones y hacer doble clic en ese desinstalador. Dos de sus pasos son la razón para leerlo en vez de improvisar: te dice que hagas clic en Permitir cuando macOS pregunte por una system extension, y termina con un reinicio como paso numerado y no como sugerencia. Un ícono muerto en el Dock puede sobrevivir a la eliminación y hay que arrastrarlo fuera a mano.
Norton
También una app desinstaladora aparte que ya está en Applications. La página de desinstalación de Norton recorre Ir > Aplicaciones, luego doble clic en Norton Uninstaller, luego "escribe la contraseña de tu cuenta de administrador, y haz clic en Install Helper", luego la contraseña otra vez, y Finish. El paso del helper es cómo el desinstalador obtiene los privilegios para desmontar sus propios componentes a nivel de sistema.
Avast
Un desinstalador dentro de la app, en una página que empieza descartando la alternativa obvia: "Mover Avast Security a la Papelera o usar Clean My Mac no desinstala por completo la aplicación." La ruta documentada es Avast Security > Uninstall Avast Security en la barra de menús, Continue, luego tu contraseña de arranque del Mac e Install Helper. El mismo desinstalador también está en Applications como Avast Security Uninstaller, para cuando la app no abre.
Bitdefender
Un binario desinstalador dedicado en vez de un arrastre. La página de desinstalación te pide abrir la carpeta Bitdefender, doble clic en Bitdefender Uninstaller, marcar el producto, clic en Uninstall, e introducir un nombre y contraseña de administrador. El mismo paso ofrece quitar Bitdefender VPN, vale la pena aceptarlo si no lo vas a conservar, ya que ese componente registra su propia extensión de red.
Malwarebytes
Un ítem de menú dentro de la app. El
artículo de desinstalación
te dirige por Help > Uninstall Malwarebytes en la barra de menús, una confirmación, y
tu contraseña del Mac. De forma inusual para esta categoría, la misma página también
acepta la eliminación por Finder, lo cual es una declaración del propio proveedor sobre
su huella. Los artículos antiguos de desinstalación en support.malwarebytes.com ahora
redirigen; usa la página help.malwarebytes.com.
Sophos
Dos productos, dos respuestas. Sophos Home, el producto para consumidores, usa una
app aparte, Remove Sophos Home, que se abre desde Spotlight. La
página
es directa sobre la alternativa: "NO arrastres Sophos Home a la Papelera porque esto no
desinstalará el programa." Instala un helper, pide tu contraseña, y necesita un reinicio.
La misma página trae una sección opcional para quitar las extensiones del sistema de
Sophos después, y ese procedimiento coloca systemextensionsctl uninstall entre
desactivar y volver a activar System Integrity Protection. Esa es la declaración más
clara de dónde está el límite: incluso el propio desinstalador de un proveedor no
siempre se lleva sus extensiones. Esos pasos son opcionales, exactamente como los marca
el proveedor, y vale la pena dejar SIP activado.
Sophos Endpoint, el producto gestionado, usa Remove Sophos Endpoint desde Launchpad, pero la documentación lo condiciona: "Si la protección contra manipulación está activada, tienes que desactivarla antes de poder desinstalar Sophos Endpoint." Eso necesita un administrador de Sophos Central o la contraseña por dispositivo que guarda esa consola, así que en un Mac de trabajo no es una operación que dependa del usuario.
Kaspersky
Dentro de la app, a través del panel de soporte. La
página de desinstalación
recorre Help > Support, Uninstall, Uninstall otra vez, luego las credenciales
de administrador, y advierte que las extensiones de Chrome y Firefox sobreviven a la
app. Kaspersky también publica una
herramienta de eliminación separada,
kavremover-mac, para cuando la vía dentro de la app falla. Ambas páginas tienen fecha
de 2024, así que confirma contra tu versión.
Si el Mac está gestionado, la respuesta es tu equipo de TI
Antes de gastar una tarde en esto, comprueba si la decisión es siquiera tuya:
profiles status -type enrollment
profiles list
El primero imprime el estado de inscripción DEP y MDM sin necesitar derechos de administrador, el segundo lista los perfiles de configuración instalados para tu usuario, y la misma información aparece en Ajustes del Sistema > General > Gestión de dispositivos. La guía de gestión de dispositivos de Apple es clara sobre lo que sigue: "Algunos perfiles solo puede quitarlos un administrador del sistema de tu Mac. Si no puedes quitar un perfil, tu Mac podría ser un equipo gestionado."
En un Mac gestionado, el software de seguridad es un payload de esa gestión. Lo quitas localmente y el perfil lo reinstala. Intentas desactivar la protección contra manipulación localmente y no puedes, porque la contraseña vive en una consola que no tienes. Pídele a TI que lo desasigne.
Verificar la eliminación
Aquí es donde se atrapa una eliminación a medias mientras todavía sale barato. Hazlo después de que termine el desinstalador del proveedor y el Mac se haya reiniciado, porque varias de estas comprobaciones solo dicen la verdad después de un arranque.
1. Extensiones del sistema.
systemextensionsctl list
En un Mac sin nada instalado, la salida es una sola línea que dice 0 extension(s). De
lo contrario, cada fila nombra el identificador de equipo, el identificador de bundle de
la extensión, su versión, y un estado entre corchetes. Cualquier cosa que todavía lleve
el identificador del proveedor que quitaste significa que la desactivación no terminó.
La herramienta sí ofrece systemextensionsctl uninstall <teamID> <bundleID>, y algunos
proveedores la documentan justo para este caso, pero recurre a ella solo cuando la
página del proveedor te lo indique.
2. Registros de launchd. Busca las etiquetas del proveedor en las tres ubicaciones, y luego pregúntale a launchd qué está realmente cargado:
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
launchctl list | grep -i vendorname
sudo launchctl list | grep -i vendorname
Las dos llamadas a launchctl list responden preguntas distintas: la primera cubre tu
sesión de inicio, la segunda el dominio del sistema donde viven los daemons de root. Un
plist sobrante sin un trabajo cargado que coincida está obsoleto, un trabajo cargado sin
plist es un Mac que necesita un reinicio, y un trabajo presente en ambos es software que
todavía corre. Mole muestra las mismas tres ubicaciones como una sola lista, que es la
siguiente sección.
3. Filtros de red. Un filtro de contenido registrado aparece en Ajustes del Sistema > Red como una entrada de Filtros, así que ninguna entrada significa que nada está inscrito. Una que sigue listada después de que la app se fue es lo que está rompiendo tu conexión.
4. Ítems de inicio y extensiones. Abre Ajustes del Sistema > General > Ítems de inicio y extensiones y lee tanto la lista de inicio como los ítems en segundo plano debajo de ella. Los componentes del proveedor sobreviven a la app aquí con frecuencia.
5. Procesos en ejecución. En el Monitor de Actividad, busca el nombre del proveedor y cambia a Todos los procesos desde el menú Vista para incluir los daemons propiedad de root. Un resultado vacío después de un reinicio es la confirmación que buscas.
6. Recibos. pkgutil --pkgs | grep -i vendorname nombra lo que escribió el
instalador, lo que te da las rutas que vale la pena revisar bajo
~/Library/Application Support una vez que los componentes activos ya no están.
Si las primeras tres comprobaciones salen limpias, el producto está fuera de la máquina y lo que queda es espacio en disco, no comportamiento.
Qué hace Mole aquí, y qué se niega a hacer
La pestaña Software de Mole tiene el inventario de apps y los ítems de inicio en una sola pantalla, así que los launch agents, launch daemons e ítems de inicio que registró un producto son visibles junto a la app que los registró, cada uno con su ruta real.
Para los restos, Mole empareja por identidad de bundle en vez de por nombre, y las rutas
a nivel de sistema que conoce son las de arriba: /Library/LaunchDaemons/<bundle-id>.plist,
/Library/LaunchAgents/<bundle-id>.plist, /Library/PrivilegedHelperTools/<bundle-id>,
y los recibos bajo /private/var/db/receipts. Toda coincidencia a nivel de sistema es de
confianza-de-revisión, lo que significa que llega desmarcada: tú das tu consentimiento
para cada ruta después de leerla, en vez de tener que quitar tu consentimiento de una
lista premarcada. Los borrados van a la Papelera, así que un error se arregla arrastrando
de vuelta, los elementos omitidos y fallidos se reportan, y todo corre localmente.
Dos negativas importan más que todo eso. Mole escanea /Library/SystemExtensions en
busca de extensiones propiedad de la app que se está quitando, y cuando encuentra una
levanta un aviso que nombra esa extensión y dice que puede quedarse después de que la app
se vaya. No intenta la desactivación, porque no puede: esa solicitud tiene que venir de
la app propietaria. Y para proveedores cuyos productos están bloqueados, gestionados, o
son destructivos de quitar por partes, incluyendo ESET, CrowdStrike, SentinelOne, Jamf,
Palo Alto GlobalProtect y Cisco Secure Client, Mole se niega a desinstalarlos por
completo y apunta al desinstalador oficial del proveedor.
El límite es lo que hace confiable el resto de esta página, así que se dice sin matices:
Mole no responde a malware, no es una copia de seguridad, y no sustituye al
desinstalador del proveedor para software que instala drivers, componentes VPN o
extensiones del sistema. Para antivirus, el trabajo de Mole empieza después de que
termina el desinstalador del proveedor. En una terminal, el
Mole CLI, gratis y de código abierto, cubre la misma
revisión con mo uninstall, y todo comando destructivo acepta --dry-run así que puedes
leer la lista de rutas primero.
Preguntas frecuentes
Mi internet dejó de funcionar después de borrar mi antivirus. ¿Qué hago?
Casi con seguridad una configuración de filtro de red que sobrevivió a la app. Vive en
las preferencias de Network Extension, que el framework gestiona independientemente del
bundle, así que borrar la app deja un filtro activado apuntando a un proveedor que ya no
está. Revisa Ajustes del Sistema > Red por una entrada de Filtros y
systemextensionsctl list por una extensión sobreviviente. El arreglo es reinstalar el
producto del proveedor y correr su propio desinstalador. Reinstalar el software que estás
tratando de quitar se siente mal y sigue siendo el camino más corto.
¿Puedo simplemente borrar los plists en /Library/LaunchDaemons?
No como primer movimiento, y rara vez como último. Un plist ahí es un registro con
launchd, así que quitar el archivo mientras el trabajo está cargado deja el trabajo
corriendo hasta el siguiente reinicio sin nada en disco que lo explique. Una vez que
corrió el desinstalador del proveedor, el Mac se reinició, y sudo launchctl list no
muestra ningún trabajo cargado que coincida, un plist obsoleto es un resto inerte. Nunca
quites uno que pertenezca a software que sigue instalado.
El desinstalador del proveedor pide mi contraseña y luego falla. ¿Ahora qué?
Comprueba tres cosas. Si el Mac está gestionado, en cuyo caso la protección contra manipulación o un perfil está bloqueando la eliminación y la respuesta es TI. Si el producto sigue corriendo, ya que algunos desinstaladores no pueden terminar mientras su propio daemon mantiene archivos abiertos, así que reinicia y reintenta. Y si el desinstalador está actualizado, ya que algunos proveedores publican una herramienta de eliminación independiente aparte de la vía dentro de la app. Si las tres salen limpias, el siguiente paso es el soporte del proveedor.
¿Necesito reiniciar antes de comprobar si ya se fue?
Sí. Tanto el desmontaje de la extensión como la baja de registro en launchd se completan a través de un arranque, así que una comprobación hecha justo después de que termina el desinstalador puede mostrar restos que ya están programados para desaparecer, y de igual forma puede esconder un daemon que va a volver.
Lecturas relacionadas
- Cómo desinstalar apps por completo en Mac para la secuencia general, identificadores de bundle y contenedores compartidos.
- Quitar archivos sobrantes tras desinstalar apps de Mac para los residuos una vez confirmado que los componentes activos ya no están.
- Qué no deberían borrar nunca los limpiadores de Mac para el otro lado del mismo juicio.