Forschung unter der Leitung von Hu Ke und Nir Avraham.
Jamf Threat Labs hat eine nachträgliche Manipulationstechnik identifiziert, die alle visuellen Hinweise auf einen funktionierenden Lockdown-Modus liefert, ohne dass der Dienst normalerweise Schutzmaßnahmen implementiert. Beachten Sie, dass es sich hierbei nicht um einen Fehler im Lockdown-Modus oder eine iOS Schwachstelle an sich handelt, sondern um eine nachträgliche Manipulationstechnik, mit der Malware dem Benutzer/der Benutzerin optisch vorgaukelt, dass sich sein Telefon im Lockdown-Modus befindet. Diese Technik wurde bisher noch nicht in freier Wildbahn beobachtet und ist nur auf einem kompromittierten Gerät möglich.
Ziel dieser Untersuchung ist es, zu verdeutlichen, dass Benutzer*innen immer noch anfällig für Angriffe sein können, wenn sie sich nicht vollständig über die Funktionsweise und die Grenzen des Lockdown-Modus im Klaren sind. Auch wenn der Lockdown-Modus die Angriffsfläche auf einem iOS Gerät effektiv reduziert, ist es wichtig, daran zu denken, dass der Lockdown-Modus Malware nicht aufhält, wenn ein Gerät bereits kompromittiert ist. Der Lockdown-Modus funktioniert nicht wie eine Antiviren-Software, er erkennt keine bestehenden Infektionen und hat keinen Einfluss auf die Fähigkeit, ein bereits kompromittiertes Gerät auszuspionieren. Sie ist nur dann wirksam, wenn es darum geht, vor einem Angriff die Zahl der für einen Angreifer/eine Angreiferin verfügbaren Zugangspunkte zu verringern.
Das Bild auf der rechten Seite stammt aus einem Beitrag von Apple Newsroom.
In dieser Forschungsarbeit wird ein Szenario untersucht, in dem ein anfälliges Gerät von einem Angreifer/einer Angreiferin kompromittiert wird, der den Code zur Implementierung des gefälschten Abriegelungsmodus einschleust. Wenn ein Benutzer/eine Benutzerin des kompromittierten Geräts mit hohem Risiko (z. B. Journalist*innen, Regierungsbeamte, Führungskräfte) den Sperrmodus auslöst, löst er den Code des Angreifers/der Angreiferin aus, der die visuellen Hinweise des Sperrmodus implementiert, aber keine Änderungen an der Konfiguration des Geräts vornimmt.
Wurde Ihr Lockdown-Modus manipuliert?
Der Lockdown-Modus von Apple in iOS 16 ist eine nützliche Funktion für bestimmte Situationen, aber wenn Ihr Telefon bereits kompromittiert wurde, schützt Sie der Lockdown-Modus nicht mehr. Dieser Blog-Beitrag befasst sich mit unseren Untersuchungen zum gefälschten Abriegelungsmodus, aus denen hervorgeht, dass ein Hacker/eine Hackerin, der bereits in Ihr Gerät eingedrungen ist, dafür sorgen kann, dass der Abriegelungsmodus „umgangen” wird, wenn Sie seine Aktivierung auslösen.
Die Einführung des Lockdown-Modus
Apple führte den Lockdown-Modus im September 2022 als Reaktion auf die Zunahme der weltweiten Cyberangriffe ein. Wie unten dargestellt und laut der Threat Analysis Group (TAG) von Google, wurden in den Jahren 2021 und 2022 die meisten Zero-Day-Angriffe in freier Wildbahn entdeckt, seit die TAG Mitte 2014 mit der Verfolgung solcher Vorfälle begann. Eine der berüchtigtsten Spyware-Marken, Pegasus, kann das neueste iPhone infizieren, ohne dass eine Interaktion des Benutzers/der Benutzerin erforderlich ist - ein sogenannter Zero-Click-Angriff. Trotz der ständigen Bemühungen von Apple, seine Sicherheitsarchitektur in den letzten Jahren zu verbessern, haben die Betreiber von Pegasus eine bemerkenswerte Fähigkeit bewiesen, neue Schwachstellen zu entdecken und Zero-Click-Angriffe durchzuführen. Diese Situation löste bei den Nutzer*innen Besorgnis aus, sodass der Lockdown-Modus entwickelt wurde, um diesem wachsenden Trend entgegenzuwirken und die iPhone Nutzer*innen zu beruhigen.
Der Lockdown-Modus minimiert die Funktionen, auf die potenzielle Angreifer*innen aus der Ferne zugreifen können. Dieser Ansatz ist zwar einfach, aber robust, denn je weniger Code Sie preisgeben, desto weniger Code können Angreifer*innen nutzen, um Schwachstellen auszunutzen. Apple beschreibt den sogenannten Blockierungsmodus wie folgt:
DerLockdown-Modus ist ein optionaler, extremer Schutz, der für die wenigen Personen gedacht ist, die aufgrund ihrer Person oder ihrer Tätigkeit von einigen der raffiniertesten digitalen Bedrohungen betroffen sein könnten. Die meisten Menschen werden nie Ziel von Angriffen dieser Art.
Wenn der Sperrmodus aktiviert ist, funktioniert Ihr Gerät nicht wie gewohnt. Um die Angriffsfläche zu verkleinern, die von gezielter Spionage-Software ausgenutzt werden könnte, sind bestimmte Apps, Websites und Funktionen aus Sicherheitsgründen streng eingeschränkt, und einige Funktionen sind möglicherweise überhaupt nicht verfügbar.
Der Lockdown-Modus ist in iOS 16 oder höher, iPadOS 16 oder höher, watchOS 10 oder höher und macOS Ventura oder höher verfügbar. Zusätzliche Schutzmaßnahmen sind in iOS 17, iPadOS 17, watchOS 10 und macOS Sonoma verfügbar. Um einen vollständigen Schutz zu gewährleisten, sollten Sie Ihre Geräte auf die neueste Software aktualisieren, bevor Sie den Sperrmodus aktivieren.
Im Lockdown-Modus wird beispielsweise eine eingeschränkte Webbrowser-Engine für die Verwendung mit unverschlüsselten Portalen verwendet. Ein firmeneigenes Portal ist eine Webseite, die in der Regel angezeigt wird, wenn Sie eine Verbindung zu einem öffentlichen Wi-Fi-Netzwerk herstellen, und die häufig für Werbe- oder Authentifizierungszwecke verwendet wird. Die Web-Engine hinter unverschlüsselten Portalen unterliegt weiteren Beschränkungen, wobei eine wichtige Einschränkung die Deaktivierung der Just-In-Time (JIT)-JavaScript-Kompilierung aus Sicherheitsgründen ist. Diese Einschränkung gilt auch für den Abriegelungsmodus. Folglich hat sich gezeigt, dass die Verwendung des Lockdown-Modus bei Webapps zu einer Verringerung der Leistung und Reaktionsfähigkeit der JavaScript-Engine von bis zu 95 Prozent führt.
Wenn Sie den Sperrmodus aktivieren, wird die Unterstützung für bestimmte Dateiformate entfernt, vor allem, weil sie in der Vergangenheit missbraucht wurden. Außerdem werden Komfortfunktionen deaktiviert, z. B. werden keine Vorschauen von Links mehr angezeigt, die über Messages gesendet werden, gemeinsam genutzte Alben werden deaktiviert und die Installation von Konfigurationsprofilen und die Anmeldung bei Software zur Verwaltung mobiler Geräte (MDM) wird verhindert.
Die folgende Abbildung von blacktop auf GitHub zeigt, was der Lockdown-Modus deaktiviert.
Spulen wir ins Jahr 2023 vor - die Wirksamkeit des Lockdown-Modus hat sich gezeigt. Im September 2023 identifizierte CitizenLab eine aktiv ausgenutzte Zero-Click-Exploit-Kette mit der Bezeichnung BLASTPASS, die auf die neueste iOS 16-Version abzielte, die zu diesem Zeitpunkt verfügbar war. Sowohl CitizenLab als auch Apple haben bestätigt, dass die Aktivierung des Lockdown-Modus diesen speziellen Angriff verhindert. Zwar wurden keine weiteren Details bekannt gegeben, um potenziellen Missbrauch zu vermeiden, aber es ist wahrscheinlich, dass nun eine gewisse Benutzerinteraktion erforderlich ist, um den Angriff auszulösen, nachdem der Lockdown-Modus aktiviert wurde.
Einschränkungen des Lockdown-Modus
Der Lockdown-Modus hat sich zwar in bestimmten Szenarien als wirksam erwiesen, unsere Bewertung des Lockdown-Modus betont jedoch, dass er einen Angriff, der bereits auf dem Gerät initiiert wurde, nicht stoppen kann. iPhone Benutzer*innen sollten sich darüber im Klaren sein, dass die Aktivierung des Lockdown-Modus keinen Einfluss auf einen Trojaner hat, der bereits in das System eingedrungen ist, wenn ihr Gerät bereits infiziert wurde. Der Lockdown-Modus dient in erster Linie dazu, potenzielle Angriffsvektoren zu reduzieren, und nicht dazu, zusätzliche Sicherheitsmaßnahmen hinzuzufügen, um die Ausführung bösartiger Nutzdaten zu verhindern.
Im weiteren Verlauf des Artikels wird demonstriert, wie der Lockdown-Modus bei einem bereits infizierten iPhone manipuliert werden kann, um dem Benutzer/der Benutzerin ein falsches Gefühl der Sicherheit zu vermitteln.
Der Schalter
Wie unten gezeigt, beginnen wir mit der Untersuchung des Sperrmodus in der Einstellungen-App. Viele der Aktionen, die hinter den Kulissen ablaufen, sind für den Benutzer/die Benutzerin unsichtbar, mit Ausnahme des Neustarts. Wir haben im dyldcache nach dem String „lockdownMode” gesucht und festgestellt, dass ein Framework namens PrivacySettingsUI
zwei C-Funktionen mit den folgenden Namen implementiert hat:
bool isLockdownModeEnabled()
void setLockdownModeEnabled(bool)
In der Funktion void setLockdownModeEnabled(bool)
wird der boolesche Wert des Schlüssels LDMGlobalEnabled
über die NSUserDefaults API auf „Ja” konfiguriert. Durch die Überwachung von Dateiänderungsereignissen haben wir den Pfad dieser Datei gefunden: /var/mobile/Library/Preferences/.GlobalPreferences.plist
Dieser Einzelwert dient als primärer Indikator dafür, ob das System den Lockdown-Modus als aktiv betrachtet oder nicht. Durch manuelles Überschreiben der Standarddatenbank des Benutzers/der Benutzerin, indem dieser Wert auf „Ja” gesetzt wird, erreicht durch einen Befehl wie
[[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithBool: 1] forKey:@"LDMGlobalEnabled" inDomain: @"NSGlobalDomain"]
Dieser Befehl kann in fast jedem Prozess außerhalb der Sandbox ausgeführt werden. Änderungen können in den Rückgabewerten zahlreicher Funktionen beobachtet werden. Sie können diese Funktionen finden, indem Sie „grep -i lockdownMode'” im Dyldcache ausführen.
Einige wenige Funktionen, wie PUILockdownModeController
, erfordern die Initialisierung einer neuen Instanz, da das Lesen der Datei in der Initialisierungsmethode erfolgt. Nach dem Neustart dieser Prozesse liefern jedoch alle positive Ergebnisse, die den Sperrmodus für das gesamte Gerät aktivieren, und diese Anpassung wird ohne einen vollständigen Neustart des Geräts wirksam.
Dies bestätigt unsere Vermutung, dass der Lockdown-Modus ab iOS 16.5 weiterhin als Userspace-Artefakt funktioniert (der Kernel ist sich dessen nicht bewusst). Wir haben im Kernel von iOS 16.5 keine Code-Implementierung für den Lockdown-Modus gefunden. Ein Neustart des Systems ist zum Aktivieren oder Deaktivieren des Lockdown-Modus in diesem Stadium nicht erforderlich.
Aber das ist nur für den Moment. Unter Bezugnahme auf die Erkenntnisse aus der „Anatomie des Lockdown-Modus” von blacktop hat Apple seit iOS 17 den Lockdown-Modus auf die Kernel-Ebene gehoben. Es enthält nun einen eigenen Hintergrund-Daemon, zu finden unter /System/Library/PrivateFrameworks/LockdownMode.framework/lockdownmoded, und ein KEXT namens com.apple.driver.AppleLockdownMode
. Dieser strategische Schritt ist ein großer Schritt zur Verbesserung der Sicherheit, da Änderungen, die durch den Lockdown-Modus im Kernel vorgenommen werden, dank bestehender Sicherheitsvorkehrungen normalerweise nicht ohne einen Neustart des Systems rückgängig gemacht werden können.
Der Neustart wurde vereitelt
Zurück zum Thema Manipulation des Abriegelungsmodus: Unser Ziel in Bezug auf die Einstellungen-App ist es, den Abriegelungsmodus unwirksam zu machen und den Neustart des Systems durch einen Neustart im Benutzerbereich zu ersetzen. Diese Demonstration soll zeigen, wie Malware den Benutzer/die Benutzerin austricksen kann. Im Falle eines infizierten Telefons gibt es keine Sicherheitsvorkehrungen, die verhindern, dass die Malware im Hintergrund ausgeführt wird, unabhängig davon, ob der Benutzer/die Benutzerin den Abriegelungsmodus aktiviert oder nicht.
Wenn ein Benutzer/eine Benutzerin in der App „Einstellungen” den Lockdown-Modus aktiviert, wird die Methode -[PUILockdownModeController setLockdownModeGloballyEnabled:]
ausgelöst, und die darin enthaltene Abfolge von Ereignissen gibt einen klaren Überblick über die Funktionsweise des Lockdown-Modus. Es beginnt mit der Deaktivierung von freigegebenen Alben und Linkvorschauen, gefolgt von der Deaktivierung des Entwicklermodus und der Aktivierung des eingeschränkten USB-Modus. Die Profilinstallation wird ebenfalls deaktiviert, und der Schlüssel LDMGlobalEnabled
in der Standarddatenbank des Benutzers wird auf „YES” gesetzt, wobei die Änderungen synchronisiert werden. Innerhalb der Funktion _DaemonReady
wird CFNotificationCenterPostNotification()
aufgerufen, um WebKit-Prozesse über die Konfigurationsänderung zu informieren. Schließlich wird das Gerät neu gebootet.
Da -[PUILockdownModeController setLockdownModeGloballyEnabled:]
eine Objective-C-Methode ist, können Sie die method_exchangeImplementations
Method Hooking-Technik verwenden, um ihren Inhalt zu ersetzen. Was wir gemacht haben, ist ganz einfach: Immer wenn der Benutzer den Lockdown-Modus einschaltet, wird eine Datei mit dem Namen /fakelockdownmode_on als Indikator erstellt, und ein Neustart des Userspace wird eingeleitet. Wir haben auch andere Funktionen eingebunden, wie -[PUILockdownModeController lockdownModeEnabled]
, um Ergebnisse auf der Grundlage des Vorhandenseins dieser Datei zurückzugeben.
Auf diese Weise wurde das Gerät nicht wirklich neu gestartet, und unser injizierter Code konnte die anpassbare Kontrolle über den Lockdown-Modus behalten. Das bedeutet auch, dass selbst Malware ohne Persistenz dauerhaft ausgeführt werden und den Benutzer/die Benutzerin überwachen kann.
Gefälschter Lockdown-Modus in Safari
Zur weiteren Veranschaulichung der Manipulation des Lockdown-Modus haben wir Safari gewählt, eine der am häufigsten verwendeten Apps. Wenn ein Benutzer/eine Benutzerin mit Safari auf einer Website surft, sieht er ein auffälliges Etikett mit der Aufschrift „Lockdown aktiviert”. Diese Kennzeichnung dient als Indikator dafür, dass für die Darstellung der aktuellen Webseite eine eigene Portalversion der Web-Engine verwendet wird. Wenn aus irgendeinem Grund stattdessen die reguläre Web-Engine verwendet wird, zeigt Safari an prominenter Stelle „Lockdown Off” in roter, aufmerksamkeitsstarker Schrift an. Dieses Szenario tritt ein, wenn ein Benutzer/eine Benutzerin eine vertrauenswürdige Website besucht, eine Konfiguration, die in den Website-Einstellungen angepasst werden kann.
Safari verlässt sich vollständig auf eine einzige Funktion, +[WBSUIFeatureAvailability isLockdownModeEnabledForSafari]
, um den Status des Lockdown-Modus zu bestimmen. Indem wir diese Funktion mit einem Hook versehen, können wir dafür sorgen, dass diese Funktion in verschiedenen Szenarien die gewünschten Ergebnisse liefert. Wir können zum Beispiel festlegen, dass „Nein” zurückgegeben wird, wenn es darum geht, zu entscheiden, ob die Web-Engine des Captive Portals verwendet werden soll, und „Ja”, wenn es darum geht, das Erscheinungsbild von Elementen auf Oberflächenebene festzulegen, wie das Etikett „Lockdown bereit” in der Benutzeroberfläche.
Jetzt verhält sich Safari so, als ob alle Websites vertrauenswürdig sind, und wir müssen einige Schritte unternehmen, um die Kennzeichnung „Sperre aus” zu ändern. Um dies zu erreichen, suchen wir zunächst nach der Zeichenkette „Lockdown aus” und finden die Funktion WBSAnnotationStringForLockdownModeStatus
. Anhand des Backtrace sehen wir, dass sie von -[SFLockdownStatusBar _updateLabelWithLockdownStatus:]
, einer Objective-C-Methode, aufgerufen wurde, die sich bequem einhängen lässt. Wir ändern diese Funktion so, dass sie „Lockdown aktiviert” anzeigt, während sie normalerweise „Lockdown aus” anzeigen würde.
Demo-Video
In diesem Demonstrationsvideo aktiviert ein Benutzer/eine Benutzerin den Abriegelungsmodus in den Einstellungen. Obwohl das Gerät im Sperrmodus zu sein scheint, ist er in Wirklichkeit nicht aktiviert, da wir immer noch PDF-Dateien in Safari anzeigen können. Bei unserer Demonstration wurde auch eine von crypt.ee entwickelte Website verwendet, die mit technischen Mitteln den Status des Lockdown-Modus überprüft.
Jamf Executive Threat Protection kann ausgeklügelte Angriffe erkennen, um Ihre Benutzer*innen zu schützen.
Abonnieren Sie den Jamf Blog
Wir sorgen dafür, dass Apple Updates sowie Jamf Neuigkeiten direkt bei Ihnen im Postfach landen.
Um mehr darüber zu erfahren, wie wir Ihre Informationen sammeln, verwenden, offenlegen, übertragen und speichern, werfen Sie bitte einen Blick auf unsere Datenschutzbestimmungen.