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
Venom — Venom - Un proxy multi-sauts pour testeurs de pénétration | Kitploit
Outils/GitHubGitHub/dliv3/venom
Outils de Chiffrement/DéchiffrementCartographie RéseauTests d'IntrusionCommandement et ContrôleRed TeamingOutil d'Accès à Distance
GitHubdliv3/venom

Venom

Venom - Un proxy multi-sauts pour testeurs de pénétration

Voir le dépôt
2.2k358il y a 6 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

Venom - Un proxy multi-sauts pour testeurs de pénétration

简体中文 | English

Venom est un outil de proxy multi-niveaux développé en Go, conçu pour les testeurs de pénétration.

Venom permet de connecter plusieurs nœuds, puis d'utiliser ces nœuds comme tremplins pour construire un proxy multi-niveaux.

Les testeurs de pénétration peuvent utiliser Venom pour acheminer facilement le trafic réseau vers des couches internes multiples et gérer aisément les nœuds proxy.

Cet outil est réservé à la recherche en sécurité et à l'enseignement. L'utilisateur assume l'entière responsabilité légale et associée découlant de l'utilisation de cet outil ! L'auteur décline toute responsabilité légale ou connexe !

Caractéristiques

  • Topologie réseau visuelle
  • Proxy SOCKS5 multi-niveaux
  • Redirection de ports multi-niveaux
  • Réutilisation de ports (apache/mysql/...)
  • Tunnel SSH
  • Shell interactif
  • Téléchargement et téléversement de fichiers
  • Chiffrement des communications entre nœuds
  • Prise en charge de multiples plateformes (Linux/Windows/MacOS) et architectures (x86/x64/arm/mips)

Comme les appareils IoT (architecture arm/mips/...) ont généralement des ressources limitées, pour réduire la taille du binaire, les binaires compilés pour l'environnement IoT dans ce projet ne prennent pas en charge la réutilisation de ports ni le tunnel SSH, et les limites de concurrence et la taille du tampon sont réduites pour économiser la mémoire.

Installation

Vous pouvez télécharger et utiliser directement les exécutables précompilés dans la version.

Si vous souhaitez compiler ce projet à partir des sources, vous devez installer go >= 1.11, puis exécuter les commandes suivantes :

root@kitploit:~
go get -u github.com/Dliv3/Venom/...

# $GOPATH est la variable d'environnement configurée lors de l'installation de Go, visible via la commande go env
cd $GOPATH/src/github.com/Dliv3/Venom

# Les binaires compilés sont stockés dans le dossier release du répertoire courant
./build.sh

Utilisation

Vidéo de démonstration YouTube : https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

1. Paramètres de la ligne de commande admin/agent

  • Les nœuds admin et agent peuvent tous deux écouter les connexions ou initier des connexions

    Le nœud admin écoute un port, l'agent initie la connexion :

    root@kitploit:~
    ./admin_macos_x64 -lport 9999
    
    root@kitploit:~
    ./agent_linux_x64 -rhost 192.168.0.103 -rport 9999
    

    L'agent écoute un port, l'admin initie la connexion :

    root@kitploit:~
    ./agent_linux_x64 -lport 8888
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
    
  • Le nœud agent prend en charge la réutilisation de ports

    L'agent propose deux méthodes de réutilisation de ports :

    1. Réutilisation de ports via les options SO_REUSEPORT et SO_REUSEADDR
    2. Réutilisation de ports via iptables (Linux uniquement)

    Grâce à la fonction de réutilisation de ports de Venom, il est possible de réutiliser les ports de services comme apache, mysql, etc. sous Windows, mais pas ceux de services comme RDP, IIS pour le moment. Sous Linux, la plupart des ports de service peuvent être réutilisés. Le port réutilisé continue à fournir normalement son service d'origine.

    Première méthode de réutilisation de ports

    root@kitploit:~
    # Exemple avec apache sous Windows
    # Réutilise le port 80 d'apache sans affecter le service HTTP normal
    # La valeur de -lhost doit être l'IP locale, ne pas utiliser 0.0.0.0 (sinon la réutilisation échoue)
    ./agent.exe -lhost 192.168.204.139 -reuse-port 80
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 80
    

