Vorgetäuschter Flugmodus: Eine Manipulationsmethode für Mobilgeräte, um die Mobilfunkverbindung heimlich aufrechtzuerhalten

Jamf Threat Labs hat eine Persistenztechnik für iOS 16 entwickelt, die nach einem Exploit fälschlicherweise anzeigt, dass der Flugmodus aktiviert ist. In der Realität richtet der Cyberkriminelle nach erfolgreicher Ausnutzung einer Sicherheitslücke im Gerät einen künstlichen Flugmodus ein, der die Benutzeroberfläche so manipuliert, dass ein Flugmodussymbol angezeigt wird, und die Internetverbindung für alle Apps mit Ausnahme der Angreifer-App unterbricht. Dadurch kann der Angreifer auch dann auf das Gerät zugreifen, wenn der Benutzer glaubt, es sei offline. Diese Technik wurde bisher noch nicht in der Praxis beobachtet und ist nur auf einem bereits ausgenutzten oder jailbroken Gerät möglich.

March 27 2026 Von

Jamf Threat Labs

Forschung unter der Leitung von Hu Ke und Nir Avraham.

Wurde Ihr Flugmodus manipuliert?

Wie der Name schon sagt, ist der Flugmodus so konzipiert, dass die Passagiere ihr mobiles Gerät während des Fluges sicher nutzen können, indem sie die drahtlosen mobilen Funktionen abschalten, damit es nicht zu Interferenzen mit den Fluggeräten kommt.

Der Flugmodus wird jedoch nicht nur auf Reisen genutzt. Manche nutzen ihn, um den Akku zu schonen, andere wiederum, um sich von unserer stets vernetzten Welt abzukoppeln. Er wurde sogar als Meditationstechnik vorgeschlagen.

Für diejenigen, die unter Cyber-Paranoia und Technophobie leiden, kann es ein nützlicher psychologischer Trick sein, das Telefon in den Flugmodus zu versetzen, um innere Ruhe zu finden und das Gefühl von mehr Privatsphäre zu genießen.

Aber sollten Sie den Flugmodus wirklich dafür verwenden, Ihre Sicherheit und Ihre Privatsphäre zu schützen?

Heute werden wir uns mit der Technologie befassen, die dem Flugmodus von iOS zugrunde liegt, um einen Ansatz zu demonstrieren, der es einem böswilligen Akteur ermöglichen würde, eine mobile Netzwerkverbindung für eine Anwendung aufrechtzuerhalten, selbst wenn der Benutzer glaubt, den Flugmodus aktiviert zu haben.

Die Basis

Zuerst schauen wir uns einmal an, wie der Flugmodus funktioniert. Zwei Daemons sind für das Ein- und Ausschalten des Flugmodus zuständig. SpringBoard kümmert sich um Änderungen an der Benutzeroberfläche, und CommCenter ist für den Betrieb der zugrunde liegenden Netzwerkschnittstelle zuständig. Bitte beachten Sie, dass CommCenter auch für die Verwaltung der Funktion zuständig ist, mit der Benutzer:innen den „Mobilfunkdaten für bestimmte Apps blockieren“ können.

Wie Sie sehen, zeigt die Netzwerkschnittstelle pdp_ip0 (mobile Daten) unter normalen Bedingungen keine IPv4/IPv6-IP-Adressen mehr an, wenn der Benutzer den Flugmodus einschaltet. Das mobile Netzwerk ist abgeschaltet und kann nicht genutzt werden, zumindest auf der Benutzerebene.

Erstellen eines künstlichen Flugmodus

In diesem Abschnitt zeigen wir, wie wir einen künstlichen Flugmodus erstellt haben, bei dem die Änderungen an der Benutzeroberfläche beibehalten werden, während die Mobilfunkverbindung für eine ausgewählte Anwendung erhalten bleibt (in einem Angriffsszenario wäre dies die Malware des Angreifers, die er im Rahmen eines Geräte-Exploits installiert hat).

Erst einmal schauen wir uns die Konsolenprotokolle an Bitte beachten Sie, dass beim Einschalten des Flugmodus das früheste relevante Protokoll das folgende zu sein scheint: „#N User airplane mode preference changing from...“

Wir verwenden diese Zeichenfolge, um den Code zu finden, der im Disassembler darauf verweist. Es handelt sich um eine symbolfreie C++-Funktion, die hier zu finden ist:

In der Hoffnung, dass diese Funktion früh genug in der Aufrufkette zur Aktivierung des Flugmodus auftrat, konnten wir sie erfolgreich abfangen und durch eine leere Funktion ersetzen, die nichts ausführt. Das Ergebnis ist ein vorgetäuschter Flugmodus. Wenn der Benutzer nun den Flugmodus aktiviert, wird das Gerät nicht vom mobilen Netzwerk getrennt und das Gerät bleibt mit dem Internet verbunden.

