
Artículo · Recolección de Información
Escaner de Vulnerabilidades Vuls
Al igual que en otras situaciones, luego de una conferencia de la comunidad DragonJar “Cómo ser del equipo azul, cuando la billetera está en rojo”, durante el OWASP Panamá 2019, me dio la curiosidad de probar Vuls.
Vuls es open-source, sin un agente para escanear vulnerabilidades escrito en GO, Permite automatizar la fase analisis de vulnerabilidades de las aplicaciones instaladas en el sistema operativo, es decir es una alternativa a Nessus o OpenVAS.
Esta herramienta cuenta con varias bases de vulnerabilidades como NVD (National Vulnerability Databses). Adicionalmente y la parte que me llama la atención es la generación de reportes indicando la falla y la corrección de las mismas, teniendo la opción de enviar los reportes via email o slack.
Requerimientos
- Servidor con 2GB de RAM con ubuntu server 18.04, dos cuentas de usuarios el root y otro adicional.
- Recomiendo usar el vps Vultr.com
Paso1: Instalación de Dependencias
Debemos crear un directorio para almacenar los datos relacionados a Vuls en la ruta /usr/share/vuls-data
# mkdir /usr/share/vuls-data
Vamos a darles permisos al usuario prueba al directorio creado anteriormente
# chown -R prueba /usr/share/vuls-data
Repositorios que necesitaremos en el Sistema install git, gcc, make, sqlite, debian-goodies, and wget.
# apt update
# apt install git gcc make sqlite debian-goodies wget -y
Necesitamos instalar Go y usaremos Snap
# snap install go --classic
Configuramos las variables de entorno para que funcione Go, para ello debemos crear el fichero
# touch /etc/profile.d/go-env.sh
Añadimos lo siguiente al fichero
# nano /etc/profile.d/go-env.sh
Dentro del archivo pegamos la siguiente información
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/snap/bin
Comprobamos que el archivo se guardara correctamente
Vamos hacer el archive ejecutable
# chmod +x /etc/profile.d/go-env.sh
Procedemos a recargar las variables de entorno
# source /etc/profile.d/go-env.sh
Paso2: Instalación y ejecución de go-cve-dictionary
Este paque descarga la base de datos NVD.
Crearemos un directorio para almacenar los datos de la BD
# mkdir -p $GOPATH/src/github.com/kotakanbe
Vamos a desplazarnos al directorio creado
# cd $GOPATH/src/github.com/kotakanbe
Descargamos el repositorio de nvd
# git clone https://github.com/kotakanbe/go-cve-dictionary.git
Dentro de la ruta accedemos a la siguiente ruta
# cd $GOPATH/src/github.com/kotakanbe/go-cve-dictionary
Listamos los contenidos dentro de go-cve-dictionary
Finalmente vamos a compilar e instalar, va demorar un poco en terminar de compilar
# make install
Vamos convertir los comandos en comandos del sistemas
# cp $GOPATH/bin/go-cve-dictionary /usr/local/bin
Necitamos de un directorio para guardar los logs, procedemos a crear el directorio
# mkdir /var/log/vuls
Asignamos los permisos al directorio
# chmod 700 /var/log/vuls
Otorgamos permisos al usuario prueba
# chown -R prueba /var/log/vuls
Vamos a obtener los datos de la BD de NVD, este comando va demorar un rato, es momento de ir por un café.
# for i in `seq 2002 $(date +"%Y")`; do sudo go-cve-dictionary fetchnvd -dbpath /usr/share/vuls-data/cve.sqlite3 -years $i; done
Paso3: Instalación y ejecucción de goval-dictionary
Este paquete es un directorio de base de datos de vulnerabilidades OVAL (Open Vulnerability and Assesment Languaje).
Descargaremos el repositorio dentro de la ruta $GOPATH/src/github.com/kotakanbe
# cd $GOPATH/src/github.com/kotakanbe
Clonamos el repositorio
# git clone https://github.com/kotakanbe/goval-dictionary.git
Accedemos al repositorio
# cd goval-dictionary
Compilamos e instalamos
# make install
Hacemos accesible los comandos al sistema
# cp $GOPATH/bin/go-cve-dictionary /usr/local/bin
Bajamos la base de datos de OVAL
# goval-dictionary fetch-ubuntu -dbpath=/usr/share/vuls-data/oval.sqlite3 18
Paso4: Instalación y ejecución de gost
Paquete de Go que provee acceso a los registros de seguridad de debian, vamos a descargarlos.
# mkdir -p $GOPATH/src/github.com/knqyf263
Navegamos al directorio
# cd $GOPATH/src/github.com/knqyf263
Clonamos el repo
# git clone https://github.com/knqyf263/gost.git
Accesamos al directorio
# cd gost
instalamos y compilamos
# make install
Por último los ejecutables lo hacemos accesibles al todo el sistema
# cp $GOPATH/bin/gost /usr/local/bin
Vamos hacer un symlink
# ln -s $GOPATH/src/github.com/knqyf263/gost/gost.sqlite3 /usr/share/vuls-data/gost.sqlite3
Creamos un directorio para los logs
# mkdir /var/log/gost
Le damos los persimos del usuario
# chmod 700 /var/log/gost
Ahora asignamos los permisos al usuariio prueba
# chown -R prueba /var/log/gost
Descargamos la base de datos issues y vulnerabilodades de debian
# gost fetch debian
Paso5: Descargamos y Configuramos Vuls
Ahora que contamos con las diversas base de datos de vulnerabilidades vamos a descargar e instalar vuls
Vamos a crear el repositorio de vuls
# mkdir -p $GOPATH/src/github.com/future-architect
Nos dirigimos a la ruta
# cd $GOPATH/src/github.com/future-architect
Clonamos el repositorio de Vuls
# git clone https://github.com/future-architect/vuls.git
Entramos al Vuls, recordamos que estamos dentro de la ruta $GOPATH/src/github.com/future-architect
# cd vuls
Compilamos e instalamos
# make install
Copiamos los ejecutables para que sean accesibles al sistema
# cp $GOPATH/bin/vuls /usr/local/bin
Vamos a ir a la ruta de vuls
# cd /usr/share/vuls-data
Creamos un archivo de configuración para vuls con el formato TOML, en la sección de slack debemos configurar nuestros datos de slack una vez creamos una aplicación de slack, comparto la siguiente guia para que puedan crear un app de slack y que puedan ser notificados en un canal de nuestra elección.
Creación de archivo config.toml
# nano config.toml
[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"
[slack]
hookURL = "your_hook_url"
channel = "#your_channel_name"
authUser = "your_username"
#notifyUsers = ["@username"]
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]
Debe verse de la siguiente manera
Verificamos la configuración
# vuls configtest
Escaneamos el servidor con el comando
# vuls scan
Los reporte podemos enviarlos a la integración con slack con el siguiente comando:
# vuls report -to-slack
El reporte de slack nos debe salir lo siguiente:
La pantalla de la consola es un poco confusa por lo que vamos a mostrarla pero no detalleremos demasiado, esto debe ser en la ruta de data de vuls para poder observar el resultado
# vuls tui
La herramienta es muy completa, tiene la facilidad que permite enviar los reports a slack para trabajo cplaborativo, lo que considero es un plus, muy similar a herramientas como Nessus, OpenVAS, tiene una opción para realizar análisis a múltiples hosts para ello utilizamos la cuenta de prueba, además podemos crear reportes periódicos creando un cron que a su vez nos llega a slack.
Referencias
https://www.howtoforge.com/how-to-install-and-use-vuls-vulnerability-scanner-on-ubuntu/
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Pentesting .

Escrito por
José MorenoPurple Team
Jugador de HTB, script kiddie, apasionado por la seguridad informática especialmente red team, Miembro Fundador Asociación Panameña de Peritos en Informática Forense, Purple-Team UTP.