2. Commandes intégrées du nœud admin

  • help Affiche l'aide

    root@kitploit:~
    (admin node) >>> help
    
      help                                     Informations d'aide.
      exit                                     Quitter.
      show                                     Afficher la topologie réseau.
      getdes                                   Voir la description du nœud cible.
      setdes     [info]                        Ajouter une description au nœud cible.
      goto       [id]                          Sélectionner l'id comme nœud cible.
      listen     [lport]                       Écouter sur un port du nœud cible.
      connect    [rhost] [rport]               Connecter un nouveau nœud via le nœud cible.
      sshconnect [user@ip:port] [dport]        Connecter un nouveau nœud via tunnel SSH.
      shell                                    Démarrer un shell interactif sur le nœud cible.
      upload     [local_file]  [remote_file]   Téléverser des fichiers vers le nœud cible.
      download   [remote_file]  [local_file]   Télécharger des fichiers depuis le nœud cible.
      socks      [lport]                       Démarrer un serveur SOCKS5.
      lforward   [lhost] [sport] [dport]       Rediriger un port local sport vers un port distant dport.
      rforward   [rhost] [sport] [dport]       Rediriger un port distant sport vers un port local dport.
      
    
  • show Affiche la topologie réseau

    A représente le nœud admin, les chiffres représentent les nœuds agent.

    Le diagramme ci-dessous indique que le nœud admin est connecté au nœud 1, le nœud 1 est connecté aux nœuds 2 et 4, et le nœud 2 est connecté au nœud 3.

    root@kitploit:~
    (node 1) >>> show
    A
    + -- 1
         + -- 2
              + -- 3
         + -- 4
    

3. Remarques

  • Actuellement, un seul nœud admin peut gérer le réseau.
  • Pour interagir avec un nouveau nœud, exécutez d'abord la commande show sur le nœud admin pour synchroniser la topologie et les identifiants.
  • Lorsque vous utilisez la deuxième méthode de réutilisation de ports (basée sur iptables), vous devez utiliser script/port_reuse.py pour activer les règles de réutilisation de ports définies par l'agent sur la machine cible.

TODO

  • Interopérabilité avec regeorg
  • Gestion simultanée du réseau par plusieurs nœuds admin
  • Chiffrement du trafic entre nœuds
  • Support UDP pour SOCKS5
  • Interopérabilité avec meterpreter (à déterminer)
  • API RESTful
  • Fermeture du proxy et de la redirection de ports

Remerciements

  • rootkiter#Termite
  • ring04h#s5.go
  • n1nty#远程遥控 IPTables 进行端口复用
Télécharger l’outil

Deuxième méthode de réutilisation de ports

root@kitploit:~
# Exemple avec apache sous Linux
# Nécessite les droits root
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80

Cette méthode définit une règle iptables sur la machine locale pour rediriger le trafic du port reuse-port vers le port lport, puis l'agent distribue le trafic.

