Cómo instalar y utilizar el escáner de vulnerabilidades Vuls en Ubuntu 24.04
Vuls es un escáner de vulnerabilidades sin agente, gratuito y de código abierto que puede ejecutarse en cualquier lugar. Puedes ejecutar Vuls en la nube, in situ y en Docker, y es compatible con las principales distribuciones. Vuls es compatible con múltiples bases de datos de vulnerabilidades, como NVD, JVN, OVAL, RHSA/ALAS/ELSA/FreeBSD-SA.
Con Vuls, puedes escanear varios sistemas operativos utilizando múltiples métodos. Puedes escanear los locales de tu host, y puedes escanear hosts/servidores remotos vía SSH. También proporciona múltiples métodos de escaneo, un escaneo rápido que no requiere privilegios de root y un escaneo profundo que requiere privilegios de root. Vuls puede escanear varios servidores de destino a la vez. Una vez finalizado el escaneo, puedes enviar el resultado por correo electrónico y Slack.
En esta guía, te mostraremos cómo instalar el Escáner de Vulnerabilidades Vuls en un servidor Ubuntu 24.04. Instalarás Vuls, generarás bases de datos CVE y escanearás Ubuntu/Debian mediante escaneos locales y remotos.
Requisitos previos
Para empezar con esta guía, asegúrate de que tienes lo siguiente:
- Un servidor Ubuntu 24.04
- Un usuario no root con privilegios de root
- Una máquina Ubuntu/Debian adicional para el escaneo remoto mediante Vuls
Instalación de dependencias
Antes de instalar Vuls, debes asegurarte de que Golang está instalado en tu sistema. Por ahora, la última versión de Vuls requiere la última versión de Golang, por lo que debes instalar Golang manualmente descargando el paquete binario.
En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Ubuntu e instalar dependencias como‘sqlite3‘,‘git‘,‘make‘ y‘gcc‘.
sudo apt update sudo apt install sqlite3 git debian-goodies gcc make wget -y
Una vez instaladas las dependencias, tienes que instalar Golang en tu sistema. En este ejemplo, será la última versión de Golang mediante instalación binaria manual.
Selecciona tu versión de Golang con lo siguiente. Por ejemplo Golang 1.23.2:
export latest_version=1.23.2
Ejecuta el siguiente comando ‘wget’ para descargar Golang y extráelo al directorio‘/usr/local‘ con el comando‘tar‘.
wget https://dl.google.com/go/go$latest_version.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go$latest_version.linux-amd64.tar.gz
Una vez instalado Golang, inicia sesión con tu usuario y crea un nuevo directorio‘go‘ dentro del directorio home.
su - arvd mkdir $HOME/go
A continuación, crea un nuevo archivo env‘/etc/profile.d/go-env.sh‘ con el editor‘nano‘.
sudo nano /etc/profile.d/go-env.sh
Pega la siguiente configuración para establecer el PATH para Golang.
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Guarda y sal del archivo cuando hayas terminado.
Ahora haz ejecutable el archivo‘/etc/profile.d/go-env.sh‘ y cárgalo en tu sesión actual con el comando‘source‘.
sudo chmod +x /etc/profile.d/go-env.sh source /etc/profile.d/go-env.sh
Por último, comprueba el archivo binario de‘go’ y comprueba su versión con lo siguiente:
which go go version
Como puedes ver a continuación, Golang‘1.23.2‘ está instalado en‘/usr/local/go/bin/go‘.
Instalar Vuls y los diccionarios Vuls
Una vez instalado Golang, tendrás que compilar e instalar Vuls y sus componentes para crear bases de datos CVE en formato sqlite3. A continuación se indican algunos componentes de Vuls que deberás instalar:
- ‘go-cve-dictionary‘ se utiliza para construir la NVD (Base de Datos Nacional de Vulnerabilidades)
- goval-dictionary‘ para crear la base de datos OVAL, que contiene CVE para la mayoría de las distribuciones de Linux, como Debian, Ubuntu y RedHat.
- go-exploitdb‘ para buscar exploits en la base de datos exploitdb
- ‘go-msfdb‘ para buscar CVE en las bases de datos de Metasploit
- go-kev‘ para crear una copia local de KEV (Vulnerabilidades Explotadas Conocidas) proporcionada por CISA
- go-cti‘ que se utilizará para crear una base de datos CVE a partir de CTI (Cyber Threat Intelligence)
En primer lugar, ejecuta el siguiente comando para crear nuevos directorios de registro y cambia la propiedad a tu usuario como ‘arvd’.
sudo mkdir /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti} sudo chown arvd /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti} sudo chmod 700 /var/log/{vuls,go-exploitdb,go-msfdb,go-kev,go-cti}
Crea un nuevo directorio ‘$GOPATH/src/github.com/vulsio’ con lo siguiente:
mkdir -p $GOPATH/src/github.com/vulsio
Desplázate al directorio ‘$GOPATH/src/github.com/vulsio’, descarga el código fuente de la herramienta‘go-cve-dictionary‘ a través de ‘git’, y compílalo e instálalo.
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/go-cve-dictionary.git cd go-cve-dictionary; make install
Ahora ejecuta el siguiente comando para descargar, compilar e instalar la herramienta«goval-dictionary«.
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/goval-dictionary.git cd goval-dictionary; make install
Una vez instalado ‘goval-dictionary’, pasa a la siguiente herramienta para instalar la herramienta‘go-exploitdb‘.
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/go-exploitdb.git cd go-exploitdb; make install ln -s $GOPATH/src/github.com/vulsio/go-exploitdb/go-exploitdb.sqlite3 $HOME/go-exploitdb.sqlite3
A continuación, ejecuta el siguiente comando para instalar y compilar la herramienta«go-msfdb«.
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/go-msfdb.git cd go-msfdb; make install
Después, instala la herramienta‘go-kev‘ para crear bases de datos CVE para KEV (Vulnerabilidades Explotadas Conocidas) de CIS por CISA.
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/go-kev.git cd go-kev; make install ln -s $GOPATH/src/github.com/vulsio/go-kev/go-kev.sqlite3 $HOME/go-kev.sqlite3
Y después instala la herramienta‘go-cti‘ que se utilizará para construir CVE de CTI (Inteligencia sobre Ciberamenazas).
cd $GOPATH/src/github.com/vulsio git clone https://github.com/vulsio/go-cti.git cd go-cti; make install ln -s $GOPATH/src/github.com/vulsio/go-cti/go-cti.sqlite3 $HOME/go-cti.sqlite3
A continuación, ejecuta el siguiente comando para descargar, compilar e instalar‘vuls‘ en tu máquina Ubuntu.
mkdir -p $GOPATH/src/github.com/future-architect cd $GOPATH/src/github.com/future-architect git clone https://github.com/future-architect/vuls.git cd vuls; make install
Cuando todo esté instalado, el archivo binario de cada herramienta estará disponible en el directorio ‘$GOPATH/bin’. Ejecuta el siguiente comando para comprobar ese directorio.
ls $GOPATH/bin/
Puedes ver a continuación el archivo binario para‘vuls‘,‘go-cve-dictionary‘,‘goval-dictionary‘,‘go-exploitdb‘,‘go-msfdb‘,‘go-kev‘ y‘go-cti‘.
Por último, también puedes consultar el comando‘vuls‘ que aparece a continuación. Esto te mostrará el mensaje de ayuda de‘vuls’.
vuls help
Descargar bases de datos CVE (Common Vulnerabilities and Exposure)
En este ejemplo, descargarás las bases de datos CVE para:
- NVD (Base de Datos Nacional de Vulnerabilidades) mediante‘go-cve-dictionary‘
- OVAL (Lenguaje Abierto de Evaluación de Vulnerabilidades) para Ubuntu 24.04 mediante«goval-dictionary«.
- Bases de datos ExploitDB mediante«go-exploitdb
- Bases de datos Metasploit mediante‘go-msfdb
- Catálogo KEV (Vulnerabilidades Explotadas Conocidas) de CISA a través de«go-kev
- Bases de datos ATT&CK y CAPEC de MITRE mediante«go-cti
Ve a tu directorio personal con lo siguiente:
cd $HOME
Ahora ejecuta el siguiente comando para descargar y crear las bases de datos CVE (Vulnerabilidades y Exposiciones Comunes).
go-cve-dictionary fetch nvd goval-dictionary fetch ubuntu 24.04 go-exploitdb fetch exploitdb go-msfdb fetch msfdb go-kev fetch kevuln go-cti fetch threat
Una vez finalizado el proceso, tus bases de datos CVE estarán disponibles en tu directorio personal con el formato ‘.sqlite3‘. Comprueba la lista de bases de datos con lo siguiente:
ls -ah *.sqlite3
Escanear la máquina local con Vuls
Ahora que ya has instalado Vuls y sus componentes, incluidas las bases de datos CVEs. En esta sección, escanearás tu máquina local Ubuntu con Vuls.
Dentro de tu directorio personal, crea un nuevo archivo‘config.toml‘ con el editor‘nano‘.
nano config.toml
Introduce la configuración que aparece a continuación para configurar el escaneo para localhost con el modo «rápido».
[servers]
[servers.localhost]
host = «localhost»
port = «local»
scanMode = [ «fast» ]
#scanMode = [«fast», «fast-root», «deep», «offline»]
Guarda el archivo y sal del editor.
Ahora ejecuta el comando ‘vuls’ que aparece a continuación para verificar el archivo ‘config.toml’.
vuls configtest
Si la configuración es correcta, verás una salida como la siguiente:
A continuación, escanea localhost con el comando ‘vuls scan‘ que aparece a continuación.
sudo vuls scan
Puedes ver a continuación que el proceso de escaneo se ha completado.
Para obtener detalles del informe de escaneado, utiliza el comando‘vuls tui‘ que aparece a continuación. Esto te mostrará la interfaz de usuario de terminal del informe de Vuls.
sudo vuls tui
Puedes pulsar‘CTRL+c’ para salir de la TUI de Vuls.
Escanear el servidor remoto con Vuls
En esta sección, aprenderás a configurar un escaneo remoto con Vuls. Así, escanearás el sistema remoto a través de SSH con Vuls. En este ejemplo, escanearás el servidor de destino Debian 12 con la dirección IP‘192.168.10.10‘ y el usuario es‘alice‘.
En primer lugar, ejecuta el siguiente comando para descargar la base de datos de OVAL para Debian 12.
goval-dictionary fetch debian 12
Ahora genera claves públicas y privadas SSH, y luego súbelas al servidor de destino con el comando‘ssh-copy-id‘.
ssh-keygen -t ed25519 ssh-copy-id [email protected]
Conéctate al servidor de destino ‘192.168.10.10’ y, a continuación, actualiza el índice de paquetes e instala dependencias como‘debian-goodies‘ y‘reboot-notifier‘.
ssh [email protected] sudo apt update && sudo apt install debian-goodies reboot-notifier -y
Escribe‘exit’ para cerrar la sesión en el servidor de destino.
A continuación, abre la configuración de Vuls‘config.toml ‘ utilizando el editor‘nano‘.
nano ~/config.toml
Introduce la configuración que aparece a continuación para añadir los datos del servidor de destino. En este caso, el nuevo servidor de destino se llamará‘debian12‘ con la dirección IP‘192.168.10.10‘ y la autenticación mediante clave SSH.
[servers.debian12] host = "192.168.10.10" port = "22" user = "alice" keyPath = "~/.ssh/id_ed25519" scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"
Guarda el archivo y sal del editor.
Ahora ejecuta el comando‘vuls‘ que aparece a continuación para verificar tu configuración. Asegúrate de que tienes la configuración correcta y adecuada.
vuls configtest
Después, escanea el servidor remoto‘debian12‘ con el comando que aparece a continuación.
vuls scan debian12
A continuación puedes ver que el escaneo remoto a través de Vuls se ha completado.
Conclusión
¡Enhorabuena! Has completado la instalación del Escáner de Vulnerabilidades Vuls en el servidor Ubuntu 24.04. También has aprendido a generar bases de datos CVE con Vuls, y a escanear servidores locales y remotos con Vuls. A partir de aquí, ahora puedes integrar Vuls con otro escáner como NMAP para escanear puertos, o también puedes instalar Vulsrepo para la interfaz gráfica y basada en web.