Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pwncat — Plateforme de post-exploitation automatisant l'énumération, l'élévation de privilèges, la persistance et les opérations C2 via des shells inverses/liés avec prise en charge multiplateforme pour Linux et Windows. | Kitploit
Outils/GitHubGitHub/calebstewart/pwncat
Escalade de PrivilègesMécanismes de PersistancePost-ExploitationTests d'IntrusionCommandement et ContrôleRed Teaming
GitHubcalebstewart/pwncat

pwncat

Plateforme de post-exploitation automatisant l'énumération, l'élévation de privilèges, la persistance et les opérations C2 via des shells inverses/liés avec prise en charge multiplateforme pour Linux et Windows.

Voir le dépôt
2.9k292il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

pwncat

asciicast

pwncat est une plateforme de post-exploitation pour cibles Linux. Il a commencé comme un wrapper autour de shells bind et reverse basiques et a grandi depuis. Il simplifie les opérations courantes d'équipe rouge tout en organisant le code depuis votre machine d'attaque, et non depuis la cible.

pwncat ne supportait auparavant que Linux, mais beaucoup de travail a été fait récemment pour supporter plusieurs plateformes. Actuellement, il existe un support alpha pour les cibles Windows. Veuillez consulter la dernière documentation pour les détails sur l'utilisation de pwncat avec une cible Windows.

pwncat intercepte la communication brute avec un shell distant et permet à l'utilisateur d'effectuer des actions automatisées sur l'hôte distant, notamment l'énumération, l'installation d'implant et même l'escalade de privilèges.

Après avoir reçu une connexion, pwncat configurera certains paramètres courants pour travailler avec des shells distants.

  • Désactiver l'historique dans le shell distant
  • Normaliser l'invite du shell
  • Localiser les binaires utiles (en utilisant which)
  • Tenter de générer un pseudo-terminal (pty) pour une session interactive complète

pwncat sait générer des pty avec plusieurs méthodes différentes et croisera les méthodes avec les exécutables précédemment énumérés. Après avoir généré un pty, il configurera le terminal de contrôle en mode brut, afin que vous puissiez interagir de manière similaire à ssh.

