Enmanuel A. Naranjo Nápoles Linkedin

  • Support developer and Security analyst at Vintegris
  • Alumno de la 11ª edición del Máster en Ciberseguridad del Campus Internacional de Ciberseguridad.
Enmanuel A. Naranjo Napoles
Enmanuel A. Naranjo Napoles

Enmanuel A. Naranjo Nápoles Linkedin

  • Support developer and Security analyst at Vintegris
  • Alumno de la 11ª edición del Máster en Ciberseguridad del Campus Internacional de Ciberseguridad.

Systell es una herramienta joven creada para facilitar la obtención y validación de información de seguridad en entornos Linux. Brinda algunas de las funcionalidades más comunes en este tipo de herramientas de una manera ligera y sencilla. En esta entrada os hablaremos un poco más de ella.

¿Qué es Systell?​

Systell es una herramienta desarrollada en Python con el objetivo de facilitar al usuario la obtención y análisis de información basándose en reglas. Está diseñada para entornos Linux y posee integraciones con algunos componentes fundamentales de este tales como systemd, el journal y los gestores de paquetes.

¿Cómo funciona?

El principio funcional básico de Systell es que sus funcionalidades están divididas en módulos según el alcance del análisis. Teniendo un módulo para el análisis de registros, otro para el análisis de configuraciones, otro para binarios, etc. El usuario define que elementos desea analizar y que reglas va a emplear, posteriormente ejecuta el/los módulos correspondientes y el sistema le genera un reporte con la información solicitada.

¿Cómo utilizarlo?

El primer paso es instalar la herramienta. Actualmente para ello, han de seguirse los pasos que se describen en la documentación del proyecto, siendo estos:

  • Descargar o clonar el repositorio de systell que se encuentra en github: https://github.com/IlabSentuser/systell 
  • Instalar las dependencias necesarias, estas son: python3, nmap, y las librerías de python python-nmap, psutil, distro y systemd-python.
  • Configurar los componentes y reglas del análisis.
  • Ejecutar la herramienta, para ello se puede escribir: python systell.py.

Opcional: se puede utilizar la bandera -h para consultar la ayuda de la herramienta, por ejemplo: python systell.py -h

¿Cómo configurarlo?

Primeramente recordar que existen varios módulos, por ejemplo los módulos LOG, CONF y PACKAGE utilizan una configuración basada en definiciones y reglas, mientras que otros módulos utilizan listas.

Módulos LOG, CONF y PACKAGE

Estos módulos utilizan una sintaxis de configuración sencilla basada en ficheros de inicialización (.INI). La configuración se divide generalmente en dospartes. El qué, que son definiciones de objetos y el cómo que son las reglas. Por ejemplo una definición de objeto contiene entradas como estas:

Módulos LOG, CONF y PACKAGE

En este ejemplo se definen una serie de elementos a analizar, como por ejemplo el resultado de la ejecución del comando sudo pacman -Qkk o el fichero /etc/passwd. En cada caso se específica un identificador que es la sección, una descripción en el nombre, que es orientativo y puede ser cualquier cosa, el objeto a analizar, que puede ser un fichero o el resultado de ejecutar un comando y el fichero de reglas que es el que contendrá cada una de las reglas a aplicar durante el análisis de ese objeto.

¿Y las reglas?

Los ficheros de reglas poseen una sintaxis similar a la siguiente:

ficheros de reglas

Donde cada regla tiene un identificador, un tipo y otros campos que dependen del tipo de regla. Las reglas pueden ser de tipo Regex, Filtered o Combined. Esto significa que podemos utilizar expresiones regulares para la extracción de información; en el caso de los filtros son reglas más sencillas que simplemente verifican la existencia de ciertos elementos en la entrada, y las reglas combinadas realizan una combinación de ambas, permitiendo filtrar la entrada y posteriormente extraer la información con expresiones regulares. Es importante notar que si bien el campo tipo es obligatorio en cada caso, los campos Regex y Filters solo son necesarios cuando el tipo de regla así lo requiera.

Otros módulos

Los módulos LOCAL y REMOTE utilizan otra sintaxis para sus definiciones, por ejemplo el módulo local permite definir listas de ficheros a verificar junto a sus propiedades:

 módulos LOCAL y REMOTE

En este ejemplo podemos ver como se han definido una serie de 4 ficheros a verificar y sus características esperadas, como por ejemplo la suma MD5 de estos, permisos, propietarios y grupo. La herramienta verificará si esto se cumple y notificará en caso de detectar un fichero que discrepe de lo definido. Existe una sintaxis similar para los procesos y el módulo también genera un reporte de los puertos locales abiertos.

El módulo REMOTE se encarga de definir sistemas remotos para escanear. Sin embargo posee dos modos, uno es precisamente un escaneo clásico. En el cual definimos la IP y puertos. Y otro modo de operación llamado assess este permite definir, similar al caso del módulo LOCAL, condiciones esperadas, por ejemplo en que estado debe de encontrarse un puerto o que sistema operativo se encuentra presente. La sintaxis es idéntica en cada caso excepto que para las operaciones de tipo assess se incluye, además el campo Assesment que define que características del sistema remoto se han de verificar, por ejemplo:

 módulo REMOTE

En el primer caso se ha solicitado un escaneo de los puertos 8000, 8002 y 8003 para las Ips 192.168.1.40 y 192.168.1.41. En el segundo caso se ha pedido que se verifique que el sistema con IP 192.168.1.40 está corriendo sobre Linux, posee el puerto 8000 abierto, el 8001 cerrado y todos los demás puertos del sistema también cerrados. La herramienta generará un reporte indicando el estado de cumplimiento de estas condiciones similar al siguiente:

Remote-virtualbox-scan

En este ejemplo se puede observar que no todos los demás puertos del sistema están cerrados, el 22 por ejemplo está abierto.

¿Algo más?

Systell permite algunas cosillas más como la verificación de la integridad de paquetes, si hay actualizaciones pendientes y la verificación de los servicios del sistema. Si a esto sumamos que los usuarios pueden crear sus propias reglas, incluyendo como ya se ha comentado la interpretación de la salida de otros comandos; entonces es bastante lógico decir que contamos con una herramienta bastante simple pero que nos facilita una gran cantidad de tareas de obtención y verificación de información. Además recordar que es una herramienta joven y seguramente irá incluyendo más funcionalidades.

Aún quiero más

Pues por nuestra parte poco más que podamos revelarte, pero eso sí, recomendamos seguir el proyecto para mantenernos al tanto cualquier adición interesante a la herramienta, además recomendamos leer la documentación oficial para armarnos con la información necesaria para explotar la herramienta al máximo.

¿Quieres obtener el mismo conocimiento que Enmanuel A.?

APRENDE MÁS CON EL MÁSTER EN CIBERSEGURIDAD

Comparte este post