Future-Architect a crée un scanner de vulnérabilités nommé VULS (supporte Ubuntu, Debian, CentOS, Amazon Linux et RHEL). VULS vous permettra de partir à la recherche de vulnérabilités déjà connues (CVE) sur vos machines. Son installation est relativement facile, tout comme son utilisation.
Puisque VULS peut effectuer des scans sur des remote-server je vous propose de l’installer sur une machine virtuelle, ici j’utiliserai Debian.
Recherche de vulnérabilités avec VULS
Installation des dépendances
Une fois connecté à notre machine virtuelle nous allons pouvoir lancé l’installation des paquets requis
sudo apt-get -y install sqlite git gcc wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz mkdir $HOME/go
Créons maintenant le fichier /etc/profile.d/goenv.sh
sudo nano /etc/profile.d/goenv.sh
Ajoutons les lignes suivantes
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ajoutons ces nouvelles variables d’environnement au shell
source /etc/profile.d/goenv.sh
Déploiement de go-cve-dictionnary
go-cve-dictionnary est une API vous permettant de récupérer les CVE (Common Vulnerabilities and Exposures) et de les stocker au format SQLite3
Installons donc go-cve-dictionnary
sudo mkdir /var/log/vuls sudo chown root /var/log/vuls sudo chmod 700 /var/log/vuls go get github.com/kotakanbe/go-cve-dictionary
Démarrons go-cve-dictionnary en mode serveur et récupérons toutes les CVE (peut prendre un peu de temps)
go-cve-dictionary server ... Fetching ...
Une fois le téléchargement terminé vérifions que la base de données soit bien présente
ls -alh cve.sqlite3 -rw-r--r-- 1 ec2-user ec2-user 7.0M Mar 24 13:20 cve.sqlite3
Puisque nous avons pu collectés notre dictionnaire de vulnérabilités nous allons maintenant pouvoir redémarrer go-cve-dictionnary en mode serveur
go-cve-dictionary server [Apr 10 17:01:20] INFO Opening DB. datafile: /root/cve.sqlite3 [Apr 10 17:01:20] INFO Migrating DB [Apr 10 17:01:20] INFO Starting HTTP Sever... [Apr 10 17:01:20] INFO Listening on 127.0.0.1:1323
Déploiement de VULS
Ne touchez plus à cette première session SSH mais ouvrez en une seconde.
Récupérons VULS
go get github.com/future-architect/vuls
Configuration des machine à scanner
Les données concernant les machines à scanner doivent etre stockées au format TOML
Créons donc notre fichier de configuration
sudo nano config.toml
Ajoutez les lignes suivantes puis configurez les (dans l’exemple ci-dessous nous scannerons la machine virtuelle)
[servers.127-0-0-1] host = "127.0.0.1" port = "22" user = "utilisateur" keyPath = "/root/.ssh/id_rsa"
Recherche de vulnérabilités
Commençons par préparer VULS
vuls prepare [Apr 10 17:20:57] INFO [localhost] Detecting OS... [Apr 10 17:20:57] INFO [localhost] Installing... [Apr 10 17:20:57] INFO [127-0-0-1:22] apt-get update... [Apr 10 17:21:05] INFO [127-0-0-1:22] Installed: aptitude [Apr 10 17:21:05] INFO [localhost] Success
La préparation s’étant correctement déroulé, nous allons pouvoir lancer un scan via la commande vuls scan
root@test:~$ vuls scan INFO[0000] Begin scanning (config: /root/config.toml) [Apr 10 17:23:18] INFO [localhost] Validating Config... [Apr 10 17:23:18] INFO [localhost] Detecting OS... [Apr 10 17:23:18] INFO [localhost] Scanning vulnerabilities... [Apr 10 17:23:18] INFO [localhost] Check required packages for scanning... [Apr 10 17:23:18] INFO [localhost] Scanning vulnerable OS packages... [Apr 10 17:23:26] INFO [127-0-0-1:22] (1/1) Upgradable: optipng-0.7.5-1 -> 0.7.5-1+deb8u1 [Apr 10 17:23:28] INFO [127-0-0-1:22] (1/1) Scanned optipng-0.7.5-1 : [CVE-2016-2191] [Apr 10 17:23:28] INFO [127-0-0-1:22] Fetching CVE details... [Apr 10 17:23:28] INFO [127-0-0-1:22] Done [Apr 10 17:23:28] INFO [localhost] Scanning vulnerable software specified in the CPE... [Apr 10 17:23:28] INFO [localhost] Reporting... 127-0-0-1 (debian 8.4) ====================== CVE-2016-2191 ? CVE-2016-2191 ------------- Score ? NVD https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-2191 CVE Details http://www.cvedetails.com/cve/CVE-2016-2191 Debian-CVE https://security-tracker.debian.org/tracker/CVE-2016-2191 [Apr 10 17:23:28] INFO [localhost] Insert to DB...
Une vulnérabilité a été détectée sur le serveur. Pour voir plus d’informations nous allons utiliser l’interface terminal de vuls
vuls tui
Recherche de vulnérabilités sur machine en réseau
Si vous avez plusieurs distributions Linux sur votre réseau vous pouvez utiliser le mode auto-discovery de VULS
Utilisez la commande help pour connaitre le range d’IP de votre réseau (si vous ne le connaissez pas)
vuls discover -help
Vuls nous indique alors quel range nous devons scanner
root@test:~$ vuls discover -help discover: discover 192.168.0.0/24
Scannons alors ce range d’IP
root@test:~$ vuls discover 192.168.0.0/24
Si des machines sont découverte VULS vous proposera alors une configuration toute prête pour lancer votre scan. Ci-dessous un exemple de retour de cette commande venant de la documentation officielle de VULS
$ vuls discover 172.31.4.0/24 # Create config.toml using below and then ./vuls --config=/path/to/config.toml [slack] hookURL = "https://hooks.slack.com/services/abc123/defghijklmnopqrstuvwxyz" channel = "#channel-name" #channel = "#{servername}" iconEmoji = ":ghost:" authUser = "username" notifyUsers = ["@username"] [mail] smtpAddr = "smtp.gmail.com" smtpPort = 465 user = "username" password = "password" from = "from@address.com" to = ["to@address.com"] cc = ["cc@address.com"] subjectPrefix = "[vuls]" [default] #port = "22" #user = "username" #password = "password" #keyPath = "/home/username/.ssh/id_rsa" #keyPassword = "password" [servers] [servers.172-31-4-82] host = "172.31.4.82" #port = "22" #user = "root" #password = "password" #keyPath = "/home/username/.ssh/id_rsa" #keyPassword = "password" #cpeNames = [ # "cpe:/a:rubyonrails:ruby_on_rails:4.2.1", #]
Source