Kurzfassung: Gatekeeper prüft heruntergeladene Programme vor dem ersten Start auf Signatur und Notarisierung - aber nur, solange die Datei das Attribut com.apple.quarantine trägt. Der häufigste Umgehungsweg ist, genau dieses Attribut mit xattr zu entfernen; seltener wird Gatekeeper per spctl ganz abgeschaltet. Beides zeigt sich am ehesten als Prozessaufruf im Endpoint Security Framework (ESF), und das stabilste Artefakt ist das Vorhandensein oder Fehlen des Quarantine-Attributs an der Datei selbst. Dieser Beitrag baut auf macOS-Sicherheitsmonitoring auf, benennt die Telemetrie-Grenzen ehrlich und bringt drei sigma-cli-validierte Regeln. Serie "Angriff erkennen".
Gatekeeper ist eine der zentralen Schutzschichten von macOS: Es verhindert, dass ein frisch geladenes, nicht vertrauenswürdiges Programm einfach startet. Der Haken für Angreifer ist das Quarantine-Attribut, das macOS an Downloads hängt - fällt es weg, fällt die Prüfung weg. Dieser Beitrag bleibt auf der Erkennungsseite und zeigt, woran sich die Umgehung erkennen lässt, welche macOS-Telemetrie das trägt und wo sie an ihre Grenzen kommt. Er setzt die Grundlagen aus macOS-Sicherheitsmonitoring voraus und überträgt bewusst keine Windows-Denke: Unter macOS ist der Anker nicht eine Event-ID, sondern der Prozessaufruf von xattr oder spctl und das Attribut an der Datei.
Einordnung in ATT&CK: Gatekeeper Bypass (T1553.001), eine Sub-Technik von Subvert Trust Controls (T1553). Im hier gepflegten ATT&CK-v19-Datensatz läuft sie unter der Taktik Defense Impairment (TA0112); in dieser Serie steht der Beitrag entsprechend in der Spalte Defense Impairment und ist mit attack.defense-impairment getaggt. Das Entfernen des Quarantine-Attributs als Datei-Manipulation berührt verwandt auch Plist File Modification und allgemeine Indicator Removal, der Kern bleibt aber die Umgehung der Vertrauensprüfung.
Was der Angreifer tut
Gatekeeper hängt an einem einzigen Attribut. Wer es loswird oder die Prüfung abschaltet, umgeht die Kontrolle. Bewusst auf der Ebene des Prinzips, nicht als Anleitung:
- Quarantine-Attribut entfernen. macOS markiert heruntergeladene Dateien mit
com.apple.quarantine. Wird dieses Attribut mit xattr gelöscht, hält Gatekeeper die Datei für nicht aus dem Internet stammend und prüft sie beim Start nicht mehr. - Gatekeeper ganz abschalten. Mit
spctl --master-disablelässt sich die Bewertung systemweit deaktivieren. Danach startet jede Anwendung ungeprüft - ein grober, aber wirksamer Eingriff. - Eine gezielte Ausnahme eintragen. Mit
spctl --addwird eine einzelne Binary oder ein Zertifikat in die Bewertungsdatenbank aufgenommen und damit freigegeben, ohne Gatekeeper ganz abzuschalten. - Gar nicht erst markieren. Wird eine Datei nicht über die üblichen, quarantine-setzenden Wege auf den Rechner gebracht (sondern etwa per Kommandozeilen-Download oder aus einem Archiv, das kein Quarantine setzt), fehlt das Attribut von vornherein - dann gibt es nichts zu entfernen.
Für die Erkennung heißt das: Die ersten beiden Wege laufen über ein Programm (xattr, spctl) und sind als Prozessereignis sichtbar. Der letzte Weg hinterlässt vor allem ein Fehlen - eine ausführbare Datei ohne Quarantine-Herkunft, die nur die Artefaktsicht zeigt.
Welche Telemetrie die Technik zeigt
- Endpoint Security Framework (ESF). Die tragende Echtzeit-Quelle über
eslogger, Red Canary Mac Monitor oder EDR. Belastbar als Prozessereignis sind die Aufrufe von xattr und spctl mit ihren Argumenten - genau darauf setzen die Regeln unten. ESF kennt zusätzlich eigene Ereignisse für das Setzen und Entfernen von erweiterten Attributen; die liefert aber nur eine ESF-auswertende EDR aus, nicht jede Pipeline. - Dateisystem- und Artefaktsicht. Das stabilste Artefakt ist das Attribut selbst: Ob eine Datei com.apple.quarantine trägt, lässt sich mit
xattr -podermdlsprüfen. Eine ausführbare Datei in einem Download- oder Benutzerpfad ohne Quarantine-Herkunft ist ein Befund, den man auch ohne Live-Telemetrie findet. - Unified Log. Die Gatekeeper-Bewertung läuft über syspolicyd; das Unified Log hält die Entscheidungen (com.apple.syspolicy) fest. Das ist für die forensische Rekonstruktion wertvoll - wurde eine Datei bewertet, blockiert oder durchgelassen -, für die laufende Regelarbeit aber zu gesprächig.
- OpenBSM/audit. Die ältere BSM-Audit-Spur kann den Prozessaufruf von xattr oder spctl als Rückfallebene zeigen, wenn keine ESF-Quelle vorhanden ist. Für die Attribut-Ebene taugt sie nicht.
Das Muster
Das klarste Signal ist ein spctl-Aufruf, der Gatekeeper abschaltet - dafür gibt es auf einem verwalteten Endpunkt praktisch keinen legitimen Grund. Fast ebenso deutlich ist ein xattr-Aufruf, der com.apple.quarantine entfernt, besonders wenn das Ziel in einem Download- oder Temp-Pfad liegt und kurz darauf ein Programm von dort startet. Schwächer, aber wertvoll als Anreicherung ist eine spctl-Ausnahme über --add. Keines dieser Signale ist allein ein Beweis, weil Entwicklerabläufe dieselben Werkzeuge nutzen. Belastbar wird der Fall aus der Kette: Quarantine entfernt oder Gatekeeper geschwächt, gefolgt vom Start der betroffenen Datei.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft und setzen bewusst auf der Prozess-Logquelle auf (ESF-gespeist), weil dort die Aufrufe von xattr und spctl belastbar sichtbar sind. Auf die Attribut-Ebene über die ESF-Attributereignisse verzichten sie bewusst, weil die nicht jede Quelle liefert.
1. com.apple.quarantine mit xattr entfernt (T1553.001). Der häufigste Umgehungsweg, auf level: medium, weil Entwicklerabläufe das ebenfalls tun.
title: com.apple.quarantine-Attribut mit xattr entfernt
id: babc1249-1ef1-48c8-9c56-a5b3c3725617
status: experimental
description: |
Erkennt das Entfernen des com.apple.quarantine-Attributs mit dem Werkzeug xattr.
macOS markiert heruntergeladene Dateien mit diesem Attribut, damit Gatekeeper sie
vor dem ersten Start prueft. Wird es entfernt, startet das Programm ohne die
Gatekeeper-Pruefung (Gatekeeper Bypass). Einzelne Entwickler- und Build-Ablaeufe
entfernen es legitim, der Kontext entscheidet.
references:
- https://attack.mitre.org/techniques/T1553/001/
author: blue-team.net
date: 2026-10-07
tags:
- attack.defense-impairment
- attack.t1553.001
logsource:
product: macos
category: process_creation
detection:
sel_img:
Image|endswith: '/xattr'
sel_attr:
CommandLine|contains: 'com.apple.quarantine'
sel_flag:
CommandLine|contains:
- ' -d'
- ' -c'
- ' -r'
condition: sel_img and sel_attr and sel_flag
falsepositives:
- Entwickler- und Build-Werkzeuge entfernen das Quarantine-Attribut legitim - bekannte Skripte, Konten und Pfade als Baseline ausnehmen
level: medium
2. Gatekeeper mit spctl global deaktiviert (T1553.001). Der grobe Eingriff, auf level: high.
title: Gatekeeper mit spctl global deaktiviert
id: 09d920b4-afcf-4667-98bc-04a828fe36d9
status: experimental
description: |
Erkennt den Versuch, Gatekeeper per spctl global abzuschalten (master-disable).
Danach startet jede Anwendung ohne Signatur- und Notarisierungspruefung
(Gatekeeper Bypass). Dafuer gibt es fast nie einen legitimen Grund auf einem
verwalteten Endpunkt. Hinweis: Auf neueren macOS-Versionen ist dieser CLI-Schalter
eingeschraenkt, der Aufruf bleibt aber ein starkes Signal.
references:
- https://attack.mitre.org/techniques/T1553/001/
author: blue-team.net
date: 2026-10-07
tags:
- attack.defense-impairment
- attack.t1553.001
logsource:
product: macos
category: process_creation
detection:
sel_img:
Image|endswith: '/spctl'
sel_cmd:
CommandLine|contains: '--master-disable'
condition: sel_img and sel_cmd
falsepositives:
- Sehr selten in Test- oder Entwicklungsumgebungen - auf verwalteten Endpunkten als Alarm behandeln
level: high
3. spctl trägt eine Gatekeeper-Ausnahme ein (T1553.001). Die gezielte Freigabe, auf level: medium.
title: spctl traegt eine Gatekeeper-Ausnahme ein
id: 3935d0ad-e28f-498f-af60-c1dfb6dedf72
status: experimental
description: |
Erkennt das Hinzufuegen einer Ausnahme zur Gatekeeper-Bewertungsdatenbank mit
spctl (--add). Damit wird eine einzelne Binary oder ein Entwicklerzertifikat
freigegeben, sodass sie an Gatekeeper vorbei startet (Gatekeeper Bypass). Legitim
vor allem in Entwickler- und Verteilungsablaeufen, auf Endpunkten ungewoehnlich.
references:
- https://attack.mitre.org/techniques/T1553/001/
author: blue-team.net
date: 2026-10-07
tags:
- attack.defense-impairment
- attack.t1553.001
logsource:
product: macos
category: process_creation
detection:
sel_img:
Image|endswith: '/spctl'
sel_cmd:
CommandLine|contains: '--add'
condition: sel_img and sel_cmd
falsepositives:
- Entwickler- und Softwareverteilungs-Ablaeufe, die Zertifikate oder Binaries freigeben - bekannte Faelle als Baseline ausnehmen
level: medium
Grenzen der Erkennung
- Der API-Weg ist nur für EDR sichtbar. Das Quarantine-Attribut lässt sich auch programmatisch über removexattr() entfernen, ganz ohne das Werkzeug xattr. Dieser Weg erzeugt kein Prozessereignis und ist nur über die ESF-Attributereignisse einer EDR zu sehen, nicht über eine reine Prozess-Pipeline - die Regeln hier erfassen ihn nicht.
- spctl ist auf neueren macOS eingeschränkt. Seit macOS 15 lässt sich Gatekeeper nicht mehr einfach per
spctl --master-disablevon der Kommandozeile abschalten; der Schalter sitzt in den Systemeinstellungen hinter einer Authentifizierung. Regel 2 bleibt als Signal für den Versuch sinnvoll, der Erfolg ist aber versionsabhängig. - Das fehlende Attribut ist kein Ereignis. Wird eine Datei ohne Quarantine-Herkunft eingebracht, gibt es nichts zu entfernen und damit kein Prozesssignal. Das findet nur die Artefaktsicht - eine ausführbare Datei ohne Quarantine, wo eine zu erwarten wäre.
- Sichtbarkeit ist produktabhängig. Ohne ESF-Quelle gibt es kein Echtzeitsignal. Die Felder der Regeln setzen voraus, dass die Quelle Prozessstart mit Image und vollständiger Befehlszeile liefert.
Fehlalarme und Tuning
- Entwicklung ist der Hauptfall. Entwickler entfernen Quarantine von selbstgebauten Apps und geben Binaries frei. Bekannte Entwicklerkonten, Hosts und Skripte als Baseline aufnehmen, bevor Regel 1 und 3 scharf laufen.
- Auf den Zielpfad schauen. xattr auf eine Datei in Downloads oder Temp, gefolgt von deren Start, wiegt schwerer als dasselbe in einem Entwickler-Arbeitsverzeichnis. Den Pfad in die Bewertung aufnehmen.
- master-disable ist fast immer ein Alarm. Regel 2 sollte auf verwalteten Endpunkten nicht getunt, sondern untersucht werden - der legitime Bedarf ist verschwindend gering.
- Kette schlägt Einzeltreffer. Quarantine entfernt und dann die Datei gestartet, oder Gatekeeper geschwächt und dann unsignierte Software ausgeführt - die Abfolge entscheidet.
Analysten-Checkliste
- Welches Werkzeug wurde aufgerufen - xattr (Attribut entfernt) oder spctl (Gatekeeper geschwächt oder Ausnahme eingetragen)?
- Auf welche Datei zielte der Aufruf, und liegt sie in einem Download-, Temp- oder Benutzerpfad?
- Startete kurz darauf genau diese Datei - gibt es also die Kette aus Umgehung und Ausführung?
- Trägt die Datei noch com.apple.quarantine (mit xattr -p prüfen), oder fehlt es, obwohl eine Internet-Herkunft zu erwarten wäre?
- Stammt der Aufruf von einem Entwickler- oder Admin-Konto mit plausiblem Grund, oder aus einem untypischen Kontext?
- Zeigt das Unified Log (syspolicy) eine zugehörige Gatekeeper-Entscheidung, die den Zeitpunkt und das Ziel bestätigt?
Härtung
- Gatekeeper per MDM erzwingen. Über die Geräteverwaltung sicherstellen, dass Gatekeeper aktiv bleibt und nicht per spctl abgeschaltet werden kann - die wirksamste Einzelmaßnahme.
- Nur notarisierte Software zulassen. Wo möglich die Ausführung auf signierte und von Apple notarisierte Programme beschränken, damit ein entferntes Quarantine-Attribut allein nicht genügt.
- ESF-Quelle bereitstellen. eslogger, Red Canary Mac Monitor oder eine EDR aktivieren und die Prozessereignisse zentral ins SIEM bringen, inklusive der ESF-Attributereignisse, wenn das Produkt sie liefert.
- Downloads lenken. Den Bezug von Software über kontrollierte, quarantine-setzende Wege führen, damit eine Datei ohne Quarantine-Herkunft überhaupt auffällt.
Der Test im Lab
Die Erkennung lässt sich auf einem Test-Mac mit aktivem eslogger oder Red Canary Mac Monitor gefahrlos prüfen - Gatekeeper danach wieder einschalten:
- Für Regel 1 eine harmlose Testdatei aus dem Netz laden, mit
xattr -p com.apple.quarantinedas Attribut bestätigen und es dann mitxattr -d com.apple.quarantineentfernen. Das ESF-Prozessereignis muss den xattr-Aufruf zeigen. - Für Regel 2 im Lab
spctl --master-disableausführen (und mit --master-enable zurücksetzen) und den Treffer kontrollieren - auf neueren macOS zeigt sich hier zugleich die oben genannte Einschränkung. - Für Regel 3 mit
spctl --addeine harmlose Test-Binary freigeben und den Aufruf prüfen. - Breiter wird der Test mit den macOS-Fällen zu T1553.001 aus Atomic Red Team.
Fazit
Die Gatekeeper-Umgehung hängt an einem Attribut und einem Schalter: com.apple.quarantine, das mit xattr entfernt wird, und spctl, das die Bewertung schwächt. Beide Wege sind als Prozessaufruf im Endpoint Security Framework belastbar sichtbar, und das Attribut an der Datei ist das stabilste Artefakt. Die drei Regeln nehmen genau diese Aufrufe. Ehrlich bleibt die Grenze: Der programmatische Weg über removexattr() ist nur für eine ESF-auswertende EDR sichtbar, das bloße Fehlen eines Attributs ist kein Ereignis, und spctl ist auf neueren macOS eingeschränkt. Die wirksamste Härtung ist, Gatekeeper per MDM zu erzwingen und nur notarisierte Software zuzulassen. Die Grundlagen stehen unter macOS-Sicherheitsmonitoring; die übrigen Beiträge dieser macOS-Reihe behandeln die LaunchAgents- und LaunchDaemons-Persistenz, den AppleScript- und osascript-Missbrauch, den Keychain-Zugriff, die TCC-Manipulation und das Dylib-Hijacking.