osic4MVS 🦇 English version
osic4MVS a.k.a. OpenStack Instance Creation For MassVulScan
Script Bash qui permet de déployer et de lancer rapidement le scanner MassVulScan depuis des instances OpenStack du Cloud Public d'OVH.
Avec cette solution on limite et on contrôle les coûts (consommation à la demande).
A ce jour cela ne me coûte que 0.03$ CAD par scan (Data Center BHS3) (scan de plusieurs hôtes sur tous les ports TCP/UDP). Cela évite ainsi de devoir louer un serveur tous les mois, de le maintenir et de le protéger.
L'autre avantage, c'est d'avoir une adresse IPv4 qui change à chaque fois (pour contourner fail2ban par exemple et tester ses serveurs). Et c'est d'autant plus vrai que l'on peut choisir sa région, ce qui accroit davantage les possibilités.
J'ajoute que le support d'OVH m'a confirmé par écrit que cela n'était pas contraire à leurs conditions d'utilisation (TOS). Cependant, pour ne pas se retrouver bloquer (détection Anti-hack), je limite volontairement le scan à un débit de 2500pps, ce qui est largement suffisant.
Seuls les OS de la famille Debian sont concernés pour le moment.
ICMP Echo Reply (ping) et SSH port 22 doivent êtres ouverts depuis le serveur qui lance ce script vers l'Internet.
Liste des paquets à installer (compatible python 2.x et python 3.x) :
apt update
apt install python-openstackclient s-nail screen dnsutils ipcalc netcat-openbsd
Ou:
apt update
apt install python3-openstackclient s-nail screen dnsutils ipcalc netcat-openbsd
Voici les étapes dans les grandes lignes :
- Créer un compte chez OVHcloud : OVHcloud link (gratuit pour la création)
- Créer un utilisateur dédié et récupérer les variables d'environnement (fichier OpenStack RC) :
-> Public Cloud / Project Management / Users & Roles (rôle Compute Operator)
- Choisir sa région, créer un jeu de clés SSH, récupérer votre clé privée et retenir son nom :
-> Public Cloud / Management Interfaces / Horizon / Key Pairs
Pour les explications détaillées, rendez-vous sur mon blog : Déployer un scanner sur OpenStack
Exemple d'un scan complet de "scanme.nmap.org", 2*65535 ports :
- Vérification de l'accessibilité du Cloud Public d'OVH
- Vérification des instances OpenStack existantes
- Analyse du ou des fichiers sources (noms d'hôtes et/ou adresses IPv4, format CIDR)
- Création de l'instance puis attente de la disponibilité du serveur
- Déploiement du scanner MassVulScan + envoi du ou des fichiers hosts
- Lancement du scan MassVulScan : Masscan puis Nmap + vulners.nse
- Récupération des rapports en local via SCP
- Suppression des sessions screen et OpenStack
Un dessin vaut mieux qu'un long discours, la résultat en image :
Coût chez OVH: 0.03$ CAD
Durée du script: <5 minutes
Il est possible de suivre le déroulement du script via une session screen (phase d'installation + scan).
Et en paramétrant les variables "smtp_server", "recipient" et "auth_user_pass" il vous sera possible de recevoir des courriels :
- Lors du démarrage effectif du scan, un courriel est envoyé avec en objet l'adresse IPv4 du serveur
- Une fois le scan terminé, deux courriels sont envoyés avec en pièce jointe le ou les fichiers TXT + rapport HTML
- une fois la supression effective de l'instance OpenStack, un courriel est envoyé vous en informant
Pour l'authentification, l'utilisateur et le mot de passe sont spécifiés et encodés dans un URI (voir l'aide dans le script).
Exemple des courriels recus suite au scan de "scanme.nmap.org" :
Les rapports fournis :
- Un rapport HTML contenant le résultat complet de l'analyse
- Un fichier TXT contenant la liste des hosts avec les ports découverts
- Un fichier TXT permettant de se focaliser sur les hosts vulnérables (si il y a lieu)
Installation :
git clone https://github.com/choupit0/osic4MVS.git
cd osic4MVS
chmod +x osic4MVS.sh && chmod +x deploy.sh
Modifiez le fichier OpenStack RC pour ne pas saisir le mot de passe de l'utilisateur (user-XXXXXXXXXXXXXX) :
# With Keystone you pass the keystone password.
#echo "Please enter your OpenStack Password: "
#read -sr OS_PASSWORD_INPUT
#export OS_PASSWORD=$OS_PASSWORD_INPUT
export OS_PASSWORD="[VOTRE MOT DE PASSE]"
Update 1er Oct. 2021 - Expiration certificat Let's Encrypt :
Il faut ajouter ceci dans le fichier RC car OVH est affecté par le problème :
export CURL_CA_BUNDLE=""
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
Protégez votre fichier RC et votre clé privée SSH, obligatoire pour lancer le script :
chmod 600 [path to private SSH key]
chmod 600 [path to RC file]
Lancement : ./osic4MVS.sh -f [path to hosts file] -r [path to RC file] -k [path to private SSH key] -p [public SSH key name]
Exemple :
root@HTB:~/osic4MVS# ./osic4MVS.sh -f /tmp/scanme -r /tmp/rc_file -k /tmp/private_key -p scan-key
Ajouter le changelog- Traduire le README en anglais
- Tester d'autres solutions cloud et rendre compatible le scanner