Note importante : si le programme est terminé par un signal sigterm ou sigint (kill ou ctrl-c), le programme nettoie automatiquement les règles iptables. Si l'agent est tué par kill -9, le nettoyage automatique n'est pas possible (car l'agent ne peut pas gérer le signal sigkill), il faut nettoyer manuellement.

Pour éviter que les règles iptables ne soient pas automatiquement nettoyées, empêchant l'accès au service sur le port 80, la deuxième méthode utilise iptables -m recent pour contrôler l'activation de la règle de redirection via des paquets TCP spéciaux.

L'implémentation ici s'inspire de https://threathunter.org/topic/594545184ea5b2f5516e2033

root@kitploit:~
# Démarre les règles iptables définies par l'agent sur la machine Linux
# Si rhost est sur le réseau interne, utilisez le proxy SOCKS5 pour le trafic du script (voir ci-dessous)
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80

# Connecte le nœud agent
./admin_macos_x64 -rhost 192.168.204.135 -rport 80

# Pour désactiver la règle de redirection
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
  • Chiffrement des communications entre nœuds

    Venom offre le chiffrement des communications entre nœuds. L'utilisateur peut spécifier un mot de passe via l'option -passwd, qui sera utilisé pour générer la clé de chiffrement AES.

    root@kitploit:~
    # Spécifie le mot de passe dlive@dubhe avec -passwd
    ./admin_macos_x64 -lport 8889 -passwd dlive@dubhe
    
    # L'agent se connecte au nœud admin avec le même mot de passe
    ./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe
    
  • Note : pour interagir avec un nouveau nœud, exécutez d'abord la commande show sur le nœud admin pour synchroniser la topologie et les identifiants des nœuds.

  • goto Opérer sur un nœud

    root@kitploit:~
    (admin node) >>> goto 1
    (node 1) >>> 
    

    Après être allé sur un nœud avec goto, vous pouvez utiliser les commandes présentées ci-après.

  • getdes/setdes Obtenir/définir la description du nœud

    root@kitploit:~
    (node 1) >>> setdes linux x64 blahblahblah
    (node 1) >>> getdes
    linux x64 blahblahblah
    
  • connect/listen/sshconnect Interconnexion de nœuds

    Le nœud 1 se connecte au port 9999 de 192.168.0.103 :

    root@kitploit:~
    (node 1) >>> connect 192.168.0.103 9999
    connect to 192.168.0.103 9999
    successfully connect to the remote port!
    (node 1) >>> show
    A
    + -- 1
         + -- 2
    

    Le nœud 1 écoute sur le port 9997, puis une autre machine exécute ./agent_linux_x64 -rhost 192.168.204.139 -rport 9997 pour se connecter au nœud 1 :

    root@kitploit:~
    (node 1) >>> listen 9997
    listen 9997
    the port 9997 is successfully listening on the remote node!
    (node 1) >>> show
    A
    + -- 1
         + -- 2
         + -- 3
    

    Sur 192.168.0.104, exécutez ./agent_linux_x64 -lport 9999 ; le nœud 3 utilise sshconnect pour établir un tunnel SSH vers le port 9999 de 192.168.0.104. Vous pouvez utiliser un mot de passe ou une clé privée SSH pour l'authentification.

    root@kitploit:~
    (node 1) >>> goto 3
    (node 3) >>> sshconnect [email protected]:22 9999
    use password (1) / ssh key (2)? 2
    file path of ssh key: /Users/dlive/.ssh/id_rsa
    connect to target host's 9999 through ssh tunnel ([email protected]:22).
    ssh successfully connects to the remote node!
    (node 3) >>> show
    A
    + -- 1
         + -- 2
         + -- 3
              + -- 4
    
  • shell Obtient un shell interactif sur le nœud

    root@kitploit:~
    (node 1) >>> shell
    You can execute commands in this shell :D, 'exit' to exit.
    bash: no job control in this shell
    bash-3.2$ whoami
    whoami
    dlive
    bash-3.2$ exit
    exit
    exit
    
  • upload/download Téléverser/télécharger des fichiers vers/depuis le nœud

    Téléverser le fichier local /tmp/test.pdf vers le nœud 1 sous /tmp/test2.pdf :

    root@kitploit:~
    (node 1) >>> upload /tmp/test.pdf /tmp/test2.pdf
    upload /tmp/test.pdf to node 1: /tmp/test2.pdf
    this file is too large(>100M), do you still want to upload it? (y/n)y
     154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    upload file successfully!
    

    Télécharger le fichier /tmp/test2.pdf du nœud 1 vers le local /tmp/test3.pdf :

    root@kitploit:~
    (node 1) >>> download /tmp/test2.pdf /tmp/test3.pdf
    download /tmp/test2.pdf from node 1: /tmp/test3.pdf
    this file is too large(>100M), do you still want to download it? (y/n)y
     154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    download file successfully!
    
  • socks Établit un proxy SOCKS5 vers un nœud

    root@kitploit:~
    (node 1) >>> socks 7777
    a socks5 proxy of the target node has started up on local port 7777
    

    Après avoir exécuté la commande socks, un port local s'ouvre sur le nœud admin (7777 dans l'exemple). Utilisez ce port pour le proxy SOCKS5.

  • lforward/rforward Rediriger un port local vers un port distant / rediriger un port distant vers un port local

    lforward redirige le port local 8888 du nœud admin vers le port 8888 du nœud 1 :

    root@kitploit:~
    (node 1) >>> lforward 127.0.0.1 8888 8888
    forward local network 127.0.0.1 port 8888 to remote port 8888
    

    rforward redirige le port 8889 de l'adresse 192.168.204.103 (réseau du nœud 1) vers le port local 8889 du nœud admin :

    root@kitploit:~
    (node 1) >>> rforward 192.168.204.103 8889 8889
    forward remote network 192.168.204.103 port 8889 to local port 8889