Skip to content

.fseventsd · 1SLD / 2SLD / 3SLD

Lee FSEvents de macOS como una línea temporal

Suelta una carpeta .fseventsd, un tar.gz de UAC o un ZIP. Cada archivo de registro (1SLD, 2SLD, 3SLD) se decodifica en rutas, event IDs, node IDs y flags en lenguaje claro, situados en una ventana temporal honesta, con los renombrados emparejados, un árbol de rutas y hallazgos sobre persistencia, preparación de datos y volúmenes extraíbles. Todo se procesa en tu navegador con WebAssembly; no se sube nada.

Suelta una carpeta .fseventsd, un tar.gz de UAC, un ZIP o archivos de registro sueltos

Archivos de registro de FSEvents (nombres de 16 dígitos hexadecimales, gzip), fseventsd-uuid y no_log. Las colecciones de UAC, Aftermath y Velociraptor funcionan tal cual; los archivos ajenos se omiten. Conserva las fechas de modificación de los archivos: son el único reloj que tiene FSEvents.

El ejemplo es sintético: los registros .fseventsd de un MacBook ficticio (FIN-MBP-03) y de una memoria USB llamada EXFIL, durante una intrusión el 2026-09-14.

Procesado en tu navegador, no se sube nada

FSEvents reside en una carpeta oculta .fseventsd en la raíz de cada volumen. Copia la carpeta entera y conserva las fechas de modificación de los archivos: son el único reloj que tiene FSEvents. Un tar.gz hace ambas cosas y se puede soltar aquí tal cual.

  1. Archiva .fseventsd con tar, UAC o Aftermath
  2. Suelta aquí el tar.gz, el ZIP o la carpeta
  3. Análisis local, nada sale del navegador

En el Mac en vivo, concede primero a Terminal el Acceso total al disco (Full Disk Access) (Ajustes del Sistema → Privacidad y seguridad → Acceso total al disco); de lo contrario, leer la carpeta falla con «Operation not permitted». Después ejecuta, como administrador:

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

El archivo comprimido conserva la fecha de modificación de cada archivo. Suéltalo en la página tal cual.

Para una unidad externa montada, archiva su propia carpeta .fseventsd de la misma forma (registra lo que se escribió en la unidad):

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

¿Prefieres una carpeta? ditto también conserva las fechas de modificación; suelta la carpeta resultante:

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

macOS 10.14 y anteriores guardan la carpeta en la raíz del volumen de arranque: usa -C / en lugar de -C /System/Volumes/Data.

Trampas habituales

  • Conserva las fechas de modificación: tar, ditto y cp -p lo hacen; arrastrar con Finder a algunos destinos, AirDrop, el correo electrónico y muchas subidas a la nube no. Si todos los archivos muestran la misma hora, la página marca las ventanas como poco fiables.
  • fseventsd sigue escribiendo mientras recolectas: el archivo de registro más reciente puede estar incompleto o seguir en memoria. Es normal; el parser conserva todos los registros completos.
  • Conectar la unidad o la imagen de disco de otra persona a tu Mac de análisis en lectura/escritura le añade nuevos FSEvents. Usa un bloqueador de escritura o una conexión en solo lectura.
  • Los registros no tienen marca de tiempo. Las horas mostradas aquí son ventanas derivadas de las fechas de modificación de los archivos; confirma los momentos importantes con otro artefacto.
  • Finder oculta .fseventsd. Archívala con tar o ditto en lugar de intentar seleccionarla en Finder.
  • Los ZIP guardan las fechas en hora local sin zona salvo que incluyan el campo de marca de tiempo extendida; mejor usa tar.gz o comprueba las fechas en la pestaña Fuentes.

Qué registra FSEvents

macOS mantiene un registro persistente de los cambios en el sistema de archivos, escrito por el daemon fseventsd para que Time Machine, Spotlight y los clientes de sincronización puedan preguntar qué ha cambiado desde un momento dado. Cada volumen tiene una carpeta oculta .fseventsd con archivos de registro comprimidos con gzip. Cada registro es una ruta, un event ID de 64 bits y un conjunto de flags (creado, eliminado, renombrado, modificado, atributo extendido cambiado, montaje, …); los formatos más recientes añaden el node ID del archivo.

En una investigación, esto es un historial del volumen a nivel de ruta, que a menudo incluye archivos que ya no existen: un archivo comprimido que estuvo brevemente en Downloads, un LaunchAgent que se escribió y se eliminó, documentos reunidos en una carpeta oculta o el contenido de una memoria USB.

Qué decodifica el parser

  • Archivos de registro gzip, incluidos los truncados o dañados (se conserva todo lo recuperable y se informa del daño), varios miembros gzip por archivo y páginas ya descomprimidas.
  • Páginas en los tres formatos en disco: 1SLD (ruta, event ID, flags), 2SLD (+ node ID, macOS 10.13 y posteriores) y 3SLD (+ un campo adicional de 4 bytes, macOS 14 y posteriores), con varias páginas por archivo.
  • Cada bit de flag decodificado con un nombre claro, junto con el valor en bruto y los nombres que usan FSEventsParser y mac_apt.
  • Marcadores fseventsd-uuid (identidad del flujo e inicio del historial) y no_log, un volumen por carpeta .fseventsd (volumen de datos, raíz del volumen o unidad externa).
  • Ventanas temporales para cada archivo de registro a partir de las fechas de modificación, pares de renombrado por node ID, un árbol de rutas y exportaciones a CSV, Timesketch y JSON.

Qué ayuda a responder

  • ¿Existió alguna vez este archivo o carpeta en el Mac, y se creó, modificó, renombró o eliminó?
  • ¿Se escribió un LaunchAgent o LaunchDaemon, y cuándo (aproximadamente)?
  • ¿Se reunieron documentos en una carpeta oculta, se copiaron a un volumen externo y luego se eliminaron?
  • ¿Se eliminó probablemente el atributo de cuarentena de una descarga, o se cambió un permiso de privacidad (TCC)?
  • ¿Qué se escribió en una unidad USB, según la propia carpeta .fseventsd de la unidad?

Límites a tener en cuenta

  • Sin marcas de tiempo: los registros solo tienen un event ID. Las horas son ventanas entre fechas de modificación de archivos de registro, y solo son tan buenas como la recolección las haya conservado.
  • Sin usuario ni proceso: FSEvents no dice quién hizo un cambio. FSEventsParser decodifica el campo adicional de 3SLD como un identificador de usuario; Apple no documenta su significado.
  • Agrupación: varios cambios en una ruta pueden fusionarse en un solo registro (p. ej. Created + Modified + Removed); su orden dentro del registro es desconocido.
  • Retención: fseventsd purga los registros antiguos según su propio calendario; lo habitual son semanas o meses de historial, sin garantía.
  • No se registran: volúmenes de solo lectura, recursos compartidos de red y los eventos más recientes que aún estaban en memoria al copiar los registros.

Recolección en un solo comando

  • Mac en vivo, Terminal con Acceso total al disco: sudo tar -czf ~/Desktop/fseventsd.tar.gz -C /System/Volumes/Data .fseventsd, y luego suelta el archivo aquí.
  • UAC: el perfil ir_triage (o solo el artefacto files/logs/macos.yaml) recolecta todas las carpetas .fseventsd en un tar.gz que esta página lee tal cual.
  • Imagen de disco: conéctala en solo lectura y archiva la carpeta .fseventsd del volumen de datos de la misma forma.

Preguntas frecuentes

¿Se suben mis archivos a algún sitio?

No. El parser está escrito en Rust, compilado a WebAssembly, y se ejecuta en un Web Worker dentro de tu navegador. Los archivos nunca salen de tu equipo; la página funciona sin conexión una vez cargada.

¿Por qué no hay marcas de tiempo exactas?

Los registros de FSEvents no las contienen. Un archivo de registro se escribe cuando fseventsd lo vuelca a disco, así que su fecha de modificación es un límite superior para sus registros y la del archivo de registro anterior, un límite inferior aproximado. El parser muestra esa ventana para cada registro e indica cómo se calculó.

¿Qué versiones de macOS se admiten?

Los tres formatos en disco: 1SLD (macOS antiguos), 2SLD (macOS 10.13 High Sierra y posteriores, añade node IDs) y 3SLD (macOS 14 Sonoma y posteriores, añade un campo de 4 bytes). Las carpetas con formatos mezclados también se procesan.

¿Puede leer directamente una colección de UAC?

Sí. Suelta el tar.gz de UAC: la página lo recorre en streaming, conserva solo los archivos de .fseventsd y usa las fechas de modificación guardadas en el archivo. Los ZIP de Aftermath y Velociraptor y las carpetas normales también funcionan.

¿Qué ocurre con un archivo de registro truncado o corrupto?

Se analiza todo lo que se puede descomprimir, se conservan los registros completos y el archivo se marca como Parcial con el motivo (gzip truncado, CRC que no coincide, página que sobrepasa los datos, registro dañado).

¿Cómo se compara con FSEventsParser y mac_apt?

Decodifica las mismas estructuras en disco y los mismos bits de flags (se muestran los nombres de ambos), añade ventanas temporales, emparejamiento de renombrados, un árbol de rutas y hallazgos, y no requiere Python ni instalación. En trabajos con valor judicial, valida los registros importantes con una segunda herramienta.

Blog

Leer las guías

Blog