Metasploit

Metasploit est un couteau suisse qui permet d’exécuter du code déjà pré-écrit par d’autre afin d’abuser de différent systèmes. Pour effectuer ses actions, Metasploit utilise des exploits qui affecte des vulnérabilités en envoyant des payloads. Pour bien comprendre la phrase, on va repartir sur trois définitions :

  • Un exploit est un morceau de code qui utilise une vulnérabilité sur le système visé.

  • Une vulnérabilité est une défaillance que ça soit par le design de l’application, sa logique ou encore son codage. Son exploitation peut permettre de porter atteinte au système.

  • Enfin, une payload, souvent dit charge en français est un code malicieux qui s’exécutera sur le système distant.

A l’instar de beaucoup d’outils « couteau suisse », ce dernier est extrêmement complet et sans doute trop pour un noob comme moi. Ainsi, voici quelques tips pour comprendre comment fonctionne msf.

Architecture de Metasploit

Basiquement, l’ensemble des outils de metasploit se trouvent sous /usr/share/metasploit-framework/modules/

┌──(kali㉿kali)-[~]
└─$ ls /usr/share/metasploit-framework/modules
auxiliary  encoders  evasion  exploits  nops  payloads  post

module

definition

auxiliary

L’ensemble des scanners, crawler et fuzzers de metasploit.

encoders

Différentes techniques d’encodage qui permettent d’offusquer les payloads.

evasion

Différentes techniques d’exfiltration de données dans le cas où de la sécurité serait présente.

exploits

L’ensemble des exploits organisé par type de cible.

nops

Des ensemble vides, qui n’exécutent rien. Ils servent à compléter les payloads quand nécessaire.

payloads

Nos charges exécutables qui tourneront sur les systèmes ciblés.

post

Des outils pour mettre en place une post-exploitation une fois dans le système.

A garder dans un coin : 3 type d’objets dans les payload : les singles, les stagers et les stages. Les singles, comme leur nom l’indiquent, fonctionnent toute seules. Elles n’ont besoin de rien pour tourner. Les Stagers sont des morceaux de code de pré-amorçage. Ils sont souvent bien plus petit et facile à envoyer vers l’attaquant mais demande après à ce dernier d’initier une connexion pour récupérer le reste de la charge : le stage . Les singles sont écrites sous la forme shell_reverse_tcp quand les stagers sont écrites sous la forme shell/reverse_tcp.

Lancement

┌──(kali㉿kali)-[~]
└─$ msf
Completing external command
msfconsole             msf-exe2vbs            msf-jsobfu             msf-nasm_shell         msfrpc
msfd                   msf-find_badchars      msf-makeiplist         msf-pattern_create     msfrpcd
msfdb                  msf-halflm_second      msf-md5_lookup         msf-pattern_offset     msfupdate
msf-egghunter          msf-hmac_sha1_crack    msf-metasm_shell       msfpc                  msfvenom
msf-exe2vba            msf-java_deserializer  msf-msf_irb_shell      msf-pdf2xdp            msf-virustotal

Les commandes qui nous intéresseront principalement sont msfconsole et msfvenom. msfconsole permettra d’utiliser metasploit de façon interactive quand msfvenom permettra de modifier ses payloads pour les envoyer différemment sur le système.

msfconsole

La console de Metasploit est relativement simple à utiliser. En cas de doutes, les commandes magiques sont help, search et info. La commande help va apporter des informations génériques; search lui va permettre de chercher un module grâce à son nommage ou sa description et info permet de connaitre le fonctionnement du module et ses options (obligatoires, facultatives et leur valeur par défaut !). Pour utiliser msfconsole, c’est plutôt simple :

┌──(kali㉿kali)-[~]
└─$ msfconsole
msf6 > search grafana
msf6 > use auxiliary/scanner/http/grafana_plugin_traversal
msf6 > info
msf6 > set RHOSTS 10.10.11.183
msf6 > run
msf6 > exit

*Notes : il est possible de lancer un module metasploit en oneliner pour ça, msfconsole -q -x "use $module; set $options; run ; exit"