Introduction
Ma passion pour le pentesting et la securité m'a conduite a developper un reverse shell en langage Go (Golang). L'objectif de ce projet est de créer un outil simple mais puissant permettant de prendre le contrôle d'un ordinateur cible de manière distante. Ce reverse shell est conçu pour être indétectable par les antivirus grâce à la simplicité de ses commandes et de son fonctionnement. Ce rapport décrit le fonctionnement, les fonctionnalités, et les commandes disponibles dans ce reverse shell.
Fonctionnement
Un reverse shell est un type de shell qui permet à un attaquant de prendre le contrôle d'un système cible à distance. Le fonctionnement de base d'un reverse shell repose sur l'établissement d'une connexion entre la machine cible (victime) et la machine de l'attaquant. Contrairement à un shell traditionnel où la connexion est initiée par l'attaquant, dans un reverse shell, c'est la machine cible qui initie la connexion vers l'attaquant.
Le reverse shell en Go que j'ai développé fonctionne de la manière suivante :
- 1 La machine cible exécute le programme du reverse shell.
- 2 La machine cible se met a ecouter sur le port specifié dans le code.
- 3 L'attaquant a tout moment se connecte a ce port en question.
- 4 Une fois la connexion établie, l'attaquant peut envoyer des commandes à la machine cible via cette connexion.
- 5 La machine cible exécute les commandes reçues et renvoie les résultats à l'attaquant.
Commandes disponnibles
Le reverse shell propose une large gamme de commandes permettant de contrôler la machine cible de diverses manières. Voici la liste des commandes disponibles :
- help : Affiche la liste des commandes disponibles.
- check : Vérifie si le serveur est actif.
- get_ip : Récupère les adresses IP locale et globale du serveur.
- exec : Exécute une commande shell.
- get_os : Récupère le nom du système d'exploitation.
- set_attacker <ip address> : Change l'adresse IP de l'attaquant.
- get_attacker : Récupère l'adresse IP de l'attaquant.
- shell : Ouvre un shell.
- ps : Liste tous les processus en cours.
- kill <pid> : Termine un processus spécifié.
- migrate : Tente de migrer le processus vers un autre processus (fonctionnalité non implémentée).
- persist : Configure le backdoor pour qu'il s'exécute au démarrage.
- escalate : Tente d'obtenir des privilèges administratifs.
- set_dns <name> <ip address> : Change les paramètres DNS.
- windefucker : Désactive la protection en temps réel de Windows Defender (affiche des activités sur l'écran pendant 3 secondes).
- calcexpress : Ouvre une calculatrice chaque fois que la souris bouge.
- folderexpress : Crée un nouveau dossier sur le bureau toutes les 200ms.
- mouselocker : Verrouille la souris à la position (0,0).
- hacked : Affiche un message "you have been hacked" (non utile mais amusant).
- shutdown : Éteint la machine cible.
- message <text> <title> <button> : Envoie un message à la victime (affiche des options de boutons si les paramètres sont vides).
- keyboard <key1,key2...> : Envoie des frappes clavier.
- get_screen : Récupère le flux vidéo de l'écran (fonctionnalité non implémentée).
- get_cam : Récupère le flux vidéo de la webcam (fonctionnalité non implémentée).
- get_mic : Récupère le flux audio du microphone (fonctionnalité non implémentée).
- get_clipboard : Copie le contenu du presse-papiers (fonctionnalité non implémentée).
- keylogger : Récupère les frappes clavier.
- samdb : Tente de récupérer le fichier samdb (nécessite des privilèges administratifs).
- wbpass : Tente de récupérer tous les mots de passe des navigateurs web (fonctionnalité non implémentée).
- ls : Liste les fichiers dans le répertoire courant.
- ls_hidden : Liste les fichiers cachés.
- pwd : Affiche le répertoire de travail courant.
- cd : Change de répertoire.
- run <programname> : Exécute un programme.
- ps1 <programname> : Exécute un programme PowerShell.
- download <filename> : Télécharge un fichier.
- upload <filename> : Télécharge un fichier vers le serveur de l'attaquant (fonctionnalité non implémentée).
- delete <filename> : Supprime un fichier.
- erase : Supprime tous les fichiers dans le répertoire courant.
- update : Met à jour le backdoor (fonctionnalité non implémentée).
- info : Affiche la description.
- quit : Quitte le serveur (le serveur reste actif).
- stop : Arrête le serveur.
Lien vers le projet
Consultez le dépôt GitHub de Space Revolution pour plus d'informations et pour accéder au code source :
Zero Shell sur GitHub