Syswall un firewall dinámico para las llamadas al sistema

Syswall es un nuevo desarrollo destinado a crear una similitud de un firewall dinámico para filtrar el acceso de las aplicaciones a las llamadas al sistema. El código del proyecto está escrito en el lenguaje Rust, la licencia no está especificada.

Este nuevo desarrollo se parece a la versión interactiva de la utilidad strace y le permite realizar un seguimiento de cada llamada al sistema ejecutada por el programa. La diferencia clave es que, además de mostrar información sobre las llamadas del sistema y los resultados de su ejecución.

Sobre Syswall

Syswall admite el modo interactivo en el que el proceso supervisado se detiene antes de realizar una llamada al sistema y se le solicita al usuario que continúe o ignore la operación (por ejemplo, puede monitorear los intentos de abrir cada archivo o proceso de conexión a la red).

Syswall también puede recopilar estadísticas sobre las llamadas del sistema realizadas y generar un informe basado en él.

Los objetivos de syswall son los siguientes:

Para proporcionar una versión mejorada de strace la cual es más fácil determinar qué software está haciendo realmente.
Proporcionar un entorno para probar y experimentar con el software al permitir un enfoque detallado e interactivo para permitir y rechazar las llamadas al sistema.

Cada proceso puede tener un archivo de configuración

Para cada proceso, se puede conectar un archivo de configuración con una lista de llamadas del sistema explícitamente permitidas o bloqueadas.

Para las llamadas compatibles, syswall permite al usuario realizar las siguientes acciones:

  • Permitir el syscall una vez
  • Siempre permite ese syscall particular
  • Bloquea el syscall una vez (hard or soft)
  • Siempre bloquea ese syscall en particular (hard or soft)
  • Al bloquear, el programa puede realizar un bloque (hard or soft).

Durante la sesión interactiva, es posible permitir o bloquear las llamadas específicas del sistema en el momento de la ejecución y cualquier llamada a esta llamada del sistema, independientemente de dónde se acceda al programa.
El bloqueo se admite en los modos “hard” y “soft”.

Tipos de bloqueos

En el primer caso, la llamada del sistema no se ejecuta y el código de error de acceso se envía al proceso. En el segundo caso, la llamada del sistema tampoco se ejecuta, pero el proceso recibe un código de retorno exitoso ficticio, que simula la ejecución exitosa de la llamada del sistema.

Por ejemplo, por el momento, solo se admite el análisis de llamadas a llamadas del sistema relacionadas con operaciones de archivos.

Un bloque hard impide que el syscall se ejecute y devuelve un error de permiso denegado al proceso hijo. Por otro lado, un bloqueo soft impide el syscall, pero intenta devolver una respuesta adecuada al proceso hijo para fingir que el syscall se ejecutó realmente.

En este caso, las solicitudes de confirmación se mostrarán solo cuando se refieran a llamadas del sistema especialmente marcadas o no encontradas anteriormente.

Guardar y cargar una configuración de proceso.

Las elecciones realizadas durante la ejecución se pueden guardar en un archivo JSON. Este archivo se puede cargar durante otra ejecución para que se utilicen las opciones anteriores.

Este es un trabajo en progreso: solo siempre se guardarán las respuestas permitidas / bloqueadas.

Informes

Cuando el proceso secundario finaliza, syswall emitirá un breve informe sobre las llamadas de sistema del proceso secundario. Actualmente, consta de todos los archivos abiertos o bloqueados, pero se ampliará en futuras versiones.

El proyecto se encuentra todavía en la etapa de un prototipo funcional y no se realizan todas las posibilidades concebidas.

Aun queda por desarrollar mas

Hay una gran lista de tareas pendientes para el proyecto, en el futuro, se planea agregar soporte para clases adicionales de llamadas al sistema, la capacidad de verificar teniendo en cuenta los argumentos pasados a la llamada al sistema, medios para guardar el estado del proceso en un archivo para una comparación posterior de la actividad durante diferentes lanzamientos de programas (por ejemplo, para comparar listas de archivos y conexiones de red), opción para ignorar cargue bibliotecas dinámicas y admita el conjunto típico de configuraciones (por ejemplo, bloquee todos los sockets, pero permita el acceso a archivos).

 

 

 


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.