Forense

Investigando Incidentes en macOS: UnifiedLogs, FSEvents y AULR

Por Equipe Basilisk ·

Como Basilisk recolecta evidencia en macOS Sonoma y Sequoia usando UnifiedLogs, FSEvents y AULR sin destruir la escena del incidente.

Llega un MacBook Pro M3 al laboratorio con sospecha de haber ejecutado un payload firmado con un Developer ID revocado. El cliente exige respuestas en 48 horas y el disco esta cifrado con FileVault. Antes de encender cualquier herramienta, el equipo Basilisk define el alcance legal, recibe la contrasena del usuario por un canal seguro y documenta el hash SHA-256 de la imagen inicial. En macOS moderno no se llega lejos sin entender que el sistema de logs cambio drasticamente desde Sierra: los archivos .log fueron reemplazados por tracev3 binarios, e ignorarlo significa perder el 80% de la telemetria disponible.

El UnifiedLogs vive en /var/db/diagnostics y /var/db/uuidtext, sumando entre 500 MB y 4 GB segun el uso. Para captura en vivo usamos log collect --output incident.logarchive, que congela el estado actual en un paquete portable. En post-mortem copiamos los directorios crudos y usamos el macos-UnifiedLogs de Mandiant escrito en Rust para parsear sin necesidad de otro Mac. Antes dependiamos del binario log nativo, lo que obligaba a mantener una maquina Apple identica a la version del objetivo. Para entender el ecosistema defensivo mas amplio, recomendamos leer antes Hardening de macOS: Lockdown Mode, MDM y Reduccion de Superficie.

FSEvents es el segundo pilar y responde a 'que cambio en este volumen y cuando'. Los logs estan en /.fseventsd/ como archivos gzip numerados, cada registro contiene un event ID monotonico y flags que indican creacion, renombrado o eliminacion. El detalle critico: FSEvents no registra el contenido ni el usuario, solo la ruta y la operacion. Combinar FSEvents con UnifiedLogs genera una linea de tiempo confiable. Herramientas como FSEventsParser de David Cowen lo procesan en segundos y exportan CSV listo para Timesketch, recordando el flujo descrito en Timeline Forensics en Windows: Plaso, Log2Timeline y KAPE en la Practica adaptado al mundo Apple.

El AULR, o mas precisamente el Apple Unified Logging con Activity Tracing, aporta contexto de proceso padre, thread ID y signpost. Los predicados son tu mejor aliado: log show --predicate 'subsystem == "com.apple.securityd"' --last 24h revela intentos XPC sospechosos, y subsystem com.apple.TCC muestra prompts de acceso a microfono y camara denegados o autorizados. En un caso real de junio de este ano, una variante del stealer Atomic AMOS dejo rastro en com.apple.kextd intentando cargar un KEXT en un Mac con SIP activo, fallando ruidosamente. Sin ese predicado, el evento se pierde entre millones de lineas.

Para la captura etica, Basilisk sigue un runbook fijo: autorizacion escrita del cliente, write-blocker Thunderbolt para imagen del disco cuando es posible, hashes SHA-256 y SHA-3-512, y registros de chain of custody firmados con llaves YubiKey. Cuando el Mac esta vivo y no podemos apagarlo, usamos aftriage de CrowdStrike o el script macos_artifact_collection con Velociraptor, redirigiendo siempre la salida a un SSD externo APFS dedicado al caso. Este cuidado dialoga con lo que abordamos en DFIR en Linux: Triaje en Vivo con UAC y Velociraptor y tambien en OPSEC para Investigadores de Seguridad: Modelo de Amenaza Personal, porque investigar sin protegerse es entrar a una casa en llamas sin mascara.

El analisis arranca en paralelo: mientras macos-UnifiedLogs corre en background generando JSONL, abrimos el metadata de Spotlight via mdls sobre archivos sospechosos, exportamos KnowledgeC.db desde CoreDuet para mapear ventanas en foco y revisamos /private/var/db/CoreDuet/Knowledge para correlacionar uso de Terminal con horarios anomalos. Todo va a un Jupyter notebook con pandas donde correlacionamos PIDs del UnifiedLogs con rutas del FSEvents. Si aparece comportamiento de loader, suele rimar con tecnicas descritas en Analisis de Malware en Lab Aislado: Setup Seguro con FlareVM y REMnux adaptadas a Mach-O.

Takeaway practico: arma hoy un logarchive baseline de tu propio Mac con log collect y guardalo junto a un snapshot APFS de /.fseventsd. La proxima vez que algo se sienta raro tendras un diff temporal real, no suposiciones. Esa baseline cuesta 5 minutos y ahorra dias de investigacion reactiva cuando el incidente toca tu puerta.

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