Antivirus verwijderen op de Mac zonder je netwerk te breken
Een antivirusproduct is niet één app. Het is een appbundel plus een set registraties die macOS apart beheert: een systeemextensie, een bewaarde configuratie van een netwerkfilter, een of meer launchd-taken, meestal een hulpprogramma met extra rechten, en op een beheerde Mac een configuratieprofiel. De bundel naar de prullenmand slepen haalt de voorkant weg maar kan andere registraties laten staan. Daarom heeft deze categorie de reputatie onverwijderbaar te zijn, en daarom is de eerste stap de eigen uninstaller van de leverancier en niet de Finder.
Wat een beveiligingsproduct installeert naast de appbundel
Je kunt het hele oppervlak alleen-lezen inventariseren, op elke Mac, in ongeveer een minuut:
systemextensionsctl list
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
ls -la /Library/PrivilegedHelperTools
profiles list
pkgutil --pkgs | grep -i vendorname
Een systeemextensie draagt de code die bestanden en verkeer inspecteert, in de plaats van de
kernelextensies die deze software vroeger meeleverde, en daarom beschrijft oud advies over het verwijderen van een
.kext niets meer. De
gids voor systeemextensies van Apple
zegt waar hij staat: "System extensions reside inside your app's
Contents/Library/SystemExtensions folder." Er een activeren vraagt jouw goedkeuring, en
daarom loopt het installeren van beveiligingssoftware altijd langs Instellingen. De
deployment-technote van Apple
voegt de eigenschap toe die bij het verwijderen telt: een provider die zo is verpakt "runs in a
global context, completely independent of the logged in user."
Een netwerkinhoudsfilter of transparante proxy is een apart object, en dat is het object dat mensen hun internet afneemt. De configuratie die hem aanzet, hoort bij het systeem en niet bij de app. NEFilterManager is expliciet: "The filter configuration is stored in the Network Extension preferences which are managed by the Network Extension framework," en wijzigingen gaan pas in als de app die hem bezit ze expliciet bewaart.
launchd-taken starten de achtergrondstukken. /Library/LaunchDaemons draait als root bij
het opstarten, voordat iemand zich aanmeldt. /Library/LaunchAgents draait voor elke gebruiker bij het aanmelden.
~/Library/LaunchAgents draait voor jou. Een plist in die mappen is een registratie bij
launchd, geen gewoon instellingenbestand.
Een hulpprogramma met extra rechten onder /Library/PrivilegedHelperTools is een uitvoerbaar bestand in bezit van root,
gekoppeld aan een daemon die ontladen moet zijn voordat het bestand ergens heen gaat. Een
configuratieprofiel, op een Mac die door een werkgever of school is uitgerold, draagt de goedkeuringen van de extensie
en de filterpayloads zodat de software installeert zonder iemand te vragen, en het
zelfde mechanisme kan hem terugzetten.
Waarom het naar de prullenmand slepen niet kan werken
Apple documenteert één stuk goed nieuws, en dat is smaller dan het eerst leest: "The system automatically uninstalls any system extensions when the user deletes the corresponding app." Dat dekt de extensie in de bundel, en zegt niets over de andere registraties, waarvan er geen in de bundel zit.
De filterconfiguratie zit achter de meest voorkomende klacht hier. Hij heeft een eigen levensduur in de voorkeuren van Network Extension, en Apple documenteert het verwijderen als een expliciete aanroep die de app die hem bezit doet. Een app verwijderen doet die aanroep nooit. Wat overblijft, is een ingeschakeld filter dat naar een provider wijst die niet meer bestaat, en de symptomen zijn de symptomen die mensen melden na een halve verwijdering: DNS-opzoekingen die falen, een browser die bij elke pagina blijft hangen, verbindingen die een time-out krijgen terwijl het wifi-symbool vol signaal toont. Het netwerk is in orde. Verkeer wordt aan een filter gegeven dat niet kan antwoorden.
De launchd-taken zijn de tweede mislukking. Een uitvoerbaar bestand verwijderen schrijft de taak die het start niet uit. Het maakt van een werkende dienst een dienst die bij elke start faalt, en een taak die ingesteld is om in leven te blijven, wordt in een lus opnieuw geprobeerd, en daar komen de meldingen vandaan dat de ventilator na het verwijderen op toeren komt. De plist verwijderen terwijl de taak geladen is, is het spiegelbeeld: launchd houdt de taak tot de volgende herstart, met niets op schijf erachter. Het hulpprogramma en het profiel overleven om dezelfde reden, en een profiel dat een softwarepayload draagt, installeert opnieuw wat je hebt verwijderd.
De moeilijkheid is een ontwerpbeslissing
Beveiligingssoftware die elk proces stil zou kunnen verwijderen, zou waardeloos zijn, want het
eerste wat malware die daartoe in staat is zou doen, is het ding weghalen dat ernaar kijkt. Dus zet macOS beide
uiteinden van de levenscyclus waar een achtergrondproces niet bij kan: activeren vraagt een mens
die op Sta toe klikt in Instellingen (de meldingenpagina van Apple
wijst op macOS 15 en later naar Inlogonderdelen en extensies, en daarvóór naar Privacy en beveiliging),
en deactiveren is een verzoek van de app die de extensie bezit. De wrijving is dat
ontwerp dat werkt, en er is geen reeks rm-opdrachten die de echte verwijdering is die
voor je wordt achtergehouden.
De regel: draai eerst de uninstaller van de leverancier
Altijd, en voordat je iets anders aanraakt. Alleen de bevattende app kan een deactiveringsverzoek indienen voor zijn eigen extensie. Alleen de app die de filter-configuratie heeft bewaard, kan hem uit de voorkeuren van Network Extension halen. Alleen de tool van de leverancier weet welke van zijn onderdelen de andere opnieuw installeren als ze buiten volgorde worden gestopt. Geen uninstaller van een derde kan die handvatten krijgen, dus een restscanner, Mole inbegrepen, is voor wat er overblijft nadat de tool van de leverancier heeft gedraaid, nooit een vervanging ervan.
Heb je de app al naar de prullenmand gesleept, zet hem dan terug met Archief › Zet terug, start hem, en gebruik zijn eigen uninstaller. De secties hieronder zeggen waar elke leverancier hem bewaart.
Waar elke leverancier zijn uninstaller bewaart
Elke link hieronder wijst naar de eigen supportsite van de leverancier, en daar staan de actuele stappen. Supportpagina's verhuizen, dus volg de pagina in plaats van deze samenvatting als de twee elkaar tegenspreken.
McAfee
De uninstaller staat al op de Mac, in Programma's, genoemd naar het product dat je hebt gekocht, dus een installatie van Total Protection en een installatie van LiveSafe gebruiken niet dezelfde. Het artikel van McAfee laat je aanmelden als beheerder, elke McAfee-app stoppen, daarna Ga › Programma's openen en dubbelklikken op die uninstaller. Twee van de stappen zijn de reden om het te lezen in plaats van te improviseren: het zegt dat je op Allow klikt als macOS vraagt over een systeemextensie, en het eindigt met een herstart als genummerde stap in plaats van als suggestie. Een dood Dock-symbool kan de verwijdering overleven en moet met de hand weggesleept worden.
Norton
Ook een aparte uninstaller-app die al in Programma's staat. De verwijderpagina van Norton loopt door Ga › Programma's, daarna dubbelklik op Norton Uninstaller, daarna "type your administrator account password, and then click Install Helper", daarna het wachtwoord nog eens, daarna Finish. De helperstap is hoe de uninstaller de rechten krijgt om zijn eigen onderdelen op systeemniveau af te wikkelen.
Avast
Een uninstaller in de app, op een pagina die opent door het voor de hand liggende alternatief uit te sluiten: "Moving Avast Security to the Trash or using Clean My Mac does not fully uninstall the application." Het gedocumenteerde pad is Avast Security › Uninstall Avast Security in de menubalk, Continue, daarna het opstartwachtwoord van je Mac en Install Helper. Dezelfde uninstaller staat ook in Programma's als Avast Security Uninstaller, voor als de app niet wil openen.
Bitdefender
Een aparte uninstaller-binary in plaats van slepen. De verwijderpagina laat je de Bitdefender-map openen, dubbelklikken op Bitdefender Uninstaller, het product aanvinken, op Uninstall klikken en een beheerdersnaam en -wachtwoord invoeren. Dezelfde gang biedt aan om Bitdefender VPN te verwijderen, het accepteren waard als je het niet houdt, want dat onderdeel registreert een eigen netwerkextensie.
Malwarebytes
Een menu-onderdeel in de app. Het
verwijderartikel
stuurt je via Help › Uninstall Malwarebytes in de menubalk, een bevestigings-vraag en het wachtwoord van je Mac. Ongewoon voor deze categorie accepteert dezelfde pagina ook
verwijderen via de Finder, en dat is een uitspraak van de leverancier over zijn eigen voetafdruk. Oudere
verwijderartikelen op support.malwarebytes.com verwijzen nu door. Gebruik de pagina op help.malwarebytes.com.
Sophos
Twee producten, twee antwoorden. Sophos Home, het consumentenproduct, gebruikt een aparte app Remove
Sophos Home die je vanuit Spotlight start. De
pagina
is bot over het alternatief: "DO NOT drag Sophos Home to the Trash as this will not
uninstall the program." Hij installeert een helper, vraagt om je wachtwoord en heeft een herstart nodig.
Dezelfde pagina heeft een optionele sectie om Sophos-systeemextensies daarna te verwijderen,
en die procedure zet systemextensionsctl uninstall tussen het uitschakelen en
opnieuw inschakelen van System Integrity Protection. Dat is de helderste uitspraak van waar de
grens ligt: zelfs de eigen uninstaller van een leverancier neemt zijn extensies niet altijd mee.
Die stappen zijn optioneel, precies zoals de leverancier ze labelt, en SIP kun je beter aan laten.
Sophos Endpoint, het beheerde product, gebruikt Remove Sophos Endpoint vanuit Launchpad, maar de documentatie zet er een poort voor: "If tamper protection is turned on, you need to turn it off before you can uninstall Sophos Endpoint." Dat vraagt een beheerder van Sophos Central of het wachtwoord per apparaat dat in die console staat, dus op een werk-Mac is het geen handeling aan de kant van de gebruiker.
Kaspersky
In de app, via het supportpaneel. De
verwijderpagina loopt
door Help › Support, Uninstall, nog eens Uninstall, daarna beheerders-gegevens, en waarschuwt dat de extensies van Chrome en Firefox de app overleven. Kaspersky
publiceert ook een aparte verwijdertool,
kavremover-mac, voor als het pad in de app faalt. Beide pagina's dragen datums uit 2024, dus controleer
ze tegen jouw versie.
Is de Mac beheerd, dan is het antwoord je IT-team
Controleer voordat je er een avond aan besteedt of de beslissing überhaupt van jou is:
profiles status -type enrollment
profiles list
De eerste toont de inschrijvingsstaat van DEP en MDM zonder beheerdersrechten, de tweede toont configuratieprofielen die voor jouw gebruiker zijn geïnstalleerd, en dezelfde informatie verschijnt onder Systeeminstellingen › Algemeen › Apparaatbeheer. De gids voor apparaatbeheer van Apple is helder over wat volgt: "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."
Op een beheerde Mac is de beveiligingssoftware een payload van dat beheer. Haal je hem lokaal weg, dan installeert het profiel hem opnieuw. Probeer je sabotagebescherming lokaal uit te zetten, dan kun je dat niet, omdat het wachtwoord in een console staat die je niet hebt. Vraag IT om hem los te koppelen.
De verwijdering controleren
Hier wordt een halve verwijdering betrapt terwijl dat nog goedkoop is. Doe het nadat de uninstaller van de leverancier klaar is en de Mac opnieuw is opgestart, want verschillende van deze controles zeggen pas de waarheid na een opstart.
1. Systeemextensies.
systemextensionsctl list
Op een Mac waar niets is geïnstalleerd, is de uitvoer één regel die 0 extension(s) leest.
Anders noemt elke rij de team-ID, de bundel-ID van de extensie, de
versie en een staat tussen haakjes. Alles wat nog de ID van de verwijderde leverancier draagt,
betekent dat de deactivering niet is voltooid. De tool biedt wel
systemextensionsctl uninstall <teamID> <bundleID>, en sommige leveranciers documenteren dat voor
precies dit geval, maar pak het alleen als de pagina van de leverancier zegt dat je het moet doen.
2. launchd-registraties. Zoek de labels van de leverancier op alle drie de plekken, en vraag daarna launchd wat er echt geladen is:
ls -la /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents
launchctl list | grep -i vendorname
sudo launchctl list | grep -i vendorname
De twee aanroepen van launchctl list beantwoorden verschillende vragen: de eerste dekt je aanmeld-sessie, de tweede het systeemdomein waar root-daemons leven. Een achtergebleven plist zonder
bijpassende geladen taak is verouderd, een geladen taak zonder plist is een Mac die een herstart nodig heeft, en
een taak in beide is software die nog draait. Mole toont dezelfde drie plekken als één lijst,
en dat is de volgende sectie.
3. Netwerkfilters. Controleer Systeeminstellingen > Netwerk op een vermelding Filters die bij het verwijderde product hoort. Een filter dat nog genoemd wordt nadat de app weg is, is een mogelijke oorzaak van verbindingsproblemen, geen bewijs ervan.
4. Inlogonderdelen en extensies. Open Systeeminstellingen › Algemeen › Inlogonderdelen en extensies en lees zowel de inloglijst als de achtergrondonderdelen eronder. Onderdelen van de leverancier overleven de app hier vaak.
5. Draaiende processen. Zoek in Activiteitenweergave de leveranciersnaam en schakel naar Alle processen vanuit het menu Weergave, zodat daemons in bezit van root meetellen. Een leeg resultaat na een herstart is de bevestiging die je wilt.
6. Installatiebewijzen. pkgutil --pkgs | grep -i vendorname noemt wat het installatieprogramma heeft geschreven,
en dat geeft je de paden die het bekijken waard zijn onder ~/Library/Application Support zodra de
actieve onderdelen weg zijn.
Vinden deze controles geen actieve onderdelen, dan kun je verder met restbestanden bekijken. Blijven de symptomen, vraag dan de leverancier de verwijdering te controleren voordat je meer bestanden verwijdert.
Wat Mole hier doet, en wat het weigert te doen
Het tabblad Apps van Mole houdt de app-inventaris en de opstartonderdelen op één scherm, zodat de launch agents, launch daemons en inlogonderdelen die een product heeft geregistreerd zichtbaar zijn naast de app die ze heeft geregistreerd, elk met zijn echte pad.
Voor resten koppelt Mole op bundelidentiteit in plaats van op naam, en de paden op systeemniveau
die het kent, zijn die hierboven: /Library/LaunchDaemons/<bundle-id>.plist,
/Library/LaunchAgents/<bundle-id>.plist, /Library/PrivilegedHelperTools/<bundle-id>,
en de bewijzen onder /private/var/db/receipts. Elke overeenkomst op systeemniveau is
controlevertrouwen, wat betekent dat hij uitgevinkt aankomt: je kiest elk pad nadat je het hebt gelezen,
in plaats van je af te melden van een vooraf aangevinkte lijst. Verwijderingen gaan naar de prullenmand, dus een vergissing is een
sleep terug, overgeslagen en mislukte onderdelen worden gemeld, en alles draait lokaal.
Twee weigeringen tellen zwaarder dan dat alles. Mole scant /Library/SystemExtensions op
extensies die bij de app horen die wordt verwijderd, en als het er een vindt, geeft het een advies
dat die extensie noemt en zegt dat hij kan blijven nadat de app weg is. Het probeert
de deactivering niet, want dat kan het niet: dat verzoek moet van de app komen die hem bezit. En voor
leveranciers waarvan de producten vergrendeld, beheerd of destructief zijn om in stukken te verwijderen, waaronder
ESET, CrowdStrike, SentinelOne, Jamf, Palo Alto GlobalProtect en Cisco Secure Client,
weigert Mole ze helemaal te verwijderen en wijst het naar de officiële uninstaller van de leverancier.
De grens is wat de rest van deze pagina betrouwbaar maakt, dus hij gaat zonder voorbehoud: Mole is
geen antwoord op malware, geen back-up, en geen vervanging van een uninstaller van de leverancier bij
software die drivers, vpn-onderdelen of systeemextensies meelevert. Voor antivirus begint de taak van Mole
nadat de uninstaller van de leverancier klaar is. In een terminal dekt de gratis en open source
Mole CLI dezelfde controle met mo uninstall, en
de opdrachten clean, uninstall en optimize accepteren --dry-run zodat je het plan eerst kunt bekijken.
Veelgestelde vragen
Mijn internet werkte niet meer nadat ik mijn antivirus had verwijderd. Wat doe ik?
Een mogelijke oorzaak is een netwerkfilterconfiguratie die de app heeft overleefd. Hij staat in de
voorkeuren van Network Extension, die het framework onafhankelijk van de bundel beheert, dus
de app verwijderen laat een ingeschakeld filter achter dat naar een provider wijst die er niet meer is.
Controleer Systeeminstellingen › Netwerk op een vermelding Filters en systemextensionsctl list op
een overgebleven extensie. De reparatie is het product van de leverancier opnieuw installeren en zijn eigen
uninstaller draaien. Software opnieuw installeren die je probeert weg te halen voelt verkeerd en is nog steeds het
kortste pad.
Kan ik gewoon de plists in /Library/LaunchDaemons verwijderen?
Niet als eerste stap, en zelden als laatste. Een plist daar is een registratie bij
launchd, dus het bestand weghalen terwijl de taak geladen is, laat de taak draaien tot de volgende
herstart, met niets op schijf om hem te verklaren. Nadat de uninstaller van de leverancier heeft gedraaid, de Mac
opnieuw is opgestart, en sudo launchctl list geen bijpassende geladen taak toont, is een verouderde plist
inert restmateriaal. Verwijder er nooit een die bij software hoort die nog geïnstalleerd is.
De uninstaller van de leverancier vraagt om mijn wachtwoord en faalt daarna. Wat nu?
Controleer drie dingen. Is de Mac beheerd, dan blokkeert sabotagebescherming of een profiel de verwijdering en is het antwoord IT. Draait het product nog, want sommige uninstallers kunnen niet finishen terwijl hun eigen daemon bestanden openhoudt, dus herstart en probeer opnieuw. En is de uninstaller actueel, want sommige leveranciers publiceren een losse verwijdertool apart van het pad in de app. Zijn alle drie schoon, dan is support van de leverancier de volgende stop.
Moet ik herstarten voordat ik controleer of het weg is?
Ja. Het afbouwen van extensies en het uitschrijven bij launchd worden allebei over een opstart heen afgemaakt, dus een controle direct nadat de uninstaller klaar is, kan resten tonen die al gepland staan om te verdwijnen, en kan even goed een daemon verbergen die terugkomt.
Verder lezen
- Apps volledig verwijderen op de Mac voor de algemene volgorde, bundel-ID's en gedeelde containers.
- Restbestanden verwijderen na het verwijderen van Mac-apps voor resten zodra is bevestigd dat de actieve onderdelen weg zijn.
- Wat Mac-opschoontools nooit mogen verwijderen voor de andere kant van hetzelfde oordeel.