N'utilisez plus Netcat !
Si vous avez l'habitude d'effectuer des tests d'intrusion et/ou des CTFs, vous avez forcément déjà utilisé Netcat pour ouvrir un shell ou un reverse shell.
En utilisant cet outil qui est certes minimaliste et utilisable dans de nombreuses situations périlleuses, vous avez dû vous confronter à plusieurs problématiques :
- L'obligation de faire spawner un TTY complet pour avoir un shell un minimum viable (et encore).
- L'instabilité.
- L'utilisation du CTRL+C qui ferme la connexion au lieu de kill le process distant en cours d'exécution 😄
- Les limitations du shell traditionnel (on va y revenir).
Tous ces éléments m'ont amplement convaincu à arrêter d'utiliser Netcat pour utiliser son grand remplaçant...
Évidemment je vais vous parler de PwnCat !
Cet outil a littéralement révolutionner mes tests d'intrusion (et je pèse mes mots).
Il corrige tous les problèmes posés par Netcat que j'ai cité précédemment et apporte en plus son lot de fonctionnalités bien utiles !
Voici une présentation rapide du fonctionnement de pwncat :
Lorsque vous lancez l'outil avec la commande pwncat-cs, vous entrez dans un shell dit Local, où vous pouvez lancer des commandes pwncat.
La première commande que je vais vous présenter est listen qui permet de lancer des listeners.
Par exemple, pour lancer un listener pour un reverse shell Linux sur le port 4444, voici la commande :
Vous observez que le listener est lancé en arrière-plan et que vous pouvez encore exécuter d'autres commandes pwncat...
Vous pouvez par exemple lancer un deuxième listener ! Et même un troisième si vous voulez !
Lorsqu'un client va se connecter, vous verrez un message de la sorte apparaître qui indique qu'une session a été ouverte :
Vous pouvez lister les sessions ouvertes avec la commande session :
Vous pouvez sélectionner la session que vous souhaitez (si vous en avez plusieurs) avec la commande sessions <id> :
Pour se connecter au shell distant, il faudra passer en mode Remote.
Pour cela il faudra utiliser la combinaison de touche magique CTRL+D qui permet de passer du mode Local au mode Remote et inversement rapidement !
Vous voyez qu'en mode Remote, un joli shell est apparu et permet d'exécuter des commandes systèmes et le tout avec de la couleur 😃
Dans ce shell vous avez la possibilité d'ouvrir des fichiers texte avec nano ou vim sans problème, vous pouvez utiliser le CTRL+C à foison pour kill des programmes, et même utiliser la commande clear ou CTRL+L pour effacer le contenu du shell.
Pas mal non ?
Ce n'est pas tout !
Vous pouvez revenir au mode Local (en utilisant CTRL+D) pour utiliser les fonctions de PwnCat qui sont honnêtement, super pratiques.
Je ne vais pas toutes vous les présenter car il y en a pas mal mais je vais vous montrer celles que j'utilise.
La commande upload qui permet d'envoyer un fichier sur le système de la victime :
Vous comprenez qu'avec cette fonction c'est terminé les serveurs web python à deux balles pour téléverser des fichiers !
Bien sûr dans le même genre vous avez la commande download.
Ensuite, vous pouvez utiliser les modules proposés par pwncat pour effectuer différentes opérations sur le système cible.
Pour afficher la liste des modules disponible pour le système cible, tapez la commande search * :
Vous voyez qu'il existe un paquet de modules d'énumération et d'implant qui permettent de faire de la persistence sur la victime.
Je vous laisse expérimenter et découvrir cet outil formidable en profondeur...
Pour l'installer, j'ai fais une doc sur mon wiki :
Sinon, vous pouvez aussi consulter la documentation officielle de PwnCat :
Article publié par Elieroc