
Estrattore di artefatti di log delle vulnerabilità Airborne di iOS da LogArchive CVE-2025-24252
Questo script è progettato per aiutare a identificare potenziali tracce del set di vulnerabilità "Airborne" (che colpiscono principalmente il protocollo AirPlay di Apple) interrogando i log di sistema iOS da un bundle .logarchive. Automatizza l'esecuzione di diversi comandi log show personalizzati per trovare anomalie che potrebbero essere associate a queste vulnerabilità.
Disclaimer: Questo strumento è esclusivamente a scopo informativo e investigativo. La presenza di voci di log corrispondenti a queste query non conferma in modo definitivo un compromesso. Le voci di log devono essere analizzate nel contesto. L'assenza di riscontri non garantisce che un dispositivo sia sicuro. Assicurati sempre che i tuoi dispositivi siano aggiornati alle ultime versioni del sistema operativo.
Questo script è stato sviluppato da Anton Shustikov ([email protected], ora CEO di CakeCats) come parte del progetto CakesCats.
CakesCats è un'iniziativa incentrata su:
Anton Shustikov è un consulente di sicurezza informatica e fintech con una vasta esperienza nella creazione di sistemi di sicurezza. È il fondatore del progetto educativo non commerciale CakesCats e contribuisce con articoli a pubblicazioni come Forbes e la rivista "Xakep". Il suo lavoro spesso riguarda l'indagine di minacce digitali e la promozione dell'igiene digitale.
"Airborne" è un nome dato a un insieme di vulnerabilità (scoperte da Oligo Security nella loro ricerca originale) che colpiscono il protocollo AirPlay di Apple e l'AirPlay Software Development Kit (SDK). Queste vulnerabilità possono avere un impatto su un'ampia gamma di dispositivi Apple (iPhone, iPad, Mac, Apple TV, ecc.) e dispositivi di terze parti che utilizzano l'SDK AirPlay (ad esempio, altoparlanti intelligenti, ricevitori).
Aspetti chiave delle vulnerabilità di tipo "Airborne":
rapportd che gestisce la comunicazione da dispositivo a dispositivo.Questo script esegue una serie di comandi log show utilizzando predicati accuratamente costruiti. Questi predicati sono progettati per filtrare la vasta quantità di informazioni nei log di sistema iOS e individuare potenziali indicatori di compromissione o attività anomale che potrebbero essere correlate a vulnerabilità di tipo "Airborne".
Lo script cerca:
mediaserverd, AirPlayXPCHelper, rapportd, mDNSResponder).L'output di ogni query viene salvato in un file di testo separato con nome descrittivo all'interno di una directory di risultati con timestamp, consentendo un'analisi mirata di diversi tipi di potenziali artefatti.
log show e questo script sono progettati per essere eseguiti su macOS..logarchive): È necessario un archivio di log di sistema iOS (un bundle, che tecnicamente è una directory) dal dispositivo che si intende analizzare. Può essere ottenuto tipicamente tramite:
sysdiagnose: Attiva un sysdiagnose sull'iPhone (di solito premendo contemporaneamente Volume Su + Volume Giù + Pulsante laterale, ma le combinazioni possono variare in base al modello e alla versione iOS). Dopo che sysdiagnose è stato generato (possono volerci diversi minuti), può essere inviato tramite AirDrop a un Mac o accessibile quando si sincronizza l'iPhone con un Mac (spesso presente in Finder nella posizione di sincronizzazione dell'iPhone all'interno di un file .tar.gz). Il .logarchive sarà all'interno del contenuto estratto di sysdiagnose.bash.Salva lo Script:
Salva il codice dello script (fornito sopra) come airborne_artifact_extractor.sh (o qualsiasi altro nome con estensione .sh).
Rendilo Eseguibile: Apri il Terminale, vai alla directory in cui hai salvato lo script ed esegui il seguente comando:
chmod +x airborne_artifact_extractor.sh
Controlla l'Attributo di Quarantena di macOS (Importante per script scaricati): Se hai scaricato questo script da Internet, macOS potrebbe metterlo in quarantena, impedendone l'esecuzione corretta o totale.
xattr airborne_artifact_extractor.sh
com.apple.quarantine, rimuovi questo attributo eseguendo:
xattr -d com.apple.quarantine airborne_artifact_extractor.sh
Se incontri ancora problemi nell'esecuzione dello script, specialmente se si trova in una directory come ~/Downloads, assicurati che il tuo Terminale abbia i permessi necessari (ad esempio "Accesso completo al disco" in Impostazioni di Sistema -> Privacy e Sicurezza) per accedere alla posizione dello script e all'archivio di log.
^M (ad esempio /bin/bash^M: bad interpreter: No such file or directory)Se incontri un errore come bash: ./nome_script.sh: /bin/bash^M: bad interpreter: No such file or directory, /usr/bin/env: ‘bash\r’: No such file or directory, o messaggi simili che coinvolgono caratteri \r o ^M durante l'esecuzione dello script, è probabile che sia dovuto a terminazioni di riga in stile Windows (CRLF - Carriage Return Line Feed) invece che in stile Unix (LF - Line Feed).
Questo accade di solito se il file script è stato creato o modificato su un sistema Windows e poi trasferito su macOS o Linux senza convertire le terminazioni di riga. I sistemi Unix si aspettano solo LF come terminatore di riga e il carattere CR extra (\r o ^M) viene interpretato erroneamente come parte del percorso dell'interprete o dei comandi.
Soluzione: Converti le Terminazioni di Riga con dos2unix
Il modo più semplice per risolvere è usare l'utilità dos2unix.
Installa dos2unix:
Su macOS (usando Homebrew): Se non hai Homebrew, installalo prima da brew.sh. Poi esegui:
brew install dos2unix
Su distribuzioni Linux basate su Debian/Ubuntu:
sudo apt update
sudo apt install dos2unix
Su distribuzioni Linux basate su Fedora/RHEL:
sudo dnf install dos2unix # (o yum per versioni precedenti)
Converti il file script:
Vai alla directory contenente airborne_artifact_extractor.sh ed esegui:
dos2unix airborne_artifact_extractor.sh
Questo comando convertirà le terminazioni di riga sul posto.
Soluzioni Alternative (se dos2unix non è disponibile/preferito):
Usando sed:
sed -i.bak 's/\r$//' airborne_artifact_extractor.sh
(Questo comando modifica il file sul posto e crea un backup airborne_artifact_extractor.sh.bak. Su alcune versioni di sed, specialmente su macOS, l'opzione -i richiede un'estensione per il file di backup, come -i '.bak' o -i '' per nessun backup se supportato. Per macOS, potresti aver bisogno di sed -i '' 's/\r//g' airborne_artifact_extractor.sh)
Usando tr:
tr -d '\r' < airborne_artifact_extractor.sh > airborne_artifact_extractor_unix.sh
chmod +x airborne_artifact_extractor_unix.sh
# Poi usa airborne_artifact_extractor_unix.sh
Editor di testo: La maggior parte degli editor di testo moderni (come VS Code, Sublime Text, Atom, Notepad++) permette di cambiare le terminazioni di riga. Apri il file script, trova l'impostazione per le terminazioni di riga (di solito nella barra di stato o nel menu File/Modifica) e cambiala da "CRLF" o "Windows" a "LF" o "Unix". Poi salva nuovamente il file.
Dopo aver convertito le terminazioni di riga, prova a eseguire di nuovo lo script. Ricorda anche di assicurarti che abbia i permessi di esecuzione (chmod +x airborne_artifact_extractor.sh).
Esegui lo script dal Terminale, fornendo il percorso al bundle .logarchive e parametri opzionali per l'intervallo di tempo:
./airborne_artifact_extractor.sh /percorso/al/tuo/iphone_logs.logarchive [parametri_intervallo_tempo]
Argomenti:
R1 (Obbligatorio): Il percorso completo o relativo al file/bundle .logarchive.
[parametri_intervallo_tempo] (Opzionale): Parametri standard di log show per l'intervallo di tempo. Se omessi, lo script analizzerà per impostazione predefinita gli ultimi --last 7d (7 giorni) di log.
Esempi:
--last 24h (per le ultime 24 ore)
--last 3d (per gli ultimi 3 giorni)
--start "AAAA-MM-GG HH:MM:SS" --end "AAAA-MM-GG HH:MM:SS" (per un intervallo di tempo specifico). Importante: assicurati che la stringa data-ora sia racchiusa tra virgolette.
Configurazione del fuso orario: Lo script include impostazioni del fuso orario all'inizio, che puoi modificare:
TZ_SETTING: Definisce il fuso orario utilizzato per interpretare gli argomenti --start e --end che fornisci. Ad esempio, se impostato su "Etc/GMT-7" (che corrisponde a UTC+7), e usi --start "2025-04-10 00:00:00", questo verrà trattato come mezzanotte del 10 aprile nel fuso orario UTC+7. Se vuoi che lo script usi il fuso orario locale corrente del tuo Mac per questi argomenti, puoi impostare TZ_SETTING="" o commentare quella riga.
TIMEZONE_DISPLAY: Specifica il fuso orario per la formattazione dei timestamp nei file di log di output tramite l'opzione log show --timezone. Esempio: "Asia/Bangkok" per UTC+7. Scegli un nome di fuso orario riconosciuto dal tuo sistema.
Esempi di comandi:
Analizza i log degli ultimi 7 giorni (comportamento predefinito):
Bash
./airborne_artifact_extractor.sh /Volumi/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
Analizza i log delle ultime 48 ore: Bash
./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
Analizza i log per un intervallo di data e ora specifico (le ore saranno interpretate secondo TZ_SETTING): Bash
./airborne_artifact_extractor.sh ../Archivi_Log/dispositivo_XYZ.logarchive --start "2025-04-05 00:00:00" --end "2025-04-06 23:59:59"
File di Output
Lo script creerà una nuova directory denominata airborne_traces_AAAAMMGG_HHMMSS (dove AAAAMMGG_HHMMSS è la data e ora correnti) nella stessa directory dello script (o nella directory di lavoro corrente se la directory dello script non è scrivibile). All'interno di questa cartella troverai diversi file .txt, ciascuno contenente l'output di una query specifica. I nomi dei file sono prefissati con numeri per l'ordinamento:
01_critical_process_errors.txt: Fault ed errori per processi critici.
02_process_termination_exceptions.txt: Terminazioni inaspettate o eccezioni in processi chiave.
03_kernel_panics.txt: Eventi di kernel panic.
04_airplay_subsystem_errors.txt: Errori e fault nel sottosistema AirPlay.
05_mdns_errors.txt: Errori e fault in mDNSResponder (Bonjour).
06_airplay_pairing_auth_failures.txt: Problemi con associazione, autenticazione o connessioni AirPlay/rapportd.
07_network_connection_errors.txt: Errori di connessione di rete da processi rilevanti.
08_networkd_errors.txt: Errori nel servizio di sistema networkd.
09_sandbox_violations.txt: Messaggi relativi a violazioni del sandbox.
10_profile_activity.txt: Attività legate ai profili di configurazione.
Interpretazione dei Risultati
I file vuoti sono comuni: un file di output vuoto significa che nessuna voce di log ha soddisfatto i criteri di quella query specifica per l'intervallo di tempo dato. In molti casi, questo è un buon segno, che indica l'assenza di particolari indicatori sospetti.
Concentrati su modelli e correlazioni: un singolo messaggio di errore isolato spesso non è indicativo di un compromesso. Cerca gruppi di errori, sequenze sospette di eventi tra diversi file di log, o errori che correlano con momenti in cui hai riscontrato un comportamento anomalo del dispositivo o stavi utilizzando servizi potenzialmente vulnerabili come AirPlay.
ECONNRESET nei log di rapportd (spesso in 06_... o 07_...): indicano terminazioni brusche della connessione TCP. Sebbene possano essere causati da problemi di rete benigni (Wi-Fi scarso, problemi del router), nel contesto dell'indagine sulle vulnerabilità "Airborne" meritano un esame più attento. Potrebbero significare instabilità causata da un tentativo di exploit sul tuo dispositivo o su un dispositivo peer, o interferenze di rete.
Crash (fault o panic) in mediaserverd, AirPlayXPCHelper (spesso in 01_..., 02_...), o kernel panic (03_...) sono generalmente forti indicatori di instabilità del sistema che potrebbe essere correlata a exploit se si verificano inaspettatamente o durante interazioni di rete mirate da "Airborne".
Il contesto è fondamentale: esamina sempre i risultati dei log insieme alla tua conoscenza di come il dispositivo veniva utilizzato in quel momento, l'ambiente di rete in cui si trovava e eventuali sintomi effettivi osservati.
Contributi
Sentiti libero di fare il fork di questo repository, suggerire miglioramenti, segnalare problemi o aggiungere query più specifiche che potrebbero essere utili per identificare tracce di tali vulnerabilità.