Problema
En entornos de oficina pequeña sin dominio, los administradores deben saber quién creó, modificó o eliminó un archivo en un recurso compartido. Windows 11 incluye auditoría de acceso a objetos, pero genera miles de eventos (ID 4663) que mezclan operaciones legítimas con ruido, como los archivos temporales que crean Word o Excel. Filtrar esos eventos a mano es impracticable y las soluciones comerciales suelen requerir licencias. El reto es disponer de un registro fiable, con los campos “who‑what‑when”, que pueda consultarse desde la línea de comandos o scripts y que sea completamente libre.
Causa
- Auditoría de objetos nativa: registra cada intento de acceso, incluyendo lecturas, consultas de atributos y operaciones de bloqueo. En un share activo, eso equivale a cientos de eventos por minuto.
- Falta de controlador de dominio: sin AD no hay políticas de grupo centralizadas para limitar el ruido ni para consolidar logs.
- Reglas NTFS de “deny delete”: los programas de Office crean y borran archivos temporales (
~$filename.docx). Cuando se niega el borrado, el proceso genera errores que aparecen como eventos de eliminación fallida, aumentando la confusión. - Ausencia de un motor de consulta: los logs quedan en el Visor de eventos, dificultando la extracción de “solo los cambios reales”.
Solución
Una arquitectura ligera basada en Sysmon + Osquery cubre los cuatro puntos críticos:
| Componente | Qué hace | Por qué FOSS |
|---|---|---|
| Sysmon (parte de Sysinternals) | Registra en el log de eventos del sistema (ID 26 para cambios de archivo, ID 11 para creación de procesos) con información de usuario, ruta y hash. | Binario gratuito, sin dependencias externas. |
| Osquery | Ejecuta consultas SQL contra la tabla file_events (alimentada por el plugin eventlog) y contra process_events. Permite filtrar por usuario, ruta, tipo de operación y tiempo. |
Cliente multiplataforma, CLI y API. |
| Log forwarder opcional (por ejemplo, Vector o Loki) | Centraliza los logs en un archivo plano o en un servidor de búsqueda para reportes históricos. | Todo el stack sigue siendo FOSS; la elección depende del nivel de retención. |
| Scripts PowerShell/Bash | Automatizan la activación de la auditoría y la generación de reportes periódicos. | Nativo en Windows. |
Paso 1: Instalar y configurar Sysmon
- Descargar la última versión de Sysmon desde la página oficial de Microsoft.
- Crear un archivo de configuración XML que limite la captura a creación, escritura y eliminación en la ruta del share (por ejemplo
D:\DataShare\). Un ejemplo mínimo:
# Guardar como sysmon-config.xml
<Sysmon schemaversion="4.70">
<EventFiltering>
<FileCreate onmatch="include">
<TargetFilename condition="contains">D:\DataShare\</TargetFilename>
</FileCreate>
<FileDelete onmatch="include">
<TargetFilename condition="contains">D:\DataShare\</TargetFilename>
</FileDelete>
<FileWrite onmatch="include">
<TargetFilename condition="contains">D:\DataShare\</TargetFilename>
</FileWrite>
<!-- Ignorar archivos temporales de Office -->
<FileCreate onmatch="exclude">
<TargetFilename condition="endswith">.tmp</TargetFilename>
</FileCreate>
<FileDelete onmatch="exclude">
<TargetFilename condition="endswith">.tmp</TargetFilename>
</FileDelete>
</EventFiltering>
</Sysmon>
- Instalar con la configuración:
sysmon -i sysmon-config.xml
Con esta política, Sysmon escribe en el canal Microsoft-Windows-Sysmon/Operational solo los eventos relevantes, reduciendo drásticamente el ruido.
Paso 2: Desplegar Osquery y habilitar el plugin de eventos
- Descargar el instalador de Osquery para Windows y ejecutar la instalación silenciosa:
osqueryi.exe --install
- Editar
osquery.conf(ubicado enC:\Program Files\osquery\osquery.conf) para habilitar eleventlogy la tablafile_events:
{
"options": {
"logger_plugin": "filesystem",
"logger_path": "C:\\ProgramData\\osquery\\log"
},
"schedule": {
"file_audit": {
"query": "SELECT datetime, action, target_path, uid, gid FROM file_events WHERE target_path LIKE 'D:\\\\DataShare\\\\%';",
"interval": 60,
"description": "Auditar cambios en el share cada minuto"
}
},
"decorators": {
"always": [
"SELECT uuid AS host_uuid FROM system_info;"
]
}
}
- Reiniciar el servicio
osquerydpara que la nueva tabla empiece a recolectar datos.
Paso 3: Generar reportes “who‑what‑when”
Una consulta típica para obtener los últimos 100 cambios:
osqueryi "SELECT datetime, action, target_path, username FROM file_events WHERE target_path LIKE 'D:\\DataShare\\%' ORDER BY datetime DESC LIMIT 100;"
Para exportar a CSV (útil para auditorías mensuales):
osqueryi --json "SELECT datetime, action, target_path, username FROM file_events WHERE target_path LIKE 'D:\\DataShare\\%';" > share_audit_$(date +%F).json
Paso 4 (opcional): Centralizar con Vector
Si se desea conservar los logs más allá de la retención local, instalar Vector y configurarlo para leer los archivos de log de Osquery (C:\ProgramData\osquery\log\) y enviarlos a un bucket S3 o a Loki. La configuración es mínima y mantiene todo bajo licencia Apache 2.0.
Cuándo aplicar esta solución
- Entornos workgroup sin AD donde la auditoría basada en políticas de dominio no es viable.
- Número de usuarios ≤ 20 y un share de datos centralizado (una o pocas carpetas).
- Necesidad de reportes automáticos (diarios, semanales) sin depender de herramientas propietarias.
- Cuando el ruido de la auditoría nativa supera la capacidad de filtrado manual.
No aplica cuando:
- Se requiere auditoría a nivel de capa SMB (por ejemplo, capturar credenciales de autenticación) sin acceso a los hosts.
- El número de máquinas y shares es tan alto que una solución de SIEM comercial es más rentable.
- Se necesita cumplimiento estricto de normas que exijan certificación de herramientas específicas.
Código
# 1. Instalar Sysmon con política mínima
sysmon -i sysmon-config.xml
# 2. Instalar Osquery (modo silencioso)
msiexec /i osquery-5.13.2.msi /quiet
# 3. Configurar Osquery para audit de share
type NUL > "C:\Program Files\osquery\osquery.conf"
# (pegar el JSON del paso 2 en el archivo)
# 4. Reiniciar servicio
net stop osqueryd
net start osqueryd
# 5. Consulta rápida de cambios
osqueryi "SELECT datetime, action, target_path, username FROM file_events WHERE target_path LIKE 'D:\\DataShare\\%' ORDER BY datetime DESC LIMIT 50;"
Verificación
- Crear un archivo de prueba en
D:\DataShare\test.txtcon la cuenta de un interno. - Ejecutar la consulta de Osquery y confirmar que aparece una fila con
action = "CREATED"y el nombre de usuario correcto. - Eliminar el archivo y volver a consultar; debe aparecer
action = "DELETED". - Revisar el visor de eventos (
Applications and Services Logs → Microsoft → Windows → Sysmon → Operational) y buscar el Event ID 26 correspondiente; elImagedebe coincidir conexplorer.exeo la aplicación que realizó la operación. - Si los archivos temporales de Office siguen generando eventos, añadir una regla de exclusión en
sysmon-config.xml(como se muestra) y volver a cargar consysmon -c sysmon-config.xml.
Notas adicionales
- Hash de archivo: Sysmon permite añadir
hashes="SHA256"en la configuración para que cada creación incluya el hash del contenido. Es útil cuando se necesita validar integridad después de una restauración. - Permisos NTFS: la regla “deny delete” sigue siendo necesaria, pero combinarla con la exclusión de archivos
.tmpevita que Office genere eventos de error que saturen el log. - Retención: Osquery escribe logs en formato JSON rotativo. Configura
logger_max_sizeylogger_rotateenosquery.confpara evitar que el disco se llene. - Escalabilidad: si el número de hosts crece, considera desplegar un agente de recolección (Vector, Fluent Bit) y un motor de búsqueda como OpenSearch o Grafana Loki; la arquitectura sigue siendo 100 % FOSS.
- Seguridad del agente: protege la carpeta de logs (
C:\ProgramData\osquery\log) con ACL que solo permitan lectura al administrador y al servicio de recolección, evitando que usuarios con acceso al share alteren los registros.
Con Sysmon y Osquery se obtiene un registro preciso de “quién, qué y cuándo” en shares de Windows 11 Workgroup sin el ruido abrumador de la auditoría estándar y sin depender de licencias propietarias. La solución es modular, fácil de desplegar y suficientemente flexible para adaptarse a oficinas pequeñas o medianas que buscan una postura de auditoría robusta y totalmente libre.