Nueva herramienta Aridi: obteniendo información del sistema y su infraestructura en Linux

10 de junio de 2019

Dentro de nuestro programa de tutorización de proyectos fin de máster, desde el área de Innovación y Laboratorio de ElevenPaths, hemos considerado oportuno destacar el trabajo de Daniel Pozo con la herramienta Aridi, un completo sistema en Python (sin dependencias) para obtener la información de seguridad de cualquier sistema Linux en una red.

Los administradores de sistemas realizan siempre tareas repetitivas en servidores, ya sea en una monitorización periódica o ante incidencias como pérdidas de conexión entre servidores, falta de espacio en disco, o caídas inesperadas de aplicaciones. Suelen necesitar obtener información básica del sistema, sus conexiones de red, configuraciones del firewall, carga y estado de los procesos o aplicaciones instaladas y sus versiones. Además, cuando se dispone de muchos sistemas heredados y la documentación de estos es escasa, nos encontramos con que es necesario buscar la infraestructura relacionada con la máquina. Para conseguir toda esa información, normalmente se examinan varios archivos de configuración o se ejecutan ciertos comandos básicos del sistema operativo (que hay que adaptar según la distribución que se trate, su versión, y los paquetes que tenga instalados) convirtiendo el objetivo en una tediosa tarea.

Para conseguir todo esto de un plumazo, hemos creado Aridi, una aplicación de línea de comandos en python, que obtiene toda la información necesaria de una sola vez, sin dependencias.

Propiedades

Aridi se puede ajustar para conseguir la información que más nos interese:

  • Información general sobre la CPU, memoria, dispositivos USB, kernel, distribución, almacenamiento o software instalado.
  • Información más específica sobre su configuración, su nombre de host, identificador único, servicios de la máquina, interfaces de red, rutas o reglas del firewall.
  • Información de la máquina en el momento de ejecución de Aridi, como los procesos, carga de los mismos y de la máquina, tasas de transferencia del disco, usuarios conectados y su histórico, o las conexiones de red que está realizando.

Aridi, también puede examinar los archivos de configuración y logs, buscando IPs o FQDN, detectando así posibles conexiones que no existan en el momento de ejecución, y después, cuando ya ha recopilado toda la información, puede escanear las red local de la máquina, o los puertos de las máquinas que estén relacionadas.

Cuando ya ha terminado de hacer todo esto, nos entregará un informe más resumido o más detallado (según se le pida) o simplemente un esquema con todas las máquinas relacionados según su IP, con el tipo de relación que tiene con la máquina que ejecutó Aridi. Si además, la máquina dispone de graphviz instalado, también puede pintar un mapa de red, para poder ver esta información visualmente.

Es importante destacar que Aridi no necesita ninguna otra dependencia ni librería (salvo la opcional de graphviz), evitando tener que instalar más herramientas en servidores, salvo el propio python3 si no estuviera ya.

Uso

Para usar Aridi, tras clonarlo desde github, solo hay que invocarlo con las opciones adecuadas, como por ejemplo:

# python3 aridi -a --scan --graph -of informe.txt

Con esto, realizará la máxima obtención de información (-a), escaneando también la red y los puertos de las IPs detectadas (--scan), generando un mapa de red (--graph) y sacando a disco un informe completo de todo. Eso nos devolverá finalmente 4 archivos:

  • informe.txt, el informe pedido en txt, que incluye en este caso el resumido, el detallado y la infraestructura encontrada.
  • network.dot.pdf, un documento pdf con el mapa de red.
  • network.dot, el mismo mapa de red de antes, en lenguaje .dot utilizable por graphviz, para poder llevárselo y ampliarlo o modificarlo.
  • aridi.badfiles, un listado con archivos que pueden tener los permisos StickyBit, SUID o GUID erróneamente configurados.

Finalmente destacar igualmente que Aridi puede funcionar con o sin permisos de root, pero que siempre es recomendable usarlo con permisos elevados para obtener más información, o para poder ejecutar el escaneo de red.

La herramienta puede ser descargada libremente desde este repositorio de Github.