
Extractor de artefactos de registro de vulnerabilidades Airborne de iOS de LogArchive CVE-2025-24252
Este script está diseñado para ayudar a identificar posibles rastros del conjunto de vulnerabilidades "Airborne" (que afectan principalmente al protocolo AirPlay de Apple) consultando los registros del sistema iOS desde un archivo .logarchive. Automatiza la ejecución de varios comandos log show diseñados para encontrar anomalías que podrían estar asociadas con estas vulnerabilidades.
Descargo de responsabilidad: Esta herramienta es solo para fines informativos y de investigación. La presencia de entradas de registro que coincidan con estas consultas no confirma definitivamente un compromiso. Las entradas de registro deben analizarse en contexto. La ausencia de hallazgos no garantiza que un dispositivo sea seguro. Asegúrese siempre de que sus dispositivos estén actualizados a las últimas versiones del sistema operativo.
Este script fue desarrollado por Anton Shustikov ([email protected], ahora CEO de CakeCats) como parte del proyecto CakesCats.
CakesCats es una iniciativa centrada en:
Anton Shustikov es consultor de seguridad de la información y fintech con amplia experiencia en la creación de sistemas de seguridad. Es fundador del proyecto educativo no comercial CakesCats y contribuye con artículos en publicaciones como Forbes y la revista "Xakep". Su trabajo a menudo implica investigar amenazas digitales y promover la higiene digital.
"Airborne" es un nombre dado a un conjunto de vulnerabilidades (descubiertas por Oligo Security en su investigación original) que afectan al protocolo AirPlay de Apple y al kit de desarrollo de software (SDK) de AirPlay. Estas vulnerabilidades pueden afectar a una amplia gama de dispositivos Apple (iPhones, iPads, Macs, Apple TV, etc.) y dispositivos de terceros que utilizan el SDK de AirPlay (por ejemplo, altavoces inteligentes, receptores).
Aspectos clave de las vulnerabilidades tipo "Airborne":
rapportd, que maneja la comunicación entre dispositivos.Este script ejecuta una serie de comandos log show utilizando predicados cuidadosamente diseñados. Estos predicados están diseñados para filtrar la gran cantidad de información en los registros del sistema iOS para señalar posibles indicadores de compromiso o actividad anómala que podría estar relacionada con vulnerabilidades tipo "Airborne".
El script busca:
mediaserverd, AirPlayXPCHelper, rapportd, mDNSResponder).La salida de cada consulta se guarda en un archivo de texto separado con nombre descriptivo dentro de un directorio de resultados con marca de tiempo, lo que permite un análisis enfocado de diferentes tipos de posibles artefactos.
log show y este script están diseñados para ejecutarse en macOS..logarchive): Necesita un archivo de registro del sistema iOS (un paquete, que técnicamente es un directorio) del dispositivo que desea analizar. Esto se puede obtener típicamente a través de:
sysdiagnose: Active un sysdiagnose en el iPhone (generalmente presionando los botones de Subir volumen + Bajar volumen + Lateral simultáneamente, pero las combinaciones pueden variar según el modelo y la versión de iOS). Después de que se genere el sysdiagnose (puede tomar varios minutos), se puede enviar por AirDrop a una Mac o acceder a él al sincronizar el iPhone con una Mac (a menudo se encuentra en Finder bajo la ubicación de sincronización del iPhone dentro de un archivo .tar.gz). El .logarchive estará dentro del contenido extraído de sysdiagnose.bash.Guardar el script:
Guarde el código del script (proporcionado arriba) como airborne_artifact_extractor.sh (o cualquier otro nombre con extensión .sh).
Hacerlo ejecutable: Abra su aplicación Terminal, navegue al directorio donde guardó el script y ejecute el siguiente comando:
chmod +x airborne_artifact_extractor.sh
Verificar el atributo de cuarentena de macOS (Importante para scripts descargados): Si descargó este script de internet, macOS podría ponerlo en cuarentena, lo que puede impedir que se ejecute correctamente o incluso que se ejecute.
xattr airborne_artifact_extractor.sh
com.apple.quarantine, elimine este atributo ejecutando:
xattr -d com.apple.quarantine airborne_artifact_extractor.sh
Si aún encuentra problemas al ejecutar el script, especialmente si está ubicado en un directorio como ~/Downloads, asegúrese de que su aplicación Terminal tenga los permisos necesarios (por ejemplo, "Acceso completo al disco" en Ajustes del Sistema -> Privacidad y Seguridad) para acceder a la ubicación del script y al archivo de registro.
^M (por ejemplo, /bin/bash^M: bad interpreter: No such file or directory)Si encuentra un error como bash: ./nombre_de_tu_script.sh: /bin/bash^M: bad interpreter: No such file or directory, /usr/bin/env: ‘bash\r’: No such file or directory, o mensajes similares que involucren caracteres \r o ^M al intentar ejecutar el script, probablemente se deba a saltos de línea de estilo Windows (CRLF - Carriage Return Line Feed) en lugar de saltos de línea de estilo Unix (LF - Line Feed).
Esto suele ocurrir si el archivo del script fue creado o editado en un sistema Windows y luego transferido a macOS o Linux sin convertir los saltos de línea. Los sistemas Unix esperan solo LF como terminador de línea, y el carácter CR adicional (\r o ^M) se malinterpreta como parte de la ruta del intérprete o de los comandos.
Solución: Convertir saltos de línea con dos2unix
La forma más fácil de solucionarlo es usando la utilidad dos2unix.
Instalar dos2unix:
En macOS (usando Homebrew): Si no tiene Homebrew, instálelo primero desde brew.sh. Luego ejecute:
brew install dos2unix
En distribuciones Linux basadas en Debian/Ubuntu:
sudo apt update
sudo apt install dos2unix
En distribuciones Linux basadas en Fedora/RHEL:
sudo dnf install dos2unix # (o yum para versiones antiguas)
Convertir el archivo del script:
Navegue al directorio que contiene airborne_artifact_extractor.sh y ejecute:
dos2unix airborne_artifact_extractor.sh
Este comando convertirá los saltos de línea en el mismo archivo.
Soluciones alternativas (si dos2unix no está disponible o no es preferido):
Usando sed:
sed -i.bak 's/\r$//' airborne_artifact_extractor.sh
(Este comando modifica el archivo en el lugar y crea una copia de seguridad airborne_artifact_extractor.sh.bak. En algunas versiones de sed, especialmente en macOS, la opción -i requiere una extensión para el archivo de respaldo, como -i '.bak' o -i '' para no tener respaldo si es compatible. Para macOS, es posible que necesite 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
# Luego use airborne_artifact_extractor_unix.sh
Editores de texto: La mayoría de los editores de texto modernos (como VS Code, Sublime Text, Atom, Notepad++) permiten cambiar los saltos de línea. Abra el archivo del script, busque la configuración de saltos de línea (generalmente en la barra de estado o en el menú Archivo/Editar) y cámbiela de "CRLF" o "Windows" a "LF" o "Unix". Luego vuelva a guardar el archivo.
Después de convertir los saltos de línea, intente ejecutar el script nuevamente. Recuerde también asegurarse de que tenga permisos de ejecución (chmod +x airborne_artifact_extractor.sh).
Ejecute el script desde la Terminal, proporcionando la ruta al paquete .logarchive y parámetros opcionales de rango de tiempo:
./airborne_artifact_extractor.sh /ruta/a/tu/iphone_logs.logarchive [parámetros_rango_tiempo]
Argumentos:
R1 (Obligatorio): La ruta completa o relativa al archivo/paquete .logarchive.
[parámetros_rango_tiempo] (Opcional): Parámetros de rango de tiempo estándar de log show. Si se omiten, el script usará por defecto el análisis de los --last 7d (últimos 7 días) de registros.
Ejemplos:
--last 24h (para las últimas 24 horas)
--last 3d (para los últimos 3 días)
--start "AAAA-MM-DD HH:MM:SS" --end "AAAA-MM-DD HH:MM:SS" (para un rango de tiempo específico). Importante: Asegúrese de que la cadena de fecha y hora esté entre comillas.
Configuración de zona horaria: El script incluye configuraciones de zona horaria en la parte superior, que puede modificar:
TZ_SETTING: Define la zona horaria utilizada para interpretar los argumentos --start y --end que proporcione. Por ejemplo, si está configurado en "Etc/GMT-7" (que corresponde a UTC+7), y usa --start "2025-04-10 00:00:00", esto se tratará como medianoche del 10 de abril en la zona horaria UTC+7. Si desea que el script use la zona horaria local actual de su Mac para estos argumentos, puede establecer TZ_SETTING="" o comentar esa línea.
TIMEZONE_DISPLAY: Especifica la zona horaria para formatear las marcas de tiempo en los archivos de registro de salida a través de la opción log show --timezone. Ejemplo: "Asia/Bangkok" para UTC+7. Elija un nombre de zona horaria reconocido por su sistema.
Ejemplos de comandos:
Analizar registros de los últimos 7 días (comportamiento predeterminado):
Bash
./airborne_artifact_extractor.sh /Volumes/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
Analizar registros de las últimas 48 horas: Bash
./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
Analizar registros para un rango de fecha y hora específico (las horas se interpretarán según TZ_SETTING): Bash
./airborne_artifact_extractor.sh ../Log_Archives/device_XYZ.logarchive --start "2025-04-05 00:00:00" --end "2025-04-06 23:59:59"
El script creará un nuevo directorio llamado airborne_traces_AAAAMMDD_HHMMSS (donde AAAAMMDD_HHMMSS es la fecha y hora actuales) en el mismo directorio que el script (o en su directorio de trabajo actual si el directorio del script no es escribible). Dentro de esta carpeta, encontrará varios archivos .txt, cada uno conteniendo la salida de una consulta específica. Los nombres de archivo están prefijados con números para ordenarlos:
01_critical_process_errors.txt: Fallos y errores de procesos críticos.
02_process_termination_exceptions.txt: Terminaciones inesperadas o excepciones en procesos clave.
03_kernel_panics.txt: Eventos de pánico del kernel.
04_airplay_subsystem_errors.txt: Errores y fallos en el subsistema AirPlay.
05_mdns_errors.txt: Errores y fallos en mDNSResponder (Bonjour).
06_airplay_pairing_auth_failures.txt: Problemas con el emparejamiento, autenticación o conexiones de AirPlay/rapportd.
07_network_connection_errors.txt: Errores de conexión de red de procesos relevantes.
08_networkd_errors.txt: Errores en el servicio networkd del sistema.
09_sandbox_violations.txt: Mensajes relacionados con violaciones de sandbox.
10_profile_activity.txt: Actividad relacionada con perfiles de configuración.
Los archivos vacíos son comunes: Un archivo de salida vacío significa que ninguna entrada de registro coincidió con los criterios de esa consulta específica para el rango de tiempo dado. En muchos casos, esto es una buena señal, indicando la ausencia de esos indicadores sospechosos particulares.
Concéntrese en patrones y correlaciones: Un único mensaje de error aislado a menudo no es indicativo de un compromiso. Busque grupos de errores, secuencias sospechosas de eventos en diferentes archivos de registro, o errores que se correlacionen con momentos en que experimentó un comportamiento inusual del dispositivo o estaba utilizando servicios potencialmente vulnerables como AirPlay.
ECONNRESET en registros de rapportd (a menudo en 06_... o 07_...): Indican terminaciones abruptas de conexiones TCP. Si bien pueden ser causados por problemas de red benignos (Wi-Fi deficiente, problemas de enrutador), en el contexto de investigar vulnerabilidades "Airborne", merecen una inspección más cercana. Podrían significar inestabilidad causada por un intento de exploit en su dispositivo o en un dispositivo par, o interferencia de red.
Bloqueos (tipos fault o panic) en mediaserverd, AirPlayXPCHelper (a menudo en 01_..., 02_...), o pánicos del kernel (03_...) son generalmente indicadores fuertes de inestabilidad del sistema que podría estar relacionada con un exploit si ocurren inesperadamente o durante interacciones de red dirigidas por "Airborne".
El contexto es clave: Siempre revise los hallazgos del registro junto con su conocimiento de cómo se estaba usando el dispositivo en ese momento, el entorno de red en el que se encontraba y cualquier síntoma real observado.
Siéntase libre de bifurcar este repositorio, sugerir mejoras, reportar problemas o agregar consultas más específicas que podrían ser útiles para identificar rastros de tales vulnerabilidades.