logo rss

Installer et utiliser Greenbone Vulnerability Manager dans la distribution Kali Linux

Logo Kali Linux Logo greenbone openvas

Greenbone Vulnerability Manager (anciennement OpenVAS) est un logiciel Open source qui inclus plusieurs outils (OpenVas, WebUI, …) pour réaliser des analyses de vulnérabilités.

En effet, nous pourrons depuis ce logiciel réaliser une analyse complète des vulnérabilités d'un réseau ou d'une seule machine.

Historiquement Greenbone Vulnerability Manager est un fork de Nessus qui est devenu aurjourd'hui un logiciel propriétaire.

Installer GVM

Installation

  • Mettre à jour les paquets :
kali@kali:~$ sudo apt update && sudo apt dist-upgrade
  • Installer les paquets logiciels suivant :
kali@kali:~$ sudo apt install gvm postgresql nsis
  • Lancer le script de mise en service :
    • Ce dernier effectuera les actions suivantes :
      • Démarrer les service et création de la base PostgreSQL
      • Création des fichiers certificats GVM
      • Application des permissions
      • Mise à jour des définitions de vulnérabilités
      • Création et paramétrage du compte admin
kali@kali:~$ sudo gvm-setup
  • Si le message d'erreur The default PostgreSQL version (16) is not 17 that is required by libgvmd apparait, il faudra intervertir les ports d'écoutes de PostgreSQL :
kali@kali:~$ sudo gvm-setup
[>] Starting PostgreSQL service
[-] ERROR: The default PostgreSQL version (16) is not 17 that is required by libgvmd
[-] ERROR: libgvmd needs PostgreSQL 17 to use the port 5432
[-] ERROR: Use pg_upgradecluster to update your PostgreSQL cluster
  • Exemple ici avec la commande sed qui permet de paramétrer le port 5432 pour PostgreSQL 17 et 5433 pour PostgreSQL 16 :
kali@kali:~$ sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/17/main/postgresql.conf
kali@kali:~$ sudo sed -i 's/port = 5432/port = 5433/' /etc/postgresql/16/main/postgresql.conf
  • Redémarrer le service PostgreSQL pour que les modifications soient prises en compte :
kali@kali:~$ sudo systemctl restart postgresql
[…]
[*] Please note the password for the admin user
[*] User created with password 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx'.

[>] You can now run gvm-check-setup to make sure everything is correctly configured
Bien noter le mot de passe de l'utilisateur admin.
  • Démarrer les services gvmd et gsad :
kali@kali:~$ sudo systemctl start gvmd.service && sudo systemctl start gsad.service
  • Lancer le script de vérification de configuration :
kali@kali:~$ sudo gvm-check-setup
[>]
It seems like your GVM-23.11.0 installation is OK.
  • Vérifier que le service gvmd est correctement lancé :
kali@kali:~$ sudo systemctl status gvmd.service
  • Vérifier que le service WebUI est en attente de clients :
kali@kali:~$ sudo ss -ltn4p
State         Recv-Q        Send-Q                Local Address:Port                 Peer Address:Port        Process                                                          
LISTEN        0             4096                         127.0.0.1:9392                       0.0.0.0:*            users:(("gsad",pid=2243,fd=10))
  • Donner les droits de création de taches à l'utilisateur admin :
kali@kali:~$ sudo gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value admin
  • On devrait maintenant pouvoir se connecter à l'adresse https://127.0.0.1:9392 avec le login admin :
Page de connexion de l'assistant de sécurité Greenbone affichant les champs du nom d'utilisateur et du mot de passe

Changer l'interface de connection WebUI (Optionnel)

Dans sa configuration par défaut Greenbone Security Assistant (GSA) (WebUI) est seulement accessible via l'adresse locale (127.0.0.1). Pour pouvoir se connecter à l'interface Web depuis n'importe quel hôte du réseau nous aurons besoins de modifier la configuration systemctl des services.

  • Modifier le fichier /usr/lib/systemd/system/gvmd.service :
[Unit]
Description=Greenbone Vulnerability Manager daemon (gvmd)
After=network.target networking.service postgresql.service ospd-openvas.service
Wants=postgresql.service ospd-openvas.service
Documentation=man:gvmd(8)
ConditionKernelCommandLine=!recovery

[Service]
Type=forking
User=_gvm
Group=_gvm
PIDFile=/run/gvmd/gvmd.pid
RuntimeDirectory=gvmd
RuntimeDirectoryMode=2775
#ExecStart=/usr/sbin/gvmd --osp-vt-update=/run/ospd/ospd.sock --listen-group=_gvm
ExecStart=/usr/sbin/gvmd --osp-vt-update=/run/ospd/ospd.sock -a 0.0.0.0
Restart=always
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
  • Modifier le fichier /usr/lib/systemd/system/gsad.service :
[Unit]
Description=Greenbone Security Assistant daemon (gsad)
Documentation=man:gsad(8) https://www.greenbone.net
After=network.target gvmd.service
Wants=gvmd.service

[Service]
Type=forking
User=_gvm
Group=_gvm
RuntimeDirectory=gsad
RuntimeDirectoryMode=2775
PIDFile=/run/gsad/gsad.pid
#ExecStart=/usr/sbin/gsad --foreground --listen 127.0.0.1 --port 9392
ExecStart=/usr/sbin/gsad --mlisten=KALI_IP_ADDRESS --listen 0.0.0.0 --port 9392
ExecStart=/usr/sbin/gsad --foreground --mlisten=192.168.1.19 --listen 0.0.0.0 --port 9392
Restart=always
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
Alias=greenbone-security-assistant.service
  • Recharger la configuration systemd :
