macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper ist eine Sicherheitsfunktion, die für Mac-Betriebssysteme entwickelt wurde und sicherstellt, dass Benutzer nur vertrauenswürdige Software auf ihren Systemen ausführen. Es funktioniert durch Validierung von Software, die ein Benutzer herunterlädt und von Quellen außerhalb des App Stores öffnen möchte, wie z. B. eine App, ein Plug-In oder ein Installationspaket.
Der Schlüsselmechanismus von Gatekeeper liegt in seinem Überprüfungsprozess. Es überprüft, ob die heruntergeladene Software von einem anerkannten Entwickler signiert ist, um die Echtheit der Software zu gewährleisten. Darüber hinaus stellt es fest, ob die Software von Apple notariell beglaubigt ist, was bestätigt, dass sie frei von bekannten bösartigen Inhalten ist und nach der Beglaubigung nicht manipuliert wurde.
Zusätzlich stärkt Gatekeeper die Benutzerkontrolle und Sicherheit, indem es Benutzer auffordert, die Öffnung heruntergeladener Software beim ersten Mal zu genehmigen. Dieser Schutzmechanismus hilft dabei, zu verhindern, dass Benutzer versehentlich potenziell schädlichen ausführbaren Code ausführen, den sie möglicherweise für eine harmlose Datei gehalten haben.
Anwendungssignaturen
Anwendungssignaturen, auch als Codesignaturen bekannt, sind ein wesentlicher Bestandteil der Sicherheitsinfrastruktur von Apple. Sie werden verwendet, um die Identität des Softwareautors (des Entwicklers) zu überprüfen und sicherzustellen, dass der Code seit der letzten Signierung nicht manipuliert wurde.
So funktioniert es:
Signieren der Anwendung: Wenn ein Entwickler bereit ist, seine Anwendung zu verteilen, signiert er die Anwendung mit einem privaten Schlüssel. Dieser private Schlüssel ist mit einem Zertifikat verbunden, das Apple dem Entwickler ausstellt, wenn er am Apple Developer Program teilnimmt. Der Signierungsprozess umfasst die Erstellung eines kryptografischen Hashes aller Teile der App und die Verschlüsselung dieses Hashes mit dem privaten Schlüssel des Entwicklers.
Verteilen der Anwendung: Die signierte Anwendung wird dann zusammen mit dem Zertifikat des Entwicklers an die Benutzer verteilt, das den entsprechenden öffentlichen Schlüssel enthält.
Überprüfen der Anwendung: Wenn ein Benutzer die Anwendung herunterlädt und ausführen möchte, verwendet sein Mac-Betriebssystem den öffentlichen Schlüssel aus dem Zertifikat des Entwicklers, um den Hash zu entschlüsseln. Anschließend berechnet es den Hash basierend auf dem aktuellen Zustand der Anwendung neu und vergleicht diesen mit dem entschlüsselten Hash. Wenn sie übereinstimmen, bedeutet dies, dass die Anwendung seit der Signierung durch den Entwickler nicht geändert wurde, und das System erlaubt die Ausführung der Anwendung.
Anwendungssignaturen sind ein wesentlicher Bestandteil der Gatekeeper-Technologie von Apple. Wenn ein Benutzer versucht, eine Anwendung aus dem Internet herunterzuladen, überprüft Gatekeeper die Anwendungssignatur. Wenn sie mit einem von Apple an einen bekannten Entwickler ausgestellten Zertifikat signiert ist und der Code nicht manipuliert wurde, erlaubt Gatekeeper die Ausführung der Anwendung. Andernfalls blockiert es die Anwendung und benachrichtigt den Benutzer.
Ab macOS Catalina überprüft Gatekeeper auch, ob die Anwendung von Apple notariell beglaubigt wurde, was eine zusätzliche Sicherheitsebene hinzufügt. Der Notarisierungsprozess überprüft die Anwendung auf bekannte Sicherheitsprobleme und bösartigen Code, und wenn diese Überprüfungen bestanden werden, fügt Apple der Anwendung ein Ticket hinzu, das Gatekeeper überprüfen kann.
Überprüfen von Signaturen
Beim Überprüfen eines Malware-Beispiels sollten Sie immer die Signatur des Binärprogramms überprüfen, da der Entwickler, der es signiert hat, möglicherweise bereits mit Malware in Verbindung steht.
Notarisierung
Apples Notarisierungsprozess dient als zusätzliche Sicherheitsmaßnahme zum Schutz der Benutzer vor potenziell schädlicher Software. Dabei muss der Entwickler seine Anwendung zur Prüfung durch den Apple Notary Service einreichen, der nicht mit der App-Überprüfung verwechselt werden sollte. Dieser Service ist ein automatisiertes System, das die eingereichte Software auf das Vorhandensein von bösartigem Inhalt und mögliche Probleme mit der Code-Signierung überprüft.
Wenn die Software diese Prüfung besteht, ohne Bedenken zu erwecken, generiert der Notary Service ein Notarisierungsticket. Der Entwickler muss dieses Ticket dann an seine Software anheften, ein Vorgang, der als 'Heften' bekannt ist. Darüber hinaus wird das Notarisierungsticket auch online veröffentlicht, wo Gatekeeper, Apples Sicherheitstechnologie, darauf zugreifen kann.
Bei der ersten Installation oder Ausführung der Software durch den Benutzer informiert die Existenz des Notarisierungstickets - ob es an die ausführbare Datei geheftet ist oder online gefunden wird - Gatekeeper darüber, dass die Software von Apple notarisiert wurde. Als Ergebnis zeigt Gatekeeper eine beschreibende Nachricht im Dialogfeld des ersten Starts an, die darauf hinweist, dass die Software von Apple auf bösartigen Inhalt überprüft wurde. Dieser Prozess steigert das Vertrauen der Benutzer in die Sicherheit der Software, die sie auf ihren Systemen installieren oder ausführen.
Aufzählung von GateKeeper
GateKeeper ist sowohl mehrere Sicherheitskomponenten, die das Ausführen nicht vertrauenswürdiger Apps verhindern, als auch eine der Komponenten.
Es ist möglich, den Status von GateKeeper mit:
Beachten Sie, dass GateKeeper-Signaturprüfungen nur für Dateien mit dem Quarantäne-Attribut durchgeführt werden, nicht für jede Datei.
GateKeeper überprüft, ob gemäß den Einstellungen & der Signatur ein Binärprogramm ausgeführt werden kann:
Die Datenbank, die diese Konfiguration enthält, befindet sich in /var/db/SystemPolicy
. Sie können diese Datenbank als Root-Benutzer mit dem folgenden Befehl überprüfen:
Beachten Sie, wie die erste Regel in "App Store" endete und die zweite in "Developer ID" und dass in dem zuvor abgebildeten Bild die Ausführung von Apps aus dem App Store und von identifizierten Entwicklern aktiviert war. Wenn Sie diese Einstellung auf App Store ändern, werden die Regeln für "Notarized Developer ID" verschwinden.
Es gibt auch Tausende von Regeln vom Typ GKE:
Das sind Hashes, die aus /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
und /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
stammen
Oder Sie könnten die vorherigen Informationen auflisten mit:
Die Optionen --master-disable
und --global-disable
von spctl
deaktivieren vollständig diese Signaturprüfungen:
Wenn vollständig aktiviert, wird eine neue Option angezeigt:
Es ist möglich zu überprüfen, ob eine App von GateKeeper zugelassen wird mit:
Es ist möglich, neue Regeln in GateKeeper hinzuzufügen, um die Ausführung bestimmter Apps zu erlauben:
Dateien in Quarantäne
Beim Herunterladen einer Anwendung oder Datei fügen bestimmte macOS-Anwendungen wie Webbrowser oder E-Mail-Clients der heruntergeladenen Datei ein erweitertes Dateiattribut hinzu, das allgemein als "Quarantäne-Flagge" bekannt ist. Dieses Attribut dient als Sicherheitsmaßnahme, um die Datei als aus einer nicht vertrauenswürdigen Quelle (dem Internet) stammend und möglicherweise Risiken tragend zu kennzeichnen. Nicht alle Anwendungen fügen jedoch dieses Attribut hinzu, beispielsweise umgeht gängige BitTorrent-Client-Software diesen Prozess in der Regel.
Das Vorhandensein eines Quarantäne-Flags signalisiert die Gatekeeper-Sicherheitsfunktion von macOS, wenn ein Benutzer versucht, die Datei auszuführen.
Wenn das Quarantäne-Flag nicht vorhanden ist (wie bei Dateien, die über einige BitTorrent-Clients heruntergeladen wurden), können die Überprüfungen des Gatekeepers möglicherweise nicht durchgeführt werden. Daher sollten Benutzer Vorsicht walten lassen, wenn sie Dateien aus weniger sicheren oder unbekannten Quellen öffnen.
Die Überprüfung der Gültigkeit von Codesignaturen ist ein ressourcenintensiver Prozess, der das Generieren kryptografischer Hashes des Codes und aller seiner gebündelten Ressourcen umfasst. Darüber hinaus beinhaltet die Überprüfung der Zertifikatsgültigkeit eine Online-Überprüfung bei den Servern von Apple, um festzustellen, ob es nach der Ausstellung widerrufen wurde. Aus diesen Gründen ist eine vollständige Überprüfung der Codesignatur und Notarisierung nicht praktikabel, um jedes Mal auszuführen, wenn eine App gestartet wird.
Daher werden diese Überprüfungen nur durchgeführt, wenn Apps mit dem quarantäne-Attribut ausgeführt werden.
Dieses Attribut muss von der Anwendung, die die Datei erstellt/herunterlädt, festgelegt werden.
Dateien, die in einer Sandbox ausgeführt werden, haben dieses Attribut für jede von ihnen erstellte Datei festgelegt. Und nicht in einer Sandbox ausgeführte Apps können es selbst festlegen oder den LSFileQuarantineEnabled Schlüssel in der Info.plist angeben, was dazu führt, dass das System das erweiterte Attribut com.apple.quarantine
für die erstellten Dateien festlegt.
Darüber hinaus werden alle Dateien, die von einem Prozess erstellt werden, der qtn_proc_apply_to_self
aufruft, unter Quarantäne gestellt. Oder die API qtn_file_apply_to_path
fügt dem angegebenen Dateipfad das Quarantäneattribut hinzu.
Es ist möglich, den Status zu überprüfen und zu aktivieren/deaktivieren (Root-Berechtigung erforderlich) mit:
Du kannst auch feststellen, ob eine Datei das erweiterte Quarantäne-Attribut hat mit:
Überprüfen Sie den Wert der erweiterten Attribute und finden Sie die App heraus, die das Quarantäne-Attribut geschrieben hat:
Tatsächlich könnte ein Prozess "Quarantäne-Flags für die von ihm erstellten Dateien setzen" (ich habe versucht, das USER_APPROVED-Flag auf eine erstellte Datei anzuwenden, aber es wird nicht angewendet):
Last updated