Filesystem Sandbox for Linux – FSSB
En muchas ocasiones, necesitamos un sandbox (caja de arena) de nuestro sistema de ficheros, para poder analizar qué ficheros crea, lee o modifica una determinada aplicación o herramienta.
- Primero, intercepta las llamadas al sistema para la apertura, creación, modificación, renombrado, y borrado de ficheros.
- Detiene la ejecución del binario en cuestión, crea el fichero en un contenedor (crea un directorio en /tmp por cada ejecución)
- Devuelve el control al binario, haciéndole ver que, el fichero que intentaba crear, modificar, abrir, etc. es ese.
Hecho esto, bastará clonar el repositorio y compilar el binario: git clone https://github.com/adtac/fssb cd fssb make
Una vez compilado, su utilización es muy sencilla. Por ejemplo:
./fssb -m -- binario
-d <nombre_fichero> Con esta opción nos va a crear un fichero que contendrá todas las llamadas al sistema que ha realizado el binario.
-o <nombre_fichero> Para grabar la salidas del propio fssb en un fichero.
-r Elimina los ficheros temporales creados al finalizar.
-m Imprime el contenido del fichero con el mapeo realizado.
Un ejemplo de uso:
Primero creamos un archivo, por ejemplo «programa.py», con el siguiente contenido:
with open("prueba", "w") as f:
f.write("Feliz Martes!")
with open("prueba", "r") as f:
print(f.read())
Puede observarse que es un pequeño programa en python que crea un fichero llamado prueba en el directorio actual y, después, lo abre e imprime el contenido. Al ejecutar programa.py, la salida sería:
$ python programa.py
Feliz Martes!
Podemos comprobar que ha creado un archivo:
$ cat prueba
Feliz Martes!
Ejecutamos fssb:
$ ./fssb -m -- python programa.py
Feliz Martes!
fssb: child exited with 0
fssb: sandbox directory: /tmp/fssb-1
+ 25fa8325e4e0eb8180445e42558e60bd = prueba
Podemos comprobar que no hay ningún fichero creado:
$ cat prueba cat: prueba: No such file or directory
El archivo se ha creado en un directorio temporal:
$ cat /tmp/fssb-1/25fa8325e4e0eb8180445e42558e60bd
Feliz Martes!