Come disinstallare l'antivirus sul Mac senza rompere la rete
Un prodotto antivirus non è una sola app. È un bundle app più un insieme di registrazioni che macOS mantiene sul proprio lato del confine: un'estensione di sistema, una configurazione di filtro di rete salvata, uno o più job launchd, di solito un helper privilegiato, e su un Mac gestito un profilo di configurazione. Trascinare il bundle nel Cestino rimuove il front end e lascia ogni registrazione al suo posto. È per questo che questa categoria ha la reputazione di essere irrimovibile, e perché la prima mossa è l'uninstaller del fornitore stesso, non il Finder.
Cosa installa un prodotto di sicurezza oltre al bundle app
Puoi inventariare l'intera superficie in sola lettura, su qualsiasi Mac, in circa un minuto:
systemextensionsctl list
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
ls -la /Library/PrivilegedHelperTools
profiles list
pkgutil --pkgs | grep -i vendorname
Un'estensione di sistema porta il codice che ispeziona file e traffico, sostituendo le
estensioni del kernel che questo software installava un tempo, ed è per questo che il
vecchio consiglio di cancellare un .kext non descrive più niente. La
guida alle estensioni di sistema
di Apple dice dove vive: "System extensions reside inside your app's
Contents/Library/SystemExtensions folder." Attivarne una richiede la tua approvazione, ed
è per questo che installare software di sicurezza comporta sempre una tappa nelle
Impostazioni. La
nota tecnica di deployment
di Apple aggiunge la proprietà che conta al momento della rimozione: un provider impacchettato
così "runs in a global context, completely independent of the logged in user."
Un filtro di contenuti di rete o un proxy trasparente è un oggetto separato, ed è quello che porta via a molti l'accesso a internet. La configurazione che lo attiva appartiene al sistema piuttosto che all'app. NEFilterManager è esplicito: "The filter configuration is stored in the Network Extension preferences which are managed by the Network Extension framework," e le modifiche hanno effetto solo quando l'app proprietaria le salva esplicitamente.
I job launchd avviano i pezzi in background. /Library/LaunchDaemons gira come root
all'avvio, prima che chiunque acceda; /Library/LaunchAgents gira per ogni utente al login;
~/Library/LaunchAgents gira per te. Un plist in quelle cartelle è una registrazione con
launchd, non un normale file di impostazioni.
Un helper privilegiato sotto /Library/PrivilegedHelperTools è un eseguibile posseduto
da root abbinato a un daemon che andrebbe scaricato prima che il file vada da qualsiasi
parte. Un profilo di configurazione, su un Mac distribuito da un datore di lavoro o una
scuola, porta le approvazioni delle estensioni e i payload del filtro così il software si
installa senza chiedere niente a nessuno, e lo stesso meccanismo può rimetterlo al suo posto.
Perché trascinarlo nel Cestino non può funzionare
Apple documenta una buona notizia, ed è più ristretta di quanto sembri a prima lettura: "The system automatically uninstalls any system extensions when the user deletes the corresponding app." Questo copre l'estensione dentro il bundle, e non dice niente sulle altre registrazioni, nessuna delle quali sta dentro il bundle.
La configurazione del filtro è dietro la lamentela più comune qui. Ha una propria durata nelle preferenze di Network Extension, e Apple documenta la sua rimozione come una chiamata esplicita che fa l'app proprietaria. Cancellare un'app non fa mai quella chiamata. Ciò che resta è un filtro attivo che punta a un provider che non esiste più, e i sintomi sono quelli che la gente segnala dopo una rimozione a metà: ricerche DNS che falliscono, un browser che si blocca su ogni pagina, connessioni che vanno in timeout mentre l'icona Wi-Fi mostra segnale pieno. La rete è a posto. Il traffico viene consegnato a un filtro che non può rispondere.
I job launchd sono il secondo fallimento. Cancellare un eseguibile non deregistra il job che lo avvia, converte un servizio funzionante in uno che fallisce a ogni avvio, e un job configurato per restare vivo viene ritentato in loop, ed è da lì che vengono le segnalazioni "la ventola parte dopo che l'ho disinstallato". Cancellare il plist mentre il job è caricato è l'immagine speculare: launchd tiene il job fino al prossimo riavvio senza niente sul disco dietro. L'helper e il profilo sopravvivono per lo stesso motivo, e un profilo che porta un payload software reinstallerà ciò che hai cancellato.
La difficoltà è una scelta di design
Un software di sicurezza che qualsiasi processo potesse disinstallare silenziosamente non
varrebbe niente, dato che la prima cosa che farebbe un malware capace sarebbe rimuovere
ciò che lo osserva. Quindi macOS mette entrambi gli estremi del ciclo di vita dove un
processo in background non può arrivare: l'attivazione richiede un essere umano che clicca
Consenti nelle Impostazioni (la
pagina di avviso di Apple indica Elementi login
ed estensioni su macOS 15 e successivi, Privacy e sicurezza prima), e la disattivazione è
una richiesta dell'app che possiede l'estensione. L'attrito è quel design che funziona, e
non c'è alcuna sequenza di comandi rm che sia la vera disinstallazione che ti viene
tenuta nascosta.
La regola: esegui prima l'uninstaller del fornitore
Sempre, e prima di toccare qualsiasi altra cosa. Solo l'app che contiene l'estensione può inviare una richiesta di disattivazione per essa. Solo l'app che ha salvato la configurazione del filtro può rimuoverla dalle preferenze di Network Extension. Solo lo strumento del fornitore sa quali dei suoi componenti reinstalleranno gli altri se fermati fuori sequenza. Nessun uninstaller di terze parti può ottenere quegli agganci, quindi uno scanner di residui, Mole incluso, serve per ciò che resta dopo che lo strumento del fornitore ha girato, mai come sostituto di esso.
Se hai già trascinato l'app nel Cestino, rimettila a posto con File > Ripristina, avviala, e usa il suo uninstaller. Le sezioni sotto indicano dove ogni fornitore tiene il suo.
Dove ogni fornitore tiene il suo uninstaller
Ogni link sotto punta al sito di supporto del fornitore stesso, dove vivono i passi attuali. Le pagine di supporto si spostano, quindi segui la pagina piuttosto che questo riassunto se i due discordano.
McAfee
L'uninstaller è già sul Mac, in Applicazioni, chiamato come il prodotto che hai comprato, quindi un'installazione Total Protection e una LiveSafe non usano lo stesso. L' articolo di McAfee ti fa accedere come amministratore, chiudere ogni app McAfee, poi aprire Vai > Applicazioni e fare doppio clic su quell'uninstaller. Due dei suoi passi sono il motivo per leggerlo invece di improvvisare: ti dice di cliccare Consenti quando macOS chiede riguardo a un'estensione di sistema, ed è concluso da un riavvio come passo numerato piuttosto che come suggerimento. Un'icona Dock morta può sopravvivere alla rimozione e va trascinata via a mano.
Norton
Anche qui un'app uninstaller separata già in Applicazioni. La pagina di disinstallazione di Norton percorre Vai > Applicazioni, poi doppio clic su Norton Uninstaller, poi "type your administrator account password, and then click Install Helper", poi di nuovo la password, poi Finish. Il passo dell'helper è come l'uninstaller ottiene i privilegi per smontare i propri componenti a livello di sistema.
Avast
Un uninstaller in-app, su una pagina che si apre escludendo l'alternativa ovvia: "Moving Avast Security to the Trash or using Clean My Mac does not fully uninstall the application." Il percorso documentato è Avast Security > Uninstall Avast Security nella barra dei menu, Continua, poi la password di avvio del tuo Mac e Install Helper. Lo stesso uninstaller sta anche in Applicazioni come Avast Security Uninstaller, per quando l'app non si apre.
Bitdefender
Un binario uninstaller dedicato invece di un trascinamento. La pagina di disinstallazione ti fa aprire la cartella Bitdefender, doppio clic su Bitdefender Uninstaller, spuntare il prodotto, cliccare Uninstall, e inserire un nome e una password di amministratore. Lo stesso passaggio offre di rimuovere Bitdefender VPN, che vale la pena accettare se non lo tieni, dato che quel componente registra una propria estensione di rete.
Malwarebytes
Una voce di menu in-app. L'
articolo di disinstallazione
ti porta attraverso Aiuto > Disinstalla Malwarebytes nella barra dei menu, un prompt di
conferma, e la password del tuo Mac. Insolitamente per questa categoria, la stessa pagina
accetta anche la rimozione tramite Finder, il che è una dichiarazione del fornitore sulla
propria impronta. I vecchi articoli di disinstallazione su support.malwarebytes.com ora
reindirizzano; usa la pagina help.malwarebytes.com.
Sophos
Due prodotti, due risposte. Sophos Home, il prodotto consumer, usa un'app separata
Remove Sophos Home avviata da Spotlight. La
pagina
è diretta sull'alternativa: "DO NOT drag Sophos Home to the Trash as this will not
uninstall the program." Installa un helper, chiede la tua password, e richiede un riavvio.
La stessa pagina contiene una sezione opzionale per rimuovere le estensioni di sistema
Sophos in seguito, e quella procedura racchiude systemextensionsctl uninstall tra la
disattivazione e la riattivazione di System Integrity Protection. È la dichiarazione più
chiara di dove sta il confine: anche l'uninstaller di un fornitore stesso non sempre porta
via le proprie estensioni. Quei passi sono opzionali, esattamente come li etichetta il
fornitore, e SIP vale la pena lasciarla attiva.
Sophos Endpoint, il prodotto gestito, usa Remove Sophos Endpoint da Launchpad, ma la documentazione lo blocca: "If tamper protection is turned on, you need to turn it off before you can uninstall Sophos Endpoint." Serve un amministratore Sophos Central o la password per dispositivo tenuta in quella console, quindi su un Mac di lavoro non è un'operazione lato utente.
Kaspersky
In-app, tramite il pannello di supporto. La
pagina di disinstallazione
percorre Aiuto > Supporto, Disinstalla, di nuovo Disinstalla, poi credenziali di
amministratore, e avverte che le estensioni di Chrome e Firefox sopravvivono all'app.
Kaspersky pubblica anche uno strumento di rimozione
separato, kavremover-mac, per quando il percorso in-app fallisce. Entrambe le pagine
portano date 2024, quindi verifica in base alla tua versione.
Se il Mac è gestito, la risposta è il tuo team IT
Prima di passarci una serata, controlla se la decisione è tua:
profiles status -type enrollment
profiles list
Il primo stampa lo stato di iscrizione DEP e MDM senza diritti di amministratore, il secondo elenca i profili di configurazione installati per il tuo utente, e la stessa informazione appare sotto Impostazioni di Sistema > Generali > Gestione dispositivo. La guida alla Gestione dispositivo di Apple è chiara su cosa segue: "Some profiles can only be removed by a system administrator of your Mac. If you can't remove a profile, your Mac may be a managed computer."
Su un Mac gestito il software di sicurezza è un payload di quella gestione. Rimuovilo localmente e il profilo lo reinstalla. Prova a disattivare la protezione anti-manomissione localmente e non puoi, perché la password vive in una console che non hai. Chiedi all'IT di scollegarlo.
Verificare la rimozione
Questo è il punto in cui una rimozione a metà viene colta mentre è ancora economico farlo. Fallo dopo che l'uninstaller del fornitore ha finito e il Mac si è riavviato, perché diversi di questi controlli dicono la verità solo dopo un boot.
1. Estensioni di sistema.
systemextensionsctl list
Su un Mac senza nulla installato, l'output è una singola riga che legge 0 extension(s).
Altrimenti ogni riga nomina l'identificativo di team, il bundle identifier dell'estensione,
la sua versione, e uno stato tra parentesi. Qualsiasi cosa che porti ancora
l'identificativo del fornitore rimosso significa che la disattivazione non si è completata.
Lo strumento offre systemextensionsctl uninstall <teamID> <bundleID>, e alcuni fornitori
lo documentano esattamente per questo caso, ma usalo solo quando la pagina del fornitore
te lo dice.
2. Registrazioni launchd. Cerca le label del fornitore in tutte e tre le posizioni, poi chiedi a launchd cosa è effettivamente caricato:
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
launchctl list | grep -i vendorname
sudo launchctl list | grep -i vendorname
Le due chiamate launchctl list rispondono a domande diverse: la prima copre la tua
sessione di login, la seconda il dominio di sistema dove vivono i daemon root. Un plist
residuo senza un job caricato corrispondente è obsoleto, un job caricato senza plist è un
Mac che ha bisogno di un riavvio, e un job in entrambi è software ancora in esecuzione.
Mole mostra le stesse tre posizioni come un'unica lista, che è la prossima sezione.
3. Filtri di rete. Un filtro di contenuti registrato appare in Impostazioni di Sistema > Rete come voce Filtri, quindi nessuna voce significa che niente è iscritto. Una ancora elencata dopo che l'app è sparita è ciò che sta rompendo la tua connessione.
4. Elementi login ed estensioni. Apri Impostazioni di Sistema > Generali > Elementi login ed estensioni e leggi sia la lista di login sia gli elementi in background sotto. I componenti del fornitore sopravvivono spesso all'app qui.
5. Processi in esecuzione. In Monitoraggio Attività, cerca il nome del fornitore e passa a Tutti i processi dal menu Vista così i daemon posseduti da root sono inclusi. Un risultato vuoto dopo un riavvio è la conferma che vuoi.
6. Ricevute. pkgutil --pkgs | grep -i vendorname nomina cosa ha scritto l'installer,
il che ti dà i percorsi che vale la pena rivedere sotto
~/Library/Application Support una volta che i componenti attivi sono spariti.
Se i primi tre controlli sono puliti, il prodotto è fuori dalla macchina e tutto ciò che resta è spazio disco piuttosto che comportamento.
Cosa fa Mole qui, e cosa si rifiuta di fare
La scheda Software di Mole tiene l'inventario app e gli elementi di avvio su un unico schermo, così i launch agent, i launch daemon, e i login item che un prodotto ha registrato sono visibili accanto all'app che li ha registrati, ciascuno con il suo percorso reale.
Per i residui, Mole confronta per identità del bundle piuttosto che per nome, e i percorsi
a livello di sistema che conosce sono quelli sopra: /Library/LaunchDaemons/<bundle-id>.plist,
/Library/LaunchAgents/<bundle-id>.plist, /Library/PrivilegedHelperTools/<bundle-id>, e
le ricevute sotto /private/var/db/receipts. Ogni corrispondenza a livello di sistema è a
confidenza di revisione, il che significa che arriva deselezionata: scegli di includere
ogni percorso dopo averlo letto, invece di escludere da una lista già spuntata. Le
rimozioni vanno nel Cestino, quindi un errore è un trascinamento fuori, gli elementi
saltati e falliti vengono riportati, e tutto gira in locale.
Due rifiuti contano più di tutto questo. Mole scansiona /Library/SystemExtensions per
estensioni possedute dall'app che si sta rimuovendo, e quando ne trova una solleva un
avviso che la nomina e dice che potrebbe restare dopo che l'app è sparita. Non tenta la
disattivazione, perché non può: quella richiesta deve venire dall'app proprietaria. E per
fornitori i cui prodotti sono bloccati, gestiti, o distruttivi da rimuovere pezzo per pezzo,
inclusi ESET, CrowdStrike, SentinelOne, Jamf, Palo Alto GlobalProtect, e Cisco Secure
Client, Mole rifiuta del tutto di disinstallarli e indica l'uninstaller ufficiale del
fornitore.
Il confine è ciò che rende affidabile il resto di questa pagina, quindi va detto senza
attenuanti: Mole non è una risposta al malware, non è un backup, e non è un sostituto di un
uninstaller del fornitore per software che installa driver, componenti VPN o estensioni di
sistema. Per gli antivirus, il lavoro di Mole inizia dopo che l'uninstaller del fornitore ha
finito. In un terminale, il gratuito e open source
Mole CLI copre la stessa revisione con mo uninstall, e
ogni comando distruttivo accetta --dry-run così puoi leggere la lista dei percorsi prima.
Domande frequenti
Internet ha smesso di funzionare dopo che ho cancellato il mio antivirus. Cosa faccio?
Quasi certamente una configurazione di filtro di rete sopravvissuta all'app. Vive nelle
preferenze di Network Extension, che il framework gestisce indipendentemente dal bundle,
quindi cancellare l'app lascia un filtro attivo che punta a un provider che non c'è più.
Controlla Impostazioni di Sistema > Rete per una voce Filtri e
systemextensionsctl list per un'estensione sopravvissuta. La soluzione è reinstallare il
prodotto del fornitore ed eseguire il suo uninstaller. Reinstallare software che stai
cercando di rimuovere sembra sbagliato ed è comunque il percorso più breve.
Posso semplicemente cancellare i plist in /Library/LaunchDaemons?
Non come prima mossa, e raramente come ultima. Un plist lì è una registrazione con
launchd, quindi rimuovere il file mentre il job è caricato lascia il job in esecuzione fino
al prossimo riavvio senza niente sul disco a spiegarlo. Una volta che l'uninstaller del
fornitore ha girato, il Mac si è riavviato, e sudo launchctl list non mostra alcun job
caricato corrispondente, un plist obsoleto è un residuo inerte. Non rimuoverne mai uno
appartenente a software ancora installato.
L'uninstaller del fornitore chiede la mia password e poi fallisce. E ora?
Controlla tre cose. Il Mac è gestito, nel qual caso la protezione anti-manomissione o un profilo sta bloccando la rimozione e la risposta è l'IT. Il prodotto è ancora in esecuzione, dato che alcuni uninstaller non riescono a finire mentre il proprio daemon tiene aperti dei file, quindi riavvia e riprova. E l'uninstaller è aggiornato, dato che alcuni fornitori pubblicano uno strumento di rimozione standalone separato dal percorso in-app. Se tutte e tre sono a posto, il supporto del fornitore è la prossima tappa.
Devo riavviare prima di controllare se è sparito?
Sì. Sia lo smontaggio dell'estensione sia la deregistrazione launchd si completano attraverso un boot, quindi un controllo eseguito subito dopo che l'uninstaller ha finito può mostrare residui già programmati per sparire, e allo stesso modo può nascondere un daemon che tornerà.
Approfondimenti correlati
- Come disinstallare completamente le app su Mac per la sequenza generale, i bundle identifier, e i container condivisi.
- Rimuovere i file residui dopo la disinstallazione delle app Mac per i residui una volta confermato che i componenti attivi sono spariti.
- Cosa i Mac cleaner non dovrebbero mai cancellare per l'altro lato dello stesso giudizio.