Beibehaltung der erwarteten Benutzererfahrung

Damit ist so aussieht, als wäre der Flugmodus eingeschaltet, sind zusätzliche Änderungen an der Benutzeroberfläche erforderlich. Ein Beispiel dafür ist, das Mobilfunksymbol abzudunkeln und zu verhindern, dass der Benutzer damit interagieren kann.

Um dies zu erreichen, haben wir zwei Objective-C-Methoden eingebunden und ein Stück Code eingefügt, das das Mobilfunksymbol anpasst, um den gewünschten Effekt zu erzielen. -[SBStatusBarStateAggregator _noteAirplaneModeChanged] und -[CCUIModularControlCenterOverlayViewController _beginPresentationAnimated:interactive:]

Scheinbare Trennung der Internetverbindung

Nach dem Aktivieren des Flugmodus ohne WLAN-Verbindung würden die Benutzer:innen erwarten, dass beim Öffnen von Safari keine Verbindung mit dem Internet hergestellt wird. In der Regel erscheint ein Benachrichtigungsfenster, das den Benutzer auffordert, den Flugmodus auszuschalten. Um diesen Effekt zu erzielen, werden wir die oben erwähnte Funktion des CommsCenter nutzen, um den „Mobilfunkdaten für bestimmte Apps zu blockieren“, und tarnen dies mithilfe der unten aufgeführten Hook-Funktion als Flugmodus.

Die folgenden Screenshots zeigen links die gefälschte Benutzeroberfläche mit der Meldung, die normalerweise bei der Funktion „Mobilfunkdaten für bestimmte Apps blockieren“ erscheint, und rechts das Ergebnis der Anpassung des Benachrichtigungsfensters, sodass es wie die typische Meldung im Flugmodus aussieht.

Das Ersetzen des Benachrichtigungsfensters ist eine Sache, aber wie haben wir die Internetverbindung für Safari unterbrochen, ohne den Flugmodus zu aktivieren und das gesamte Gerät zu beeinträchtigen? Schließlich ist dies das wichtigste Anzeichen dafür, dass der Flugmodus aktiviert ist.

Wie funktioniert das Warnfenster „Mobilfunkdaten sind deaktiviert“?

Ähnlich wie bei der vorherigen Manipulation der Symbole haben wir festgestellt, dass der System-UI-Manager SpringBoard das Warnfenster aufruft, nachdem er vom CommCenter benachrichtigt wurde. Bei genauerer Betrachtung kamen wir zu dem Schluss, dass CommCenter vom Kernel über eine registrierte Beobachter-/Rückruffunktion benachrichtigt wurde.

CommCenter`CellularUsagePolicyController::createNEConfigurationStore_sync

-> NetworkExtension.framework`-[NEPathEventObserver initWithQueue:eventHandler:]

-> libnetwork.dylib`network_config_cellular_blocked_observer_create

Diese network_config_* Funktionen rufen intern socket()/ioctl() auf, um mit dem Kernel zu interagieren:

network_config_cellular_blocked_observer_create

-> network_config_policy_observer_create

-> __network_config_policy_observer_create_block_invoke

-> network_config_setup_policy_event_watcher

-> socket(32, 3, 1)

-> ioctl(...)

Wir haben `fsevents` genutzt und festgestellt, dass der CommCenter Daemon auch eine SQL-Datenbankdatei /private/var/wireless/Library/Databases/CellularUsage.db verwaltet. Diese Datenbank erfasst den Status des Mobilfunkzugangs für jede App.

Der Wert von „flags“ wird auf 8 gesetzt, wenn einer Anwendung der Zugriff auf Mobilfunkdaten verweigert wird. Dies ist nützlich, da wir aus dieser SQL-Datenbankdatei eine Liste von App-Bundle-IDs auslesen und deren voreingestellten Wert ermitteln können.

Mithilfe dieser Datenbank mit den IDs installierter App-Bundles können wir nun mithilfe des folgenden Codes den Zugriff einer App auf WLAN- oder Mobilfunkdaten gezielt blockieren oder zulassen. In Kombination mit den anderen oben beschriebenen Techniken scheint der vorgetäuschte Flugmodus nun genauso zu funktionieren wie der echte, außer dass die Trennung vom Internet nicht für Prozesse gilt, die keine Apps sind, wie z. B. ein Backdoor-Trojaner.

Jamf Mobile Forensics kann hochentwickelte Angriffe identifizieren, 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.