kali@kali:~$ sudo systemctl daemon-reload
  • Redémarrer les services gvm :
kali@kali:~$ sudo systemctl restart gvmd.service
kali@kali:~$ sudo systemctl restart gsad.service

Commandes Utiles

  • Mettre à jour le Network Vulnerability Tests :
kali@kali:~$ sudo -u _gvm greenbone-nvt-sync
  • Mettre à jour les feeds :
kali@kali:~$ sudo greenbone-feed-sync --type CERT
kali@kali:~$ sudo greenbone-feed-sync --type SCAP
kali@kali:~$ sudo greenbone-feed-sync --type GVMD_DATA
  • Créer un compte gvadmin :
kali@kali:~$ sudo runuser -u _gvm -- gvmd --create-user=gvadmin --password=stPassw0rd --disable-password-policy
  • Obtenir l'UUIDs de tous les utilisateurs :
kali@kali:~$ sudo runuser -u _gvm -- gvmd --get-users --verbose
  • Changer le mot de passe d'un utilisateur :
kali@kali:~$ sudo runuser -u _gvm -- gvmd --user=gvadmin --new-password=gvadmin

Utiliser GVM

Nous allons voir ici comment réaliser une première analyse de vulnérabilités d'un hôte.

Créer une cible

  • Aller dans Targets :
Interface de l'assistant de sécurité Greenbone mettant en évidence le menu Configuration et l'option Cibles
  • Cliquer sur le lien de Nouvelle Cible :
Interface de l'assistant de sécurité Greenbone montrant l'icône Nouvelle cible dans la section Cibles
  • Définir la cible à analyser en paramétrant l'adresse ip et en lui donnant un Nom :
Nouvelle fenêtre de configuration de la cible dans l'assistant de sécurité Greenbone, permettant de définir une cible avec une adresse IP manuelle et de sauvegarder les paramètres.

Création d'une tâche

  • Ouvrir Tasks :
Interface de l'assistant de sécurité Greenbone montrant le menu Scans et mettant en évidence l'option Tasks (tâches)
  • Cliquer sur l'icône de création de Nouvelle Tache :
Interface de l'assistant de sécurité Greenbone mettant en évidence l'option Nouvelle tâche dans le menu Analyses
  • Définir la Tache en précisant son Nom, en associant la Cible et en cochant Schedule Once :
Nouvelle fenêtre de configuration des tâches dans l'assistant de sécurité Greenbone, permettant de définir une tâche d'analyse avec la cible et le calendrier sélectionnés.
  • Cliquer sur le bouton Play afin de Lancer la tache :
Tableau de bord de l'assistant de sécurité Greenbone montrant l'état de la tâche avec le bouton de lecture en surbrillance pour lancer une analyse
  • Après quelques minutes, une fois la tache terminée, cliquer sur le lien pour accéder au dernier rapport du scan de vulnérabilités :
Tableau de bord de l'assistant de sécurité Greenbone affichant l'état d'avancement de la tâche, les résultats de sévérité et le lien vers le dernier rapport.
  • On devrait accéder à un rapport complet :
Rapport d'analyse des vulnérabilités de l'assistant de sécurité Greenbone montrant les problèmes détectés avec les niveaux de gravité et les hôtes affectés

Dépannage

À la création de la première tache, juste après l'installation, on pourra se trouver à avoir l'erreur suivante : Failed to find config 'daba56c8-73ec-11df-a475-002264764cea'. Cela peut venir du fait que l'utilisateur n'a pas les droits de créer de tache. Cela peut également venir du fait que tout les éléments n'ont pas encore été téléchargé. Voyons ci-dessous comment faire pour résoudre cela.

  • Donner les droits de création de taches à l'utilisateur admin :
kali@kali:~$ sudo gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value admin
  • Cela peut également venir du fait qu'une mise à jour est en cours (processur particulièrement long lors de la première initialisation), on pourra pour cela surveiller les logs pour contrôler l'avancement :
kali@kali:~$ sudo tail -f /var/log/gvm/gvmd.log
md manage:   INFO:2024-11-30 16h50.23 utc:4774: Updating /var/lib/gvm/scap-data/nvdcve-2.0-2011.xml
md manage:   INFO:2024-11-30 16h51.22 utc:4774: Updating /var/lib/gvm/scap-data/nvdcve-2.0-2018.xml
md manage:   INFO:2024-11-30 16h53.13 utc:4774: Updating /var/lib/gvm/scap-data/nvdcve-2.0-2019.xml
  • Et également vérifier l'activité du processus gvmd dans le dossier /var/lib/gvm/ :
kali@kali:~$ sudo lsof +D /var/lib/gvm/
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/109/gvfs
      Output information may be incomplete.
COMMAND  PID USER FD   TYPE DEVICE SIZE/OFF    NODE NAME
gvmd    4771 _gvm 18uW  REG    8,1        0 1493222 /var/lib/gvm/feed-update.lock
gvmd    4774 _gvm 18u   REG    8,1        0 1493222 /var/lib/gvm/feed-update.lock
gvmd    4774 _gvm 20r   DIR    8,1      4096 1453575 /var/lib/gvm/scap-data
gvmd    4774 _gvm 21r   REG    8,1 107150285 1493243 /var/lib/gvm/scap-data/nvdcve-2.0-2020.xml