Los sistemas operativos actuales, así como sus componentes (servicios, procesos y aplicaciones), actualmente sufren ataques de diversos tipos tanto a nivel interno como externo por amenazas categorizadas de todo tipo y si somos administradores o usuarios avanzados tendremos que estar preparados antes esos ataques y aprender a tener un sistema especial de protección. Pero para esto lo básico es determinar qué vulnerabilidades presenta el equipo para trabajar en ellas, Solvetic en este tutorial explicará de manera clara cómo usar Vuls para llevar a cabo este análisis.
Vuls es compatible con múltiples sistemas operativos y aplicaciones, y hace uso de diversos tipos de escaneo para las tareas de detección de vulnerabilidades, esto va desde análisis de puertos, verificación de versiones de software hasta la detección de vulnerabilidades en archivos y configuraciones las cuales pueden estar ocultas como algo normal peor desencadenar una serie de problemas en el sistema.
- Integración con sistemas de gestión de vulnerabilidades populares como JIRA y GitHub con el fin de automatizar la gestión de las vulnerabilidades que son detectadas.
- Función de escaneo automático de sistemas y aplicaciones.
- Crea informes detallados acerca las vulnerabilidades detectadas, este informe cuenta con análisis de la gravedad de la vulnerabilidad, así como una serie de recomendaciones para corregirlas.
- Soporte para múltiples sistemas operativos y aplicaciones.
- Compatible con Apache, MySQL y más.
- Escaneo en modo fuera de línea sin acceso a Internet.
- Permite escanear sin privilegios de root y sin dependencias.
- Puede detectar procesos que son afectados por procesos de actualización usando yum-ps.
- Modo de escaneo local.
- No requiere SSH.
- Es posible iniciar Vuls en modo servidor y que este escuche como un servidor HTTP.
- Se pueden crear resultados del escaneo en formato JSON.
- Podemos hacer análisis de middleware, bibliotecas de lenguajes de programación y frames para detectar vulnerabilidades.
- Software de soporte registrado en CPE.
Veamos cómo usar esta potente herramienta para mantener nuestros sistemas funcionales.
Cómo hacer un análisis de vulnerabilidades con Vuls
Abrimos la terminal y vamos a instalar las dependencias, creamos el directorio para los datos:
sudo mkdir /usr/share/vuls-data
Asignamos el acceso del usuario:
sudo chown -R (usuario) /usr/share/vuls-data
Actualizamos el sistema:
sudo apt update
Después de esto instalamos las utilidades necesarias para que todo funcione de manera óptima:
sudo apt install sqlite git debian-goodies gcc make wget
Confirmamos la operación ingresando la letra S:
Esperamos que este proceso llegue a su final:
sqlite es un sistema de base de datos con el cual se alojará la información de las vulnerabilidades, debian-goodies integra la utilidad checkrestart la cual ofrece información sobre los paquetes que pueden y deben reiniciarse en parte del proceso.
Ahora vamos a instalar Go, este es un lenguaje de programación eficiente gracias al cual será posible manejar aplicaciones grandes y complejas de manera simple, su estructura es simple y permite crear aplicaciones de alto rendimiento, algunas de sus características son.
- Hace un uso efectivo de diversos núcleos de CPU y cuenta con soporte nativo para la concurrencia
- Sus variables deben declararse con un tipo de datos específico
- Cuenta con soporte para la compilación cruzada
- Integra un recolector de basura que permite administrar la memoria
Para su instalación ejecutamos:
sudo snap install go –classic
Esperamos que llegue al final:
Para un óptimo funcionamiento, Go necesita contar con variables de entorno donde se configurará GOPATH y PATH, GOPATH especifica el directorio de trabajo para Go y PATH, es donde se alojan los directorios donde irán los programas, estas variables de entorno deben ser configuradas cada vez que el usuario inicia sesión, pero para evitar esto y automatizar la acción vamos a crear un nuevo archivo ejecutable denominado go-env.sh en /etc/profile.d, para esto ingresamos:
sudo nano /etc/profile.d/go-env.sh
Ingresamos lo siguiente. El comando “export” establece la variable de entorno con el valor especificado.
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin:/snap/bin
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Asignamos permisos de ejecución:
sudo chmod +x /etc/profile.d/go-env.sh
Para evitar el inicio de sesión ejecutamos lo siguiente:
source /etc/profile.d/go-env.sh
Como mencionamos las vulnerabilidades están alojadas en diversas bibliotecas a donde Vuls acudirá para actualizarse y permitir que el sistema este en óptimas condiciones, go-cve-dictionary, un paquete de Go, nos proporciona acceso a la base de datos nacional de vulnerabilidades o NVD (National Vulnerability Database), NVD es el repositorio del gobierno de EE.UU. de vulnerabilidades de seguridad cibernética que están públicamente.
Allí encontramos identificaciones de vulnerabilidad (CVE, vulnerabilidades), resúmenes y análisis de impacto de estas vulnerabilidades en la maquina y se encuentra en un formato legible , Go almacenara los paquetes en $GOPATH/src/, instalamos el diccionario Go-cve-dictionary, para ello creamos el directorio:
sudo mkdir -p $GOPATH/src/github.com/vulsio
Accedemos a la carpeta:
cd $GOPATH/src/github.com/vulsio
Clonamos el diccionario desde los repositorios:
sudo git clone https://github.com/vulsio/go-cve-dictionary.git
Accedemos al directorio:
cd go-cve-dictionary
Compilamos los archivos:
sudo make install
Esperamos que finalice este proceso:
Puedes copiar los archivos al sistema base:
sudo cp $GOPATH/bin/go-cve-dictionary /usr/local/bin
go-cve-dictionary requiere acceso a un directorio de salida de registro, para ello lo creamos:
sudo mkdir /var/log/vuls
Asignamos los permisos:
sudo chmod 700 /var/log/vuls
Permite el acceso al usuario:
sudo chown -R (usuario) /var/log/vuls
Ejecutamos el análisis de vulnerabilidades desde NVD:
go-cve-dictionary fetchnvd --dbpath /usr/share/vuls-data/cve.sqlite3
Iniciará el proceso de análisis:
Veremos detalles puntuales de cada vulnerabilidad:
Las opciones de go-cve-dictionary son:
- jvn: obtiene el diccionario de vulnerabilidades de JVN
- nvd: recupera el diccionario de vulnerabilidades de NVD
- --config string: configura el archivo de configuración de cadena
- --dbpath string: es la cadena de conexión SQL
- --debug: indica el modo de depuración (predeterminado: falso)
- --debug-sql: es el modo de depuración SQL
- --log-json: crea un registro de salida JSON
- --log-to-file: crea un registro de salida en archivo
Otro diccionario de vulnerabilidades es Goval, este es un paquete Go con el cual se tiene acceso a la base de datos OVAL para Ubuntu, OVAL (Open Vulnerability and Assessment Language), es un lenguaje abierto para expresar comprobaciones con el fin de determinar si existen vulnerabilidades de software en el sistema, hará uso de la base de datos del NVD como su fuente de información para las vulnerabilidades.
Vamos a instalar el diccionario Goval, para ello vamos a la ruta:
cd $GOPATH/src/github.com/vulsio
Clonamos el directorio:
sudo git clone https://github.com/vulsio/goval-dictionary.git
Accedemos al directorio:
cd goval-dictionary
Instalamos los complementos:
sudo make install
Ejecutamos un análisis para algunas de las distribuciones disponibles:
sudo goval-dictionary fetch-ubuntu --dbpath=/usr/share/vuls-data/oval.sqlite3 22
Con el parámetro fetch podemos agregar sistemas como:
- Red Hat, CentOS, AlmaLinux, Rocky Linux
- Ubuntu
- Debian
- Oracle
- SUSE
- Alpine
En la parte final ingresamos el numero de la versión a analizar. Es momento de instalar Vuls, instalamos Vuls desde los repositorios, en primer lugar, creamos el directorio:
sudo mkdir -p $GOPATH/src/github.com/future-architect
Accede al directorio:
cd $GOPATH/src/github.com/future-architect
Intenta descargar el repositorio desde el sitio oficial:
sudo git clone https://github.com/future-architect/vuls.git
Allí debemos tener cuenta creada, pero con las últimas versiones veremos lo siguiente:
Vemos que no se cuenta con soporte para este tipo de autenticación, en este caso accedemos como root usando "sudo -i", luego ejecutamos:
bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )
Validamos los binarios:
ls /usr/local/bin/
Creamos un nuevo directorio y creamos el archivo de configuración:
mkdir -p /usr/share/vuls-data touch /usr/share/vuls-data/config.toml
Editamos el archivo:
nano /usr/share/vuls-data/config.toml
Ingresamos los valores:
[cveDict] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/cve.sqlite3" [ovalDict] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/oval.sqlite3" [gost] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/gost.sqlite3" [metasploit] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/go-msfdb.sqlite3" [servers] [servers.localhost] host = "localhost" port = "local" scanMode = [ "fast" ] #scanMode = ["fast", "fast-root", "deep", "offline"]
Vemos cada dato registrado:
Se definirán 4 bases de datos vuls usando el formato SQLite3 que son:
- CVE (vulnerabilidades y exposiciones comunes)
- OVAL (Lenguaje Abierto de Evaluación y Vulnerabilidad)
- Gost: este usa el rastreador de seguridad de las distribuciones de Linux como Redhat, Debian, Ubuntu y Microsoft Windows.
- CVE de los módulos de Metasploit-Framework
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Accedemos al directorio:
cd /usr/share/vuls-data/
Ejecuta la prueba de configuración:
vuls configtest
Creamos un archivo de configuración:
vuls discover 127.0.0.1/32
Ejecutamos un escaneo general:
vuls scan
Para un análisis en un equipo específico ejecuta:
vuls scan localhost
Allí vemos detalles como el tipo de sistema, cantidad de paquetes instalados y amenazas detectadas.
Para ver los datos de forma gráfico (aplica cuando se detectan vulnerabilidades) ejecuta:
vuls tui
Para revisar el historial ejecutamos:
vuls history
Vuls es una utilidad integral para comprobar nuestro sistema, u otros equipos, y así tener la certeza que no poseen ninguna amenaza que ponga en riesgo su integridad.