En muchas ocasiones resulta interesante tener la capacidad de poder monitorizar ciertas carpetas de cara a saber la actividad que se produce en ellas en un momento determinado.
Bien sea porque estamos ejecutando un programa del que no tenemos su código fuente y queremos saber 'que toca' (ejemplo típico cuando analizas malware), o bien porque simplemente queremos saber en tiempo real cuando un fichero es accedido, creado o alterado.
Después de buscar soluciones, encontré una que permite hacerlo de forma multiplataforma (windows / linux), su nombre: fsmonitor
fsmonitor es en realidad una librería en Python y una suerte de ejemplos que la acompañan.
En Linux, se basa en inotify para monitorizar, y en Windows emplea ReadDirectoryChangesW
Viene con dos ejemplos / utilidades que permiten hacer exactamente lo que dice el título del post: monitorizar ficheros y carpetas
El primer ejemplo es en modo gráfico:
Como podemos ver, estamos monitorizando la papelera en un sistema Windows mientras hacemos un 'vaciar papelera'. Cabe señalar que fsmonitor, en Windows, detecta como modificación un acceso al fichero, es decir, la alerta se genera con la misma descripción tanto ante un acceso (ver contenido) como si se altera, en Linux si discrimina entre una cosa u otra.
Veamos un ejemplo por línea de comandos en Linux:
# python dirwatch.py /tmp
create /tmp holamundo
attrib /tmp holamundo
modify /tmp holamundo
access /tmp holamundo
attrib /tmp holamundo
modify /tmp holamundo
access /tmp holamundo
Bonus: Cómo hacer que Windows actualice la fecha de acceso a ficheros
Durante las pruebas con fsmonitor, descubrí que algunos sistemas Windows no actualizan la fecha de acceso a los ficheros, en principio pensé que era un fallo de fsmonitor, luego descubrí que simplemente ese campo no se actualizaba. Se supone que es una forma de optimizar el rendimiento
El efecto final es que fsmonitor era incapaz de alertar cuando un fichero era accedido
Indagando, encontré una solución: emplear el comando fsutil para hacer que Windows guarde esa información.
(desde un cmd.exe) Primero ejecutamos:
fsutil behavior query disablelastaccess
Si obtenemos:
disablelastaccess = 1
Significa que tenemos deshabilitada esa opción. Debemos activarla ejecutando:
fsutil behavior set disablelastaccess 0
Y luego re-iniciando Windows
6 comments :
Muy bueno para detectar rootkits y similares.
Hola,
Excelente post.
Hay un herramienta de software libre llamada OSSEC la cual, entre muchas cosas, permite hacer FIM (File Integrity Monitoring), que es lo mismo que comentas, con agentes para casi todos los sitemas operativos conocidos y tiene un modo agentless a través de SSH.
Saludos,
En este mismo blog, ya se ha hablado sobre OSSEC: http://www.securitybydefault.com/2012/11/ossec-introduccion.html
Precisamente hace poco estuve ojeando inotify y echándole un vistazo al código fuente, Escribí un pequeño artículo sobre cómo ejecutar programas al detectar que un fichero se ha modificado: http://wp.me/p2kdv9-ri
Saludos!, me encanta SbD
Gracias, nunca viene mal conocer herramientas adicionales, aunque yo para estas cosas con el procmon de SysInternals voy que chuto.
HOLA,
ESTUPENDA HERRAMIENTA FSMONITOR. TE IMPORTARÍA DESCRIBIR LOS PASOS DE CÓMO INSTALARLA EN WINDOWS Y HACERLA FUNCIONAR? NO ENCUENTRO INSTALADOR ALGUNO...
Publicar un comentario