
Log-Artefakt-Extraktor für iOS-Airborne-Schwachstellen aus LogArchive CVE-2025-24252
Dieses Skript soll dabei helfen, potenzielle Spuren der „Airborne"-Schwachstellengruppe (die in erster Linie Apples AirPlay-Protokoll betrifft) zu identifizieren, indem es iOS-Systemprotokolle aus einem .logarchive-Bundle durchsucht. Es automatisiert die Ausführung mehrerer log show-Befehle, die darauf zugeschnitten sind, Anomalien zu finden, die mit diesen Schwachstellen in Verbindung stehen könnten.
Haftungsausschluss: Dieses Tool dient ausschließlich Informations- und Untersuchungszwecken. Das Vorhandensein von Protokolleinträgen, die diesen Abfragen entsprechen, bestätigt eine Kompromittierung nicht endgültig. Protokolleinträge sollten im Kontext analysiert werden. Das Fehlen von Ergebnissen garantiert nicht, dass ein Gerät sicher ist. Stellen Sie stets sicher, dass Ihre Geräte auf die neuesten Betriebssystemversionen aktualisiert sind.
Dieses Skript wurde von Anton Shustikov [email protected] (heute CEO von CakesCats) als Teil des CakesCats-Projekts entwickelt.
CakesCats ist eine Initiative, die sich auf Folgendes konzentriert:
Anton Shustikov ist ein Berater für Informationssicherheit und Fintech mit umfangreicher Erfahrung in der Entwicklung von Sicherheitssystemen. Er ist der Gründer des nichtkommerziellen Bildungsprojekts CakesCats und verfasst Artikel für Publikationen wie Forbes und das Magazin „Xakep". Seine Arbeit umfasst häufig die Untersuchung digitaler Bedrohungen und die Förderung digitaler Hygiene.
„Airborne" ist eine Bezeichnung für eine Gruppe von Schwachstellen (entdeckt von Oligo Security in ihrer ursprünglichen Forschung), die Apples AirPlay-Protokoll und das AirPlay-Software-Development-Kit (SDK) betreffen. Diese Schwachstellen können eine Vielzahl von Apple-Geräten (iPhones, iPads, Macs, Apple TV usw.) sowie Drittanbieter-Geräte, die das AirPlay-SDK verwenden (z. B. Smart-Lautsprecher, Receiver), beeinträchtigen.
Wesentliche Aspekte von Schwachstellen vom Typ „Airborne":
rapportd, das die Kommunikation zwischen Geräten abwickelt.Dieses Skript führt eine Reihe von log show-Befehlen mit sorgfältig ausgearbeiteten Prädikaten aus. Diese Prädikate sollen die große Menge an Informationen in den iOS-Systemprotokollen filtern, um potenzielle Indikatoren einer Kompromittierung oder anomale Aktivitäten zu identifizieren, die möglicherweise mit Schwachstellen vom Typ „Airborne" zusammenhängen.
Das Skript sucht nach:
mediaserverd, AirPlayXPCHelper, rapportd, mDNSResponder).Die Ausgabe jeder Abfrage wird in einer separaten, beschreibend benannten Textdatei innerhalb eines mit Zeitstempel versehenen Ergebnisverzeichnisses gespeichert, was eine gezielte Analyse verschiedener Arten potenzieller Artefakte ermöglicht.
log show und dieses Skript sind für die Ausführung auf macOS vorgesehen..logarchive): Sie benötigen ein iOS-Systemprotokollarchiv (ein Bundle, das technisch gesehen ein Verzeichnis ist) von dem Gerät, das Sie analysieren möchten. Dieses kann in der Regel auf folgende Weise bezogen werden:
sysdiagnose: Lösen Sie auf dem iPhone ein sysdiagnose aus (normalerweise durch gleichzeitiges Drücken von Lauter-Taste + Leiser-Taste + Seitentaste; die Tastenkombinationen können jedoch je nach Modell und iOS-Version variieren). Nachdem das sysdiagnose erstellt wurde (das kann mehrere Minuten dauern), kann es per AirDrop an einen Mac übertragen oder beim Synchronisieren des iPhones mit einem Mac aufgerufen werden (oft in Finder unter dem Synchronisierungsort des iPhones innerhalb einer .tar.gz-Datei zu finden). Das .logarchive befindet sich im extrahierten Inhalt des sysdiagnose.bash geschrieben.Skript speichern:
Speichern Sie den Skriptcode (oben bereitgestellt) als airborne_artifact_extractor.sh (oder unter einem anderen Namen mit der Erweiterung .sh).
Ausführbar machen: Öffnen Sie Ihre Terminal-App, navigieren Sie zu dem Verzeichnis, in dem Sie das Skript gespeichert haben, und führen Sie den folgenden Befehl aus:
chmod +x airborne_artifact_extractor.sh
macOS-Quarantäne-Attribut prüfen (wichtig bei heruntergeladenen Skripten): Wenn Sie dieses Skript aus dem Internet heruntergeladen haben, könnte macOS es unter Quarantäne stellen, was verhindern kann, dass es korrekt oder überhaupt ausgeführt wird.
xattr airborne_artifact_extractor.sh
com.apple.quarantine enthält, entfernen Sie dieses Attribut mit folgendem Befehl:
xattr -d com.apple.quarantine airborne_artifact_extractor.sh
Wenn beim Ausführen des Skripts weiterhin Probleme auftreten, insbesondere wenn es sich in einem Verzeichnis wie ~/Downloads befindet, stellen Sie sicher, dass Ihre Terminal-App über die erforderlichen Berechtigungen verfügt (z. B. „Voller Festplattenzugriff" in Systemeinstellungen -> Datenschutz & Sicherheit), um auf den Speicherort des Skripts und das Protokollarchiv zuzugreifen.
^M-Fehler (z. B. /bin/bash^M: bad interpreter: No such file or directory)Wenn beim Versuch, das Skript auszuführen, ein Fehler wie bash: ./your_script_name.sh: /bin/bash^M: bad interpreter: No such file or directory, /usr/bin/env: ‘bash\r’: No such file or directory oder ähnliche Meldungen mit \r- oder ^M-Zeichen auftritt, liegt dies wahrscheinlich an Windows-Zeilenenden (CRLF - Carriage Return Line Feed) anstelle von Unix-Zeilenenden (LF - Line Feed).
Dies geschieht normalerweise, wenn die Skriptdatei auf einem Windows-System erstellt oder bearbeitet und dann ohne Konvertierung der Zeilenenden auf macOS oder Linux übertragen wurde. Unix-Systeme erwarten nur LF als Zeilenabschluss, und das zusätzliche CR-Zeichen (\r oder ^M) wird fälschlicherweise als Teil des Interpreterpfads oder der Befehle interpretiert.
Lösung: Zeilenenden mit dos2unix konvertieren
Der einfachste Weg, dies zu beheben, ist die Verwendung des Dienstprogramms dos2unix.
dos2unix installieren:
Auf macOS (mit Homebrew): Wenn Sie Homebrew nicht haben, installieren Sie es zuerst von brew.sh. Führen Sie dann Folgendes aus:
brew install dos2unix
Auf Debian/Ubuntu-basierten Linux-Distributionen:
sudo apt update
sudo apt install dos2unix
Auf Fedora/RHEL-basierten Linux-Distributionen:
sudo dnf install dos2unix # (or yum for older versions)
Skriptdatei konvertieren:
Navigieren Sie zu dem Verzeichnis, das airborne_artifact_extractor.sh enthält, und führen Sie Folgendes aus:
dos2unix airborne_artifact_extractor.sh
Dieser Befehl konvertiert die Zeilenenden in-place.
Alternative Lösungen (falls dos2unix nicht verfügbar/bevorzugt):
Mit sed:
sed -i.bak 's/\r$//' airborne_artifact_extractor.sh
(Dieser Befehl ändert die Datei direkt und erstellt eine Sicherungskopie airborne_artifact_extractor.sh.bak. Bei einigen sed-Versionen, insbesondere unter macOS, erfordert die Option -i eine Angabe für die Sicherungsdatei, z. B. -i '.bak' oder -i '' für keine Sicherung, sofern unterstützt. Unter macOS benötigen Sie möglicherweise sed -i '' 's/\r//g' airborne_artifact_extractor.sh)
Mit tr:
tr -d '\r' < airborne_artifact_extractor.sh > airborne_artifact_extractor_unix.sh
chmod +x airborne_artifact_extractor_unix.sh
# Then use airborne_artifact_extractor_unix.sh
Texteditoren: Die meisten modernen Texteditoren (wie VS Code, Sublime Text, Atom, Notepad++) ermöglichen es Ihnen, die Zeilenenden zu ändern. Öffnen Sie die Skriptdatei, suchen Sie die Einstellung für die Zeilenenden (normalerweise in der Statusleiste oder im Menü Datei/Bearbeiten) und ändern Sie sie von „CRLF" oder „Windows" auf „LF" oder „Unix". Speichern Sie die Datei dann erneut.
Nachdem Sie die Zeilenenden konvertiert haben, versuchen Sie, das Skript erneut auszuführen. Denken Sie auch daran, sicherzustellen, dass es über Ausführungsberechtigungen verfügt (chmod +x airborne_artifact_extractor.sh).
Führen Sie das Skript über das Terminal aus und geben Sie dabei den Pfad zum .logarchive-Bundle sowie optionale Zeitraumparameter an:
./airborne_artifact_extractor.sh /path/to/your/iphone_logs.logarchive [time_range_parameters]
Argumente:
R1 (erforderlich): Der vollständige oder relative Pfad zur .logarchive-Datei/zum .logarchive-Bundle.
[time_range_parameters] (optional): Standard-Zeitraumparameter für log show. Wenn diese ausgelassen werden, analysiert das Skript standardmäßig die Protokolle der --last 7d (letzten 7 Tage).
Beispiele:
--last 24h (für die letzten 24 Stunden)
--last 3d (für die letzten 3 Tage)
--start "YYYY-MM-DD HH:MM:SS" --end "YYYY-MM-DD HH:MM:SS" (für einen bestimmten Zeitraum). Wichtig: Stellen Sie sicher, dass die Datums-/Uhrzeitangabe in Anführungszeichen gesetzt ist.
Zeitzonenkonfiguration: Das Skript enthält oben Zeitzoneneinstellungen, die Sie ändern können:
TZ_SETTING: Definiert die Zeitzone, die zur Interpretation der von Ihnen angegebenen Argumente --start und --end verwendet wird. Wenn z. B. "Etc/GMT-7" (entspricht UTC+7) gesetzt ist und Sie --start "2025-04-10 00:00:00" verwenden, wird dies als Mitternacht am 10. April in der Zeitzone UTC+7 behandelt. Wenn das Skript für diese Argumente die aktuelle lokale Zeitzone Ihres Macs verwenden soll, können Sie TZ_SETTING="" setzen oder diese Zeile auskommentieren.
TIMEZONE_DISPLAY: Gibt die Zeitzone für die Formatierung der Zeitstempel in den Ausgabeprotokolldateien über die Option log show --timezone an. Beispiel: "Asia/Bangkok" für UTC+7. Wählen Sie einen von Ihrem System erkannten Zeitzonennamen.
Befehlsbeispiele:
Analysieren Sie die Protokolle der letzten 7 Tage (Standardverhalten):
Bash
./airborne_artifact_extractor.sh /Volumes/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
Analysieren Sie die Protokolle der letzten 48 Stunden: Bash
./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
Analysieren Sie die Protokolle für einen bestimmten Datums- und Zeitraum (die Uhrzeiten werden gemäß TZ_SETTING interpretiert): Bash
./airborne_artifact_extractor.sh ../Log_Archives/device_XYZ.logarchive --start "2025-04-05 00:00:00" --end "2025-04-06 23:59:59"
Das Skript erstellt ein neues Verzeichnis mit dem Namen airborne_traces_YYYYMMDD_HHMMSS (wobei YYYYMMDD_HHMMSS das aktuelle Datum und die aktuelle Uhrzeit ist) im selben Verzeichnis wie das Skript (oder in Ihrem aktuellen Arbeitsverzeichnis, falls das Skriptverzeichnis nicht beschreibbar ist). In diesem Ordner finden Sie mehrere .txt-Dateien, die jeweils die Ausgabe einer bestimmten Abfrage enthalten. Die Dateinamen sind zur Sortierung mit Nummern versehen:
01_critical_process_errors.txt: Fehler und Störungen kritischer Prozesse.
02_process_termination_exceptions.txt: Unerwartete Beendigungen oder Ausnahmen in Schlüsselprozessen.
03_kernel_panics.txt: Kernel-Panic-Ereignisse.
04_airplay_subsystem_errors.txt: Fehler und Störungen im AirPlay-Subsystem.
05_mdns_errors.txt: Fehler und Störungen in mDNSResponder (Bonjour).
06_airplay_pairing_auth_failures.txt: Probleme mit AirPlay-/rapportd-Pairing, Authentifizierung oder Verbindungen.
07_network_connection_errors.txt: Netzwerkverbindungsfehler relevanter Prozesse.
08_networkd_errors.txt: Fehler im systemweiten networkd-Dienst.
09_sandbox_violations.txt: Meldungen im Zusammenhang mit Sandbox-Verletzungen.
10_profile_activity.txt: Aktivitäten im Zusammenhang mit Konfigurationsprofilen.
Leere Dateien sind üblich: Eine leere Ausgabedatei bedeutet, dass für den angegebenen Zeitraum keine Protokolleinträge die Kriterien der jeweiligen Abfrage erfüllt haben. In vielen Fällen ist das ein gutes Zeichen und weist auf das Fehlen dieser bestimmten verdächtigen Indikatoren hin.
Konzentrieren Sie sich auf Muster und Korrelationen: Eine einzelne isolierte Fehlermeldung ist oft kein Hinweis auf eine Kompromittierung. Achten Sie auf Fehlerhäufungen, verdächtige Ereignisabfolgen in verschiedenen Protokolldateien oder Fehler, die mit Zeitpunkten korrelieren, zu denen Sie ungewöhnliches Geräteverhalten beobachtet haben oder potenziell verwundbare Dienste wie AirPlay verwendet haben.
ECONNRESET in rapportd-Protokollen (häufig in 06_... oder 07_...): Diese weisen auf abrupte TCP-Verbindungsabbrüche hin. Auch wenn sie durch harmlose Netzwerkprobleme (schlechtes WLAN, Router-Probleme) verursacht werden können, verdienen sie im Zusammenhang mit der Untersuchung von „Airborne"-Schwachstellen eine genauere Betrachtung. Sie könnten auf Instabilität hindeuten, die durch einen versuchten Exploit auf Ihrem Gerät oder einem anderen Gerät verursacht wurde, oder auf Netzwerkstörungen.
Abstürze (Fehler- oder Panic-Typen) in mediaserverd, AirPlayXPCHelper (häufig in 01_..., 02_...) oder Kernel-Panics (03_...) sind im Allgemeinen starke Indikatoren für Systeminstabilität, die mit Exploits zusammenhängen könnte, wenn sie unerwartet oder während von „Airborne" ins Visier genommener Netzwerkinteraktionen auftreten.
Kontext ist entscheidend: Überprüfen Sie die Protokollbefunde stets im Zusammenhang mit Ihrem Wissen darüber, wie das Gerät zu diesem Zeitpunkt verwendet wurde, in welcher Netzwerkumgebung es sich befand, und mit allen tatsächlich beobachteten Symptomen.
Sie können dieses Repository gerne forken, Verbesserungen vorschlagen, Probleme melden oder spezifischere Abfragen hinzufügen, die bei der Identifizierung von Spuren solcher Schwachstellen hilfreich sein könnten.