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.
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
| Ruta | Motivo |
|---|---|
/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. SuMaxFileSizepor 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
- Acceso total al disco para la aplicación que realiza la recopilación.
- La carpeta completa, incluidos
fseventsd-uuidyno_log. tar,ditto,cp -po UAC; conserva los mtimes.- Unidades externas a través de un bloqueador de escritura.
- 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.