Skip to content

Adquirir .fseventsd: tar, UAC, Aftermath, Velociraptor

Cómo recopilar los registros FSEvents de macOS sin perder sus fechas de modificación: un comando tar, perfiles UAC, Aftermath, Velociraptor e imágenes.

Publicado el 4 min de lectura

En resumen. Archiva la carpeta completa, conserva las fechas de modificación y no escribas nada en la evidencia. En un Mac en vivo, concede a Terminal el Acceso total al disco (Full Disk Access) y ejecuta sudo tar -czf ~/Desktop/fseventsd.tar.gz -C /System/Volumes/Data .fseventsd. El perfil ir_triage de UAC hace lo mismo como parte de una recopilación más amplia. Ambos archivos pueden cargarse tal cual en el FSEvents Parser. La referencia rápida de este artefacto está en la chuleta de FSEvents.

Qué recopilar

RutaMotivo
/System/Volumes/Data/.fseventsd/macOS 10.15 y posteriores: actividad del usuario, Users/…, private/…, Library/…
/.fseventsd/macOS 10.14 y anteriores (volumen de arranque)
/Volumes/<name>/.fseventsd/Cada unidad externa, si dispones de ella

Toma todos los archivos de la carpeta: los logs con nombre hexadecimal, fseventsd-uuid y no_log si existe. El parser usa la fecha de fseventsd-uuid como límite inferior del log más antiguo, y la ausencia de no_log es en sí misma información (consulta no_log).

Las fechas de modificación son la evidencia. La ventana temporal de un registro procede de los mtimes de los archivos de log (por qué). tar, ditto y cp -p los conservan; AirDrop, el correo electrónico y muchas subidas a la nube no.

Mac en vivo: un solo comando

Primero concede a Terminal el Acceso total al disco (Ajustes del Sistema → Privacidad y seguridad → Acceso total al disco). Sin él, la lectura de la carpeta falla con "Operation not permitted", incluso como root.

sudo tar -czf ~/Desktop/fseventsd-$(hostname -s).tar.gz -C /System/Volumes/Data .fseventsd

Para una unidad externa conectada, archiva su propia carpeta de la misma forma:

sudo tar -czf ~/Desktop/fseventsd-EXFIL.tar.gz -C /Volumes/EXFIL .fseventsd

¿Prefieres una carpeta sin comprimir? ditto también conserva las fechas de modificación, y un listado las documenta de forma independiente:

sudo ditto /System/Volumes/Data/.fseventsd ~/Desktop/fseventsd
sudo ls -laT /System/Volumes/Data/.fseventsd > ~/Desktop/fseventsd-listing.txt

En macOS 10.14 y anteriores, sustituye -C /System/Volumes/Data por -C /.

fseventsd sigue escribiendo mientras recopilas: el log más reciente puede estar incompleto o seguir en memoria. Es lo esperable; un buen parser conserva todos los registros completos e informa del resto.

UAC

UAC recopila /.fseventsd y /System/Volumes/*/.fseventsd mediante su artefacto files/logs/macos.yaml. Los perfiles ir_triage y full lo incluyen:

sudo ./uac -p ir_triage /Volumes/CASE

Para recopilar solo el artefacto de logs:

sudo ./uac -a ./artifacts/files/logs/macos.yaml /Volumes/CASE

Ejecútalo desde un Terminal con Acceso total al disco. El resultado es un tar.gz que conserva las fechas de modificación; el FSEvents Parser lo recorre en streaming y solo lee los archivos de .fseventsd.

Aftermath

Aftermath, de Jamf, no recopila .fseventsd por defecto. Añade la carpeta de forma explícita:

sudo ./aftermath --collect-dirs /System/Volumes/Data/.fseventsd -o /Volumes/CASE

Carga el ZIP resultante y revisa la pestaña Fuentes: si todos los logs muestran la misma fecha de modificación, las fechas no se conservaron y debes volver a recopilar con tar.

Velociraptor

Dos opciones:

  • Recopilar los archivos en bruto con Generic.Collectors.File, Root /, y una especificación de recopilación que incluya /System/Volumes/Data/.fseventsd/* y /.fseventsd/*. Carga el ZIP de la recopilación y verifica las fechas en la pestaña Fuentes como se indica arriba.
  • Analizar en el endpoint con MacOS.Forensics.FSEvents, que devuelve cada registro con las fechas de su archivo de origen. Es útil para hacer threat hunting en muchos Macs; su salida es una tabla de resultados de Velociraptor, no archivos que esta página pueda leer. Su MaxFileSize por defecto es de 10 MB y su tiempo de espera de 600 segundos; aumenta ambos para carpetas grandes.

Imágenes de disco

Monta la imagen en solo lectura y sin Finder, y después archiva la carpeta del volumen Data:

hdiutil attach -readonly -nobrowse /cases/MBP01.dmg
sudo tar -czf ~/Desktop/fseventsd-image.tar.gz -C "/Volumes/Macintosh HD - Data" .fseventsd

Nunca montes evidencia en lectura y escritura en tu Mac de análisis: su propio fseventsd empezará a registrar en el volumen de evidencia. Lo mismo vale para las unidades USB: usa un bloqueador de escritura. Para imágenes E01, el plugin FSEVENTS de mac_apt lee la carpeta directamente y sirve como segunda opinión.

Lista de comprobación

  1. Acceso total al disco para la aplicación que realiza la recopilación.
  2. La carpeta completa, incluidos fseventsd-uuid y no_log.
  3. tar, ditto, cp -p o UAC; conserva los mtimes.
  4. Unidades externas a través de un bloqueador de escritura.
  5. Tras la carga, confirma en la pestaña Fuentes que los mtimes parecen originales.

Preguntas frecuentes

¿Por qué importan las fechas de modificación de los archivos en FSEvents?

Los registros de FSEvents no tienen marcas de tiempo. La fecha de modificación de cada archivo de log es el único reloj disponible, así que una copia que restablezca esas fechas deja todos los registros sin posibilidad de datación.

¿UAC recopila .fseventsd?

Sí. El artefacto files/logs/macos.yaml recopila /.fseventsd y /System/Volumes/*/.fseventsd, y los perfiles ir_triage y full lo incluyen. El resultado es un tar.gz que conserva las fechas de modificación.

¿Por qué tar falla con Operation not permitted?

La aplicación Terminal no tiene Acceso total al disco. Concédeselo en Ajustes del Sistema, Privacidad y seguridad, Acceso total al disco, y vuelve a ejecutar el comando con sudo.

Artículos relacionados