Forense

Investigando Incidentes em macOS: UnifiedLogs, FSEvents e AULR

Por Equipe Basilisk ·

Como a Basilisk coleta evidencias em macOS Sonoma e Sequoia usando UnifiedLogs, FSEvents e AULR sem destruir o cenario do incidente.

Um MacBook Pro M3 chega na bancada com a suspeita de execucao de um payload assinado por developer ID revogado. O cliente quer respostas em 48 horas e o disco esta criptografado com FileVault. Antes de ligar qualquer ferramenta, a equipe Basilisk define o escopo legal, coleta a senha do usuario via canal seguro e documenta hash SHA-256 da imagem inicial. Em macOS moderno, voce nao vai longe sem entender que o sistema de log mudou drasticamente desde o Sierra: arquivos .log foram substituidos por tracev3 binarios, e ignorar isso significa perder 80% da telemetria disponivel.

O UnifiedLogs vive em /var/db/diagnostics e /var/db/uuidtext, totalizando entre 500 MB e 4 GB dependendo do uso. Para coleta ao vivo usamos log collect --output incident.logarchive, que congela o estado atual em um pacote portavel. Em pos-morte, copiamos os diretorios brutos e usamos o macos-UnifiedLogs do Mandiant em Rust para parsear sem precisar de outro Mac. Esse parser foi um divisor de aguas porque antes dependiamos do binario log nativo, o que forcava manter uma maquina Apple correspondente a versao do alvo. Para entender o ecossistema defensivo mais amplo, recomendamos a leitura previa de Hardening de macOS: Lockdown Mode, MDM e Reducao de Superficie.

FSEvents e o segundo pilar e responde a pergunta 'o que mudou neste volume e quando'. Os logs ficam em /.fseventsd/ como arquivos gziped numerados, e cada registro contem um event ID monotonico mais flags indicando criacao, renomeacao ou exclusao. O detalhe critico: FSEvents nao registra o conteudo nem o usuario que fez a mudanca, apenas o caminho e a operacao. Combinar FSEvents com UnifiedLogs cria uma timeline confiavel. Ferramentas como FSEventsParser de David Cowen processam isso em poucos segundos e exportam CSV pronto para Timesketch, lembrando o fluxo descrito em Timeline Forensics no Windows: Plaso, Log2Timeline e KAPE na Pratica adaptado ao mundo Apple.

O AULR (Apple Unified Log Reader) ou, mais precisamente, o Apple Unified Logging com Activity Tracing, fornece contexto de processo pai, thread ID e signpost. Predicados sao seu maior aliado: log show --predicate 'subsystem == "com.apple.securityd"' --last 24h revela tentativas de XPC suspeitas, e subsystem com.apple.TCC mostra prompts de acesso a microfone e camera negados ou autorizados. Em um caso real de junho deste ano, um stealer Atomic variante AMOS deixou rastro no subsystem com.apple.kextd tentando carregar um KEXT em um Mac com SIP ativo, falhando ruidosamente. Sem esse predicado, o evento se perde em milhoes de linhas.

Para a coleta etica em si, a Basilisk segue um runbook fixo: autorizacao por escrito do cliente, write-blocker via Thunderbolt para imagem do disco quando possivel, hash em SHA-256 e SHA-3-512, e logs de chain of custody assinados com chaves YubiKey. Quando o Mac esta vivo e nao podemos desligar, usamos o aftriage da CrowdStrike ou o macos_artifact_collection script com Velociraptor, sempre redirecionando saida para um SSD externo APFS dedicado ao caso. Esse cuidado dialoga com o que abordamos em DFIR no Linux: Triagem ao Vivo com UAC e Velociraptor e tambem em OPSEC para Pesquisadores de Seguranca: Modelo de Ameaca Pessoal, porque investigar sem se proteger e como entrar em casa fumegante sem mascara.

A analise comeca em paralelo: enquanto o macos-UnifiedLogs roda em background gerando JSONL, abrimos o quicklook do Spotlight metadata via mdls em arquivos suspeitos, exportamos KnowledgeC.db do diretorio CoreDuet para mapear janelas em foco, e revisamos /private/var/db/CoreDuet/Knowledge para correlacionar uso de Terminal com horarios anomalos. O resultado vai para um caderno Jupyter com pandas, onde correlacionamos PIDs do UnifiedLogs com paths do FSEvents. Se aparecer comportamento de loader, costuma rimar com tecnicas descritas em Analise de Malware em Lab Isolado: Setup Seguro com FlareVM e Remnux adaptadas a Mach-O.

Takeaway pratico: monte hoje um logarchive de baseline do seu proprio Mac com log collect e guarde junto com um snapshot APFS de /.fseventsd. Da proxima vez que algo parecer estranho, voce tera um diff temporal real, nao suposicoes. Essa baseline custa 5 minutos e poupa dias de investigacao reativa quando o incidente bate na sua porta.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly