A chaque faille découverte c'est le même processus : on cherche à patcher les machines concernées. Suivant la taille de votre infra et le nombre d'admins il y a fort à parier que vous allez oublier de patcher quelques machines.
Mise à jour : il est possible de récupérer les fichiers chiffrés avec WannaKiwi
Voyons comment détecter rapidement les machines faillibles à l'exploit WannaCry (ou tout autre exploit) avec l'outil Nmap.
Ingrédients
C'est l'outil de scan open source Nmap qui va nous permettre de lancer le scan, à l'aide du plugin associé à l'exploit : smb-vuln-ms17-010.nse.
Attention : vous devez être en version 7.40 minimum (génère une erreur sur les versions inférieures).
Pour le vérifier :
nmap -V
Avec Windows
Téléchargez et installez la dernière version stable pour Windows.
Téléchargez le plugin smb-vuln-ms17-010.nse dans le répertoire :
C:\Program Files (x86)\Nmap\scripts\
Ouvrir une invite de commande (non admin) pour lancer le scan.
Voici un exemple de scan d'une machine :
nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse monserver.maboite.lan
Voici un exemple de scan du 172.24.1.0/24 avec sortie dans un fichier texte :
nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse 172.24.1.0/24 -oN resultat.txt
Avec GNU/Linux
Installez le paquet xsltproc qui permet de générer un fichier html à partir d'un xml (Debian like):
apt-get install xsltproc
ou sur RedHat Like :
yum install xsltproc
Téléchargez et installez Nmap depuis les dépôts si la version supérieure ou égale à la v7.40.
Si ce n'est pas le cas il faut compiler Nmap à partir de la dernière version dispo (nmap-7.40.tar.bz2 actuellement).
Se placer dans un répertoire de votre choix, tel que /usr/share/nmap-compile, puis en tant que root :
bzip2 -cd nmap-7.40.tar.bz2 | tar xvf -
cd nmap-7.40
./configure
make && make install
Téléchargez le plugin smb-vuln-ms17-010.nse dans le répertoire :
/usr/share/nmap-compile/scripts
Voici un exemple de scan d'une machine :
./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse monserver.maboite.lan
Voici un exemple de scan du 172.24.1.0/24 avec sortie dans un fichier texte :
./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse 172.24.0.0/24 -oX scan.xml && xsltproc scan.xml -o "wanna_`date +%m%d%y`.html"
Attention : ne pas oublier le point "." devant "/nmap"
Récupérez ensuite le fichier html pour envoyer ce beau rapport :
Cette mise en forme rigoureuse témoignera du sérieux avec lequel vous faites votre job, le rapport est tout à fait "manager ready".
En cas de faille détectée
Voici ce que retourne NMAP quand une machine vulnérable à l'exploit SMBv1 est détecté :
Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-17 15:57 Paris, Madrid (heure d'été)
Nmap scan report for monserveur (172.24.1.12)
Host is up (0.00013s latency).
rDNS record for 172.24.1.12:monserveur.maboite.lan
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
Conclusion
Je n'ai pas trouvé le moyen de générer un rapport HTML sous Windows, que ce soit avec msxsl.exe ou Parse-Nmap.ps1 : ça ne fonctionne pas.
Si quelqu'un parvient à trouver le moyen de sortir un résultat pour avoir un serveur par ligne et son état (touché ou non) ce serait pas mal pour lister ça dans un tableur et suivre l'installation du patch sur le parc. Probablement en utilisant l'option "-oG" de nmap, et à coup de awk et cut...
N'oubliez pas de relancer des scans une fois que tout est patché.
Ce tutoriel s'applique bien sûr à tous les plugins NMAP, WannaCry n'était qu'un prétexte pour vous présenter cette méthode que j'utilise depuis des années, par exemple avec heartbleed.
Cela fonctionne aussi avec Metasploit en utilisant :
auxiliary/scanner/smb/smb_ms17_010
avec "set RHOSTS 172.22.0.0/24" puis "run" (tutoriel).
note : cela fonctionne aussi en théorie sur OS X en mettant le plugin nse dans /opt/local/share/nmap/scripts/
En supplément : vérificateur de la vulnérabilité EternalBlue chez ESET
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
9 commentaires
Sur OSX ça fonctionne en compilant depuis les sources.
Bonjour et merci pour ce post,
Je rencontre un petit soucis lors d'une demande de scan d'une machine via son ip
"NSE: failed to initialize the script engine:
/usr/share/nmap/nmap-compile/nmap-7.40/nse_main.lua:816: 'smb-vuln-ms17-010.nse' did not match a category, filename, or directory
stack traceback:
[C]: in function 'error'
/usr/share/nmap/nmap-compile/nmap-7.40/nse_main.lua:816: in local 'get_chosen_scripts'
/usr/share/nmap/nmap-compile/nmap-7.40/nse_main.lua:1271: in main chunk
[C]: in ?
QUITTING!"
Auriez-vous une idée de la source du pb ?
@masenate: lance une invite de commande en tant qu'admin puis :
nmap --script-updatedb
Si cela ne fonctionne pas alors retélécharge le fichier NSE, il y a un problème de format / encodage au moment où tu l'enregistre avec ton navigateur. Vérifie que le contenu est bien lisible avec Notepad++ par exemple
Bonjour,
Merci pour le post.
Je me demandais, comment agit le plugin?
En effet, quel mécanisme fait que le nmap sur le port 445 réponde selon les machines par "port ouvert" mais sans alerte de sécurité liée au plugin et des fois le port 445 est ouvert avec alerte de sécurité.
A partir du moment où le port 445 est ouvert sur une machine, n'est-elle pas potentiellement vulnérable au wanna-crypt?
Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-18 15:48 CEST
Nmap scan report for xxxxxx (192.168.XX.9)
Host is up (0.00027s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-18 15:48 CEST
Nmap scan report for xxxxx (192.168.XX.8)
Host is up (0.0012s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
@chocobisous: le patch ne ferme pas le port, il corrige la vulnérabilité qui passe par le port 445. Dès que tu as un partage de fichier (partage administratif inclus) le port 445 est ouvert. Nmap parvient à détecter si le patch a été appliqué, en exploitant le même mécanisme que le ferait un attaquant, sauf qu'il ne fait que tester au lieu de prendre la main sur ta machine 🙂
@Mr Xhark:
Merci ca marche nickel à présent.
Ce script fait ça à merveille via PowerShell :
https://gist.github.com/iwikmai/65b8a5b882e782d78fc5f466dfd2cde4#file-get-ms17010-ps1
@yannbouvier: merci je l'avais croisé celui-là, du coup je l'ai testé et sur Win7 64 j'ai une erreur. Il faut une version de powershell particulière ?
Merci