pwncat synchronisera également les paramètres du pty distant (tels que les lignes, les colonnes, la variable d'environnement TERM) avec vos paramètres locaux pour garantir que le shell se comporte correctement avec les applications interactives telles que vim ou nano.

John Hammond et moi avons présenté pwncat à GRIMMCon. Notre présentation, que vous pouvez trouver sur YouTube ici. Cette vidéo montre une version précoce de l'API et de l'interface. Veuillez vous référer à la documentation pour une utilisation à jour et la documentation de l'API !

La documentation de pwncat est en cours de construction sur Read the Docs. Rendez-vous là-bas pour la documentation d'utilisation et de développement la plus récente !

pwncat nécessite Python 3.9+ sur Linux

Installation

pwncat dépend uniquement d'un environnement de développement Python fonctionnel sous Linux. Afin d'installer certains des paquets requis avec pip, vous aurez probablement besoin du paquet "Python Development" de votre distribution. Sur les systèmes basés sur Debian, c'est python-dev. Pour Arch, les fichiers de développement sont livrés avec le dépôt principal Python. Pour Enterprise Linux, le paquet s'appelle python-devel.

pwncat est poussé sur PyPI sous le nom pwncat-cs, et peut être installé avec pip comme ceci :

root@kitploit:~
pip install pwncat-cs

Cependant, il est recommandé d'installer pwncat dans un environnement virtuel.

root@kitploit:~
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs

Pour un environnement de développement, pwncat utilise Python Poetry. Vous pouvez cloner le dépôt localement et utiliser poetry pour configurer un environnement de développement.

root@kitploit:~
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install

# Enter the virtual environment
poetry shell

Changements de nom

En raison du conflit de nom avec le pwncat de Cytopia, j'ai décidé de renommer le paquet en pwncat-cs. Cela inclut le renommage du point d'entrée afin qu'il n'y ait pas de conflits directs avec le projet de Cytopia. Si vous effectuez une mise à jour depuis v0.4.*, le nom de la commande aura changé, et les variantes pcat et pc ont été supprimées. Consultez les notes de version les plus récentes pour plus de détails.

L'avantage supplémentaire de cette décision est que le projet est désormais poussé sur PyPI pour une installation/mise à jour plus facile à l'avenir.

Support Windows

pwncat supporte désormais les connexions depuis des cibles Windows à partir de v0.4.0a1. La plateforme Windows utilise une bibliothèque C2 basée sur .Net qui est chargée automatiquement. Les cibles Windows doivent se connecter avec un shell cmd.exe ou powershell.exe, et pwncat se chargera du reste.

Les bibliothèques implémentant le C2 sont réalisées sur pwncat-windows-c2. Les DLL pour le C2 seront automatiquement téléchargées depuis la version ciblée pour vous. Si vous n'avez pas de connectivité Internet sur votre machine cible, vous pouvez demander à pwncat de pré-stocker les DLL en utilisant l'argument --download-plugins. Si vous utilisez une version publiée de pwncat, vous pouvez également télécharger une archive tar de tous les plugins intégrés depuis la page des versions.

Les plugins sont stockés par défaut dans ~/.local/share/pwncat, mais cela est configurable avec la configuration plugin_path. Si vous téléchargez l'ensemble de plugins packagé depuis la page des versions, vous devez l'extraire vers le chemin indiqué par plugin_path.

En dehors des DLL principales du C2, d'autres plugins peuvent également être disponibles. Actuellement, les seuls plugins par défaut fournis sont le C2 et une implémentation de BadPotato. pwncat peut charger de manière réflexive des binaires .Net pour être utilisés comme plugins pour le C2. Pour plus d'informations sur les plugins Windows C2, veuillez consulter la documentation.

Modules

Récemment, l'architecture du framework pwncat a été repensée pour incorporer une structure générique de "module". Toutes les fonctionnalités sont désormais implémentées sous forme de modules. Cela inclut l'énumération, la persistance et l'escalade de privilèges. L'interaction avec les modules est similaire à celle de la plupart des autres plateformes de post-exploitation. Vous pouvez utiliser les commandes familières run, search et info et entrer dans les contextes de module avec la commande use. Reportez-vous à la documentation pour plus d'informations.

Paquet BlackArch

Packaging status

L'installation sur BlackArch est aussi simple que :

root@kitploit:~
pacman -Syu pwncat-caleb

Connexion à une victime

Les paramètres de ligne de commande pour pwncat tentent d'être flexibles et acceptent une variété de syntaxes de connexion courantes. Plus précisément, il essaiera d'accepter les syntaxes courantes de netcat et ssh. Les éléments suivants sont tous valides :

root@kitploit:~
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
#   If reconnection fails and no protocol is specified,
#   SSH is used as a fallback.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10

Par défaut, pwncat suppose que la plateforme cible est Linux. Afin de se connecter à un shell reverse ou bind Windows, vous devez passer l'argument --platform/-m :

root@kitploit:~
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444

Pour plus d'informations sur la syntaxe et la gestion des arguments, consultez l'aide avec pwncat-cs --help ou visitez la documentation.

Image Docker

La méthode d'installation recommandée est un environnement virtuel Python. Cela offre l'utilisation quotidienne la plus facile de pwncat. Cependant, il y a eu un intérêt pour l'utilisation de pwncat à partir d'une image docker, j'ai donc fourni un Dockerfile qui fournit une installation fonctionnelle de pwncat. Pour construire l'image, utilisez :

root@kitploit:~
docker build -t pwncat .

Cela construira l'image docker pwncat avec le tag "pwncat". Le répertoire de travail dans le conteneur est /work. Le point d'entrée du conteneur est le binaire pwncat. Il peut être utilisé comme suit :

root@kitploit:~
# Connect to a bind shell at 10.0.0.1:4444
docker run -v "/some/directory":/work -t pwncat 10.0.0.1 4444

Dans cet exemple, seuls les fichiers dans /some/directory sont exposés au conteneur. Évidemment, pour le téléchargement/téléversement, le conteneur ne pourra voir que les fichiers exposés via les répertoires montés.

Fonctionnalités

pwncat offre deux fonctionnalités principales. À la base, son objectif est de configurer automatiquement un pseudo-terminal (pty) distant qui permet une interaction avec l'hôte distant semblable à une session SSH complète. Lorsque vous travaillez dans un pty, vous pouvez utiliser les fonctionnalités courantes de votre shell distant comme l'historique, l'édition de ligne et les applications terminal graphiques.

L'autre moitié de pwncat est un framework qui utilise votre shell distant pour effectuer des tâches automatisées d'énumération, de persistance et d'escalade de privilèges. L'invite locale de pwncat fournit un certain nombre de fonctionnalités utiles pour les tests de pénétration standard, notamment :

  • Téléchargement et téléversement de fichiers
  • Énumération automatisée de l'escalade de privilèges
  • Exécution automatisée de l'escalade de privilèges
  • Installation/suppression automatisée de la persistance
  • Suivi automatisé des fichiers modifiés/créés
    • pwncat offre également la possibilité de révoquer automatiquement ces "altérations" distantes

Le framework sous-jacent pour interagir avec l'hôte distant vise à abstraire autant que possible le shell et la méthode de connexion sous-jacents, permettant aux commandes et aux plugins d'interagir de manière transparente avec l'hôte distant.

Vous pouvez en apprendre davantage sur l'interaction avec pwncat et sur le framework sous-jacent dans la documentation. Si vous avez une idée pour une nouvelle méthode d'escalade de privilèges ou de persistance, veuillez consulter la documentation de l'API spécifiquement. Les pull requests sont les bienvenues !

Fonctionnalités prévues

pwncat souhaite devenir un couteau suisse pour les équipes rouges. Espérons que bientôt, plus de fonctionnalités seront ajoutées.

  • Plus de méthodes d'escalade de privilèges (sudo -u#-1 CVE, conteneurs LXD, etc.)
  • Méthodes de persistance (bind shell, cronjobs, accès SSH, abus PAM, etc.)
  • Méthodes d'agression (envoyer du spam aléatoire aux terminaux, vider le pare-feu, etc.)
  • Méthodes mèmes (terminal-parrot, cowsay, wall, etc.)
  • Méthodes réseau (redirection de port, accès internet via l'hôte, etc.)

Problèmes connus

Parce que pwncat essaie d'interagir abstraitement avec n'importe quel shell avec un minimum de dépendances système distantes, il y a certains cas particuliers que nous avons trouvés. Lorsque nous les trouvons, nous faisons tout notre possible pour les prendre en compte et les cacher à l'utilisateur. Cependant, certains ont échappé aux mailles du filet et ont été observés en conditions réelles. Quand cela arrive, pwncat fera tout ce qu'il peut pour préserver votre terminal, mais vous pourriez rencontrer des sorties étranges ou des échecs de commande.

Support BSD

Bien que BSD soit un noyau basé sur Unix, en pratique ses outils utilisateur sont notablement différents de leurs homologues Linux. De ce fait, de nombreuses fonctionnalités automatisées de pwncat ne fonctionneront pas ou échoueront complètement lorsqu'elles sont exécutées contre une cible BSD. J'ai essayé de capturer toutes les erreurs ou cas particuliers, mais il y a probablement quelques accrocs qui n'ont pas été entièrement testés contre BSD. Dans tous les cas, le shell stabilisé devrait fonctionner dans un environnement BSD, mais je ne fournis aucune garantie.

Si je trouve du temps plus tard, je pourrais essayer de stabiliser pwncat sur BSD, mais pour l'instant mon attention est sur les distributions basées sur Linux. Si vous souhaitez contribuer à améliorer le comportement de pwncat sur BSD, vous êtes plus que bienvenu pour me contacter ou simplement forker le dépôt. Comme toujours, les pull requests sont les bienvenues !

Télécharger l’outil