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"