đConnexion / Shell
Différentes façons de connexion
SSH (port 22 par défaut)
Commande classique
ssh [username]@[IPV4]Spécifier un port différent :
ssh -p [PORT] [username]@[IPV4]FTP (port 21 par défaut)
Client FTP classique :
ftp [IPV4]Ensuite, dans le client FTP :
saisir le login puis le mot de passe.
Connexion sur un port différent :
ftp [IPV4] [PORT]TELNET (port 23 par défaut)
Connexion Telnet classique :
SpĂ©cifier un port (trĂšs utile pour tester dâautres services) :
SMB â Partages Windows (ports 445 / 139)
AccÚs aux partages réseau Windows (fichiers, dossiers).
Lister / se connecter Ă un partage :
Sans authentification (test dâaccĂšs guest) :
Création d'un serveur Python
Ouvrir un serveur :
Récupération du fichier voulu sur serveur :
Shell
Le Shell est une interface en ligne de commande permettant dâinteragir avec le systĂšme dâexploitation. Il joue un rĂŽle central dans lâadministration, lâautomatisation des tĂąches, et lâexploitation de failles. La comprĂ©hension des commandes Shell, des scripts Bash, et des redirections est essentielle pour manipuler efficacement un systĂšme Linux, notamment lors de phases de post-exploitation. La room Linux Shells et Shell Overview de TryHackMe sont une excellente ressource pour explorer les diffĂ©rents types de shells et apprendre Ă les stabiliser dans un contexte dâattaque.
Qu'est-ce qu'un Shell ?
Un shell est un logiciel permettant à 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, selon le systÚme d'exploitation utilisé sur le systÚme cible.
En cybersécurité, ce terme désigne généralement une session shell spécifique utilisée par un attaquant pour accéder à un systÚme compromis, lui permettant d'exécuter des commandes et des logiciels.
La différence des shell :
Reverse Shell
Le reverse shell, parfois appelé « connect back shell », est l'une des techniques les plus répandues pour accéder à un systÚme lors de cyberattaques. Les connexions partent du systÚme cible vers la machine de l'attaquant, ce qui permet d'échapper à la détection des pare-feu réseau et autres dispositifs de sécurité.
Comment les reverse shells fonctionnent :
1. Lâattaquant prĂ©pare un listener Sur sa propre machine, lâattaquant ouvre un port en Ă©coute (listener). Il attend quâune machine distante se connecte dessus.
2. Un payload est exĂ©cutĂ© sur la cible Via une vulnĂ©rabilitĂ© (RCE, injection, macro, etc.), lâattaquant parvient Ă exĂ©cuter un petit morceau de code sur la cible. Ce code ouvre une connexion sortante (souvent TCP) vers lâIP et le port du listener de lâattaquant.
3. Redirection du shell vers la connexion rĂ©seau Une fois la connexion Ă©tablie, lâentrĂ©e/sortie dâun shell local (ex.
/bin/sh,bash,cmd.exe) est redirigĂ©e dans ce canal rĂ©seau. Tout ce que tape lâattaquant est envoyĂ© Ă ce shell, et tout ce que renvoie le shell revient au listener.4. Avantage cĂŽtĂ© attaquant Comme la connexion est sortante depuis la cible, elle passe souvent plus facilement les pare-feu (qui filtrent principalement les connexions entrantes). Câest pour ça que le reverse shell est la technique la plus populaire dans les environnements filtrĂ©s.
Bind Shell
Comme son nom l'indique, un Bind Shell lie un port sur le systÚme compromis et écoute une connexion ; lorsque cette connexion se produit, elle expose la session du shell afin que l'attaquant puisse exécuter des commandes à distance.
Cette mĂ©thode peut ĂȘtre utilisĂ©e lorsque la cible compromise n'autorise pas les connexions sortantes, mais elle a tendance Ă ĂȘtre moins populaire car elle doit rester active et Ă©couter les connexions, ce qui peut conduire Ă une dĂ©tection.
Comment les bind shells fonctionnent :
1. Ouverture dâun port en Ă©coute sur la cible Le payload exĂ©cutĂ© sur la machine compromise ouvre un port TCP en Ă©coute et y attache un shell (par exemple
/bin/sh).2. Lâattaquant se connecte Ă la cible Depuis sa machine, lâattaquant initie une connexion vers
IP_cible:port_bind. Une fois connecté, il prend le contrÎle du shell attaché à ce port.3. Sens du flux réseau Contrairement au reverse shell, la connexion est entrante vers la cible. Cela signifie que les pare-feu / NAT doivent laisser passer cette connexion pour que ça fonctionne.
4. Inconvénients
Plus facile à repérer cÎté réseau (un port inhabituel qui écoute).
Souvent bloquĂ© par les pare-feu (pas de rĂšgle entrante). Câest pour ça que le bind shell est aujourdâhui moins utilisĂ© en externe, mais il peut rester utile en environnement interne / lab.
Web Shell
Un shell web est un script Ă©crit dans un langage pris en charge par un serveur web compromis, qui exĂ©cute des commandes via le serveur web lui-mĂȘme. Un shell web est gĂ©nĂ©ralement un fichier contenant le code qui exĂ©cute les commandes et gĂšre les fichiers. Il peut ĂȘtre dissimulĂ© dans une application ou un service web compromis, ce qui le rend difficile Ă dĂ©tecter et trĂšs populaire auprĂšs des attaquants.
Les shells Web peuvent ĂȘtre Ă©crits dans plusieurs langages pris en charge par les serveurs Web, comme PHP , ASP, JSP et mĂȘme de simples scripts CGI.
Comment les web shells fonctionnent :
1. DĂ©pĂŽt du fichier malveillant Lâattaquant parvient Ă dĂ©poser un script sur le serveur (upload vulnĂ©rable, RCE, inclusion de fichier, etc.). Ce script contient du code capable dâexĂ©cuter des commandes systĂšme, gĂ©rer des fichiers, lister des rĂ©pertoires, etc.
2. Interaction via HTTP/HTTPS Pour utiliser le web shell, lâattaquant envoie des requĂȘtes HTTP vers lâURL du script, avec des paramĂštres indiquant la commande ou lâaction Ă exĂ©cuter (ex.
?cmd=whoami).3. ExĂ©cution cĂŽtĂ© serveur Le serveur interprĂšte le script (PHP, ASP, JSPâŠ), exĂ©cute la commande demandĂ©e et renvoie la sortie dans la rĂ©ponse HTTP (HTML, texte brut, JSONâŠ).
4. Avantage pour lâattaquant
Le trafic ressemble Ă du trafic web classique (HTTP/HTTPS).
Lâattaquant nâa besoin que dâun navigateur ou dâun simple client HTTP pour piloter le shell.
Le web shell peut ĂȘtre camouflĂ© (nom de fichier lĂ©gitime, placĂ© dans un rĂ©pertoire applicatif).
Shell Listeners
Un shell listener est le composant cÎté attaquant (ou parfois cÎté cible pour un bind shell) qui attend une connexion afin de prendre en charge une session de shell.
Comment les shells listeners fonctionnent :
1. Ouverture dâun port en Ă©coute Un programme (outil en ligne de commande, framework dâexploitation, etc.) ouvre un port rĂ©seau et se met en Ă©coute en attendant une connexion entrante.
2. Attente de la connexion du payload Quand un reverse shell est dĂ©clenchĂ©, le payload sur la cible se connecte Ă lâadresse et au port du listener.
3. Association de la connexion Ă un shell Le listener va alors attacher cette connexion Ă une interface interactive (console) pour permettre Ă lâattaquant de taper des commandes et de voir la sortie.
4. Utilisation typique
Listener pour reverse shell (cas le plus courant).
Handler dans des frameworks (ex. un âmulti/handlerâ qui gĂšre plusieurs sessions).
Du point de vue Blue Team, on peut surveiller lâouverture de ports en Ă©coute sur des systĂšmes oĂč cela nâest pas attendu, ou des connexions sortantes vers des ports non standards.
Shell Payloads
Un shell payload est le morceau de code qui, une fois exĂ©cutĂ© sur la cible, va Ă©tablir une session de shell (reverse, bind, web shell, etc.). Câest lui qui fait le âlienâ entre la vulnĂ©rabilitĂ© exploitable (RCE, overflow, macro, etc.) et la session interactive obtenue par lâattaquant.
Comment les shells payloads fonctionnent :
1. GĂ©nĂ©ration ou Ă©criture du payload Le payload peut ĂȘtre :
une ligne de commande qui lance un shell et redirige son entrée/sortie vers une socket réseau ;
un binaire compilé (dropper, backdoor) ;
un script (PowerShell, Python, PHP, etc.) ;
du shellcode injecté en mémoire via une vulnérabilité.
2. Exécution sur la cible Ce payload est exécuté grùce à une vulnérabilité :
injection de commande, RCE, macro malveillante, désérialisation, etc. Une fois lancé, il crée soit :
une connexion sortante (reverse shell),
un port en écoute (bind shell),
ou sâintĂšgre dans un service web (web shell).
3. Ătablissement de la session DĂšs que la connexion est Ă©tablie entre le payload et le listener (ou le client pour un bind shell), une session interactive est disponible (shell texte, parfois mĂȘme shell chiffrĂ© ou intĂ©grĂ© Ă un framework).
4. Vue Blue Team Comprendre les payloads permet :
dâanticiper les indicateurs de compromission (processus suspects, connexions anormales, fichiers inhabituels),
de détecter et bloquer les tentatives (filtrage de commandes, EDR, supervision réseau, contrÎle des scripts).
Comment stabiliser un shell :
Voici les différentes façon pour stabiliser un shell : Lien THM
Technique 1: Python (Principalement pour les machines Linux)
La commande suivante va permettre d'avoir un shell plus joli :
La commande suivante nous permettera d'avoir accĂšs a plus de commande :
Et pour finir, la commande suivante dĂ©sactive notre propre Ă©cho de terminal (qui nous donne accĂšs aux saisies semi-automatiques des onglets, aux touches flĂ©chĂ©es et Ă Ctrl + C pour arrĂȘter les processus)
Si le shell meurt/bug, n'hésitez pas à faire la commande suivante :
Technique 2: rlwrap (Principalement pour les machines Windows)
Pensez Ă installer rlwrap avant son utilisation :
Mis Ă jour