
Extrator de artefatos de log para vulnerabilidades Airborne em iOS a partir do LogArchive CVE-2025-24252
Este script foi projetado para ajudar a identificar possíveis vestígios do conjunto de vulnerabilidades "Airborne" (que afetam principalmente o protocolo AirPlay da Apple) consultando os logs do sistema iOS de um pacote .logarchive. Ele automatiza a execução de vários comandos log show adaptados para encontrar anomalias que poderiam estar associadas a essas vulnerabilidades.
Aviso legal: Esta ferramenta destina-se apenas a fins informativos e investigativos. A presença de entradas de log correspondentes a essas consultas não confirma definitivamente uma invasão. As entradas de log devem ser analisadas em contexto. A ausência de resultados não garante que um dispositivo esteja seguro. Sempre certifique-se de que seus dispositivos estejam atualizados para as versões mais recentes do sistema operacional.
Este script foi desenvolvido por Anton Shustikov ([email protected] — atualmente ceo da cakescats) como parte do projeto CakesCats.
CakesCats é uma iniciativa focada em:
Anton Shustikov é consultor de segurança da informação e fintech com vasta experiência na criação de sistemas de segurança. Ele é o fundador do projeto educacional sem fins comerciais CakesCats e contribui com artigos para publicações como Forbes e a revista "Xakep". Seu trabalho frequentemente envolve investigar ameaças digitais e promover higiene digital.
"Airborne" é um nome dado a um conjunto de vulnerabilidades (descobertas pela Oligo Security em sua pesquisa original) que afetam o protocolo AirPlay da Apple e o Kit de Desenvolvimento de Software (SDK) do AirPlay. Essas vulnerabilidades podem impactar uma ampla gama de dispositivos Apple (iPhones, iPads, Macs, Apple TV, etc.) e dispositivos de terceiros que usam o SDK do AirPlay (por exemplo, caixas de som inteligentes, receptores).
Principais aspectos das vulnerabilidades do tipo "Airborne":
rapportd, que lida com a comunicação dispositivo a dispositivo.Este script executa uma série de comandos log show usando predicados cuidadosamente elaborados. Esses predicados são projetados para filtrar a vasta quantidade de informações nos logs do sistema iOS a fim de identificar possíveis indicadores de comprometimento ou atividade anômala que possa estar relacionada a vulnerabilidades do tipo "Airborne".
O script procura por:
mediaserverd, AirPlayXPCHelper, rapportd, mDNSResponder).A saída de cada consulta é salva em um arquivo de texto separado, com nome descritivo, dentro de um diretório de resultados com registro de data e hora, permitindo uma análise focada de diferentes tipos de artefatos potenciais.
log show e este script foram feitos para serem executados no macOS..logarchive): Você precisa de um arquivo de log do sistema iOS (um pacote, que tecnicamente é um diretório) do dispositivo que pretende analisar. Isso normalmente pode ser obtido por meio de:
sysdiagnose: Dispare um sysdiagnose no iPhone (geralmente pressionando simultaneamente os botões de Volume Up + Volume Down + Side, mas as combinações podem variar de acordo com o modelo e a versão do iOS). Depois que o sysdiagnose é gerado (pode levar vários minutos), ele pode ser enviado via AirDrop para um Mac ou acessado ao sincronizar o iPhone com um Mac (frequentemente encontrado no Finder, no local de sincronização do iPhone, dentro de um arquivo .tar.gz). O .logarchive estará dentro do conteúdo extraído do sysdiagnose.bash.Salve o Script: Salve o código do script (fornecido acima) como airborne_artifact_extractor.sh (ou qualquer outro nome com extensão .sh).
Torne-o Executável: Abra o aplicativo Terminal, navegue até o diretório onde você salvou o script e execute o seguinte comando:
chmod +x airborne_artifact_extractor.sh
Verifique o Atributo de Quarentena do macOS (Importante para scripts baixados): Se você baixou este script da internet, o macOS pode colocá-lo em quarentena, o que pode impedir que ele seja executado corretamente ou até mesmo de todo.
xattr airborne_artifact_extractor.sh
com.apple.quarantine, remova esse atributo executando:
xattr -d com.apple.quarantine airborne_artifact_extractor.sh
Se você ainda encontrar problemas ao executar o script, especialmente se ele estiver localizado em um diretório como ~/Downloads, certifique-se de que o seu aplicativo Terminal tenha as permissões necessárias (por exemplo, "Acesso Total ao Disco" em Ajustes do Sistema -> Privacidade e Segurança) para acessar o local do script e o arquivo de log.
^M (por exemplo, /bin/bash^M: bad interpreter: No such file or directory)Se você encontrar um erro como 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 ou mensagens semelhantes envolvendo caracteres \r ou ^M ao tentar executar o script, isso provavelmente se deve a finais de linha no estilo Windows (CRLF - Carriage Return Line Feed) em vez de finais de linha no estilo Unix (LF - Line Feed).
Isso geralmente acontece se o arquivo do script foi criado ou editado em um sistema Windows e depois transferido para macOS ou Linux sem converter os finais de linha. Sistemas Unix esperam apenas LF como terminador de linha, e o caractere CR extra (\r ou ^M) é interpretado erroneamente como parte do caminho do interpretador ou dos comandos.
Solução: Converta os Finais de Linha com dos2unix
A maneira mais fácil de corrigir isso é usando o utilitário dos2unix.
Instale o dos2unix:
No macOS (usando Homebrew): Se você não tem Homebrew, instale-o primeiro a partir de brew.sh. Em seguida, execute:
brew install dos2unix
Em distribuições Linux baseadas em Debian/Ubuntu:
sudo apt update
sudo apt install dos2unix
Em distribuições Linux baseadas em Fedora/RHEL:
sudo dnf install dos2unix # (or yum for older versions)
Converta o arquivo do script:
Navegue até o diretório que contém airborne_artifact_extractor.sh e execute:
dos2unix airborne_artifact_extractor.sh
Este comando converterá os finais de linha no próprio arquivo.
Soluções Alternativas (se dos2unix não estiver disponível/for preferível):
Usando sed:
sed -i.bak 's/\r$//' airborne_artifact_extractor.sh
(Este comando modifica o arquivo diretamente e cria um backup airborne_artifact_extractor.sh.bak. Em algumas versões do sed, especialmente no macOS, a opção -i exige uma extensão para o arquivo de backup, como -i '.bak' ou -i '' para não criar backup, se suportado. No macOS, você pode precisar de 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
# Then use airborne_artifact_extractor_unix.sh
Editores de Texto: A maioria dos editores de texto modernos (como VS Code, Sublime Text, Atom, Notepad++) permite alterar os finais de linha. Abra o arquivo do script, encontre a configuração de finais de linha (geralmente na barra de status ou no menu Arquivo/Editar) e altere de "CRLF" ou "Windows" para "LF" ou "Unix". Em seguida, salve o arquivo novamente.
Após converter os finais de linha, tente executar o script novamente. Lembre-se também de garantir que ele tenha permissões de execução (chmod +x airborne_artifact_extractor.sh).
Execute o script a partir do Terminal, fornecendo o caminho para o pacote .logarchive e parâmetros opcionais de intervalo de tempo:
./airborne_artifact_extractor.sh /path/to/your/iphone_logs.logarchive [time_range_parameters]
Argumentos:
R1 (Obrigatório): O caminho completo ou relativo para o arquivo/pacote `.logarchive`.
[time_range_parameters] (Opcional): Parâmetros padrão de intervalo de tempo do `log show`. Se forem omitidos, o script usará como padrão a análise dos logs `--last 7d` (últimos 7 dias).
Exemplos:
--last 24h (para as últimas 24 horas)
--last 3d (para os últimos 3 dias)
--start "YYYY-MM-DD HH:MM:SS" --end "YYYY-MM-DD HH:MM:SS" (para um intervalo de tempo específico). Importante: certifique-se de que a string de data e hora esteja entre aspas.
Configuração de Fuso Horário:
O script inclui configurações de fuso horário no topo, que você pode modificar:
TZ_SETTING: Define o fuso horário usado para interpretar os argumentos `--start` e `--end` que você fornece. Por exemplo, se estiver definido como `"Etc/GMT-7"` (que corresponde a UTC+7), e você usar `--start "2025-04-10 00:00:00"`, isso será tratado como meia-noite de 10 de abril no fuso horário UTC+7. Se você quiser que o script use o fuso horário local atual do seu Mac para esses argumentos, você pode definir `TZ_SETTING=""` ou comentar essa linha.
TIMEZONE_DISPLAY: Especifica o fuso horário para formatar os carimbos de data/hora nos arquivos de log de saída por meio da opção `log show --timezone`. Exemplo: `"Asia/Bangkok"` para UTC+7. Escolha um nome de fuso horário reconhecido pelo seu sistema.
Exemplos de Comandos:
Analise os logs dos últimos 7 dias (comportamento padrão):
Bash
./airborne_artifact_extractor.sh /Volumes/ExternalHD/iOS_Logs/iPhone13_archive.logarchive
Analise os logs das últimas 48 horas:
Bash
./airborne_artifact_extractor.sh ./My_iPhone_Sysdiagnose.logarchive --last 48h
Analise os logs para um intervalo específico de data e hora (os horários serão interpretados de acordo com `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"
O script criará um novo diretório chamado airborne_traces_YYYYMMDD_HHMMSS (onde YYYYMMDD_HHMMSS é a data e hora atuais) no mesmo diretório do script (ou no seu diretório de trabalho atual, se o diretório do script não for gravável). Dentro desta pasta, você encontrará vários arquivos .txt, cada um contendo a saída de uma consulta específica. Os nomes dos arquivos são prefixados com números para ordenação:
`01_critical_process_errors.txt`: Falhas e erros de processos críticos.
`02_process_termination_exceptions.txt`: Encerramentos inesperados ou exceções em processos-chave.
`03_kernel_panics.txt`: Eventos de kernel panic.
`04_airplay_subsystem_errors.txt`: Erros e falhas no subsistema AirPlay.
`05_mdns_errors.txt`: Erros e falhas no mDNSResponder (Bonjour).
`06_airplay_pairing_auth_failures.txt`: Problemas com pareamento, autenticação ou conexões AirPlay/rapportd.
`07_network_connection_errors.txt`: Erros de conexão de rede de processos relevantes.
`08_networkd_errors.txt`: Erros no serviço networkd do sistema.
`09_sandbox_violations.txt`: Mensagens relacionadas a violações de sandbox.
`10_profile_activity.txt`: Atividade relacionada a perfis de configuração.
Arquivos vazios são comuns: Um arquivo de saída vazio significa que nenhuma entrada de log correspondeu aos critérios daquela consulta específica para o intervalo de tempo fornecido. Em muitos casos, isso é um bom sinal, indicando a ausência daqueles indicadores suspeitos específicos.
Concentre-se em padrões e correlações: Uma única mensagem de erro isolada muitas vezes não indica uma invasão. Procure por agrupamentos de erros, sequências suspeitas de eventos em diferentes arquivos de log ou erros correlacionados a momentos em que você observou comportamento incomum no dispositivo ou estava usando serviços potencialmente vulneráveis, como o AirPlay.
ECONNRESET nos logs de rapportd (frequentemente em 06_... ou 07_...): Eles indicam terminações abruptas de conexão TCP. Embora possam ser causados por problemas de rede benignos (Wi-Fi ruim, problemas no roteador), no contexto de investigação das vulnerabilidades "Airborne", eles merecem uma inspeção mais detalhada. Podem significar instabilidade causada por uma tentativa de exploit em seu dispositivo ou em um dispositivo de rede, ou interferência de rede.
Falhas (tipos fault ou panic) em `mediaserverd`, `AirPlayXPCHelper` (frequentemente em 01_..., 02_...) ou panics do kernel (03_...) são geralmente fortes indicadores de instabilidade do sistema que podem estar relacionados a exploits se ocorrerem inesperadamente ou durante interações de rede alvo da "Airborne".
Contexto é Fundamental: Sempre revise os resultados dos logs em conjunto com seu conhecimento de como o dispositivo estava sendo usado no momento, o ambiente de rede em que ele estava e quaisquer sintomas reais observados.
Sinta-se à vontade para criar um fork deste repositório, sugerir melhorias, relatar problemas ou adicionar consultas mais específicas que possam ser úteis para identificar vestígios de tais vulnerabilidades.