Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Venom — Venom - Un proxy multi-hop per penetration tester | Kitploit
Strumenti/GitHubGitHub/dliv3/venom
Strumenti di Crittografia/DecrittografiaMappatura della RetePenetration TestingCommand and ControlRed TeamingStrumento di Accesso Remoto
GitHubdliv3/venom

Venom

Venom - Un proxy multi-hop per penetration tester

Vedi Repository
2.2k3586 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Venom - Un Proxy Multi-hop per Penetration Tester

简体中文 | English

Venom è uno strumento proxy multilivello sviluppato in Go, progettato per penetration tester.

Venom può connettere più nodi e utilizzarli come trampolini per costruire un proxy multilivello.

I penetration tester possono utilizzare Venom per instradare facilmente il traffico di rete attraverso più livelli di rete interna e gestire comodamente i nodi proxy.

Questo strumento è destinato esclusivamente alla ricerca sulla sicurezza e all'istruzione. L'utente si assume ogni responsabilità legale e correlata derivante dall'uso di questo strumento! L'autore non si assume alcuna responsabilità legale o correlata!

Caratteristiche

  • Topologia di rete visualizzata
  • Proxy socks5 multilivello
  • Port forwarding multilivello
  • Riutilizzo delle porte (apache/mysql/...)
  • Tunnel SSH
  • Shell interattiva
  • Caricamento e download di file
  • Crittografia della comunicazione tra nodi
  • Supporto per più piattaforme (Linux/Windows/MacOS) e più architetture (x86/x64/arm/mips)

Poiché i dispositivi IoT (architetture arm/mips/...) hanno solitamente risorse limitate, per ridurre le dimensioni del file binario, i binari compilati per ambienti IoT in questo progetto non supportano le funzionalità di riutilizzo delle porte e tunneling SSH, e per ridurre l'uso della memoria sono stati limitati il numero di connessioni simultanee e la dimensione del buffer.

Installazione

È possibile scaricare direttamente i file eseguibili precompilati dalla release

Se si desidera compilare il progetto dal codice sorgente, è necessario installare go >= 1.11, quindi eseguire i comandi seguenti

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

# $GOPATH è la variabile d'ambiente configurata durante l'installazione di Go, può essere visualizzata con il comando go env
cd $GOPATH/src/github.com/Dliv3/Venom

# I file binari compilati sono archiviati nella cartella release nella directory corrente
./build.sh

Utilizzo

Video dimostrativo su Youtube: https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

1. Parametri della riga di comando di admin/agent

  • Sia il nodo admin che il nodo agent possono ascoltare connessioni o avviare connessioni

    Il nodo admin ascolta su una porta, l'agent avvia la connessione:

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

    L'agent ascolta su una porta, l'admin avvia la connessione:

    root@kitploit:~
    ./agent_linux_x64 -lport 8888
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
    
  • Il nodo agent supporta il riutilizzo delle porte

    L'agent fornisce due metodi di riutilizzo delle porte

    1. Riutilizzo delle porte tramite le opzioni SO_REUSEPORT e SO_REUSEADDR
    2. Riutilizzo delle porte tramite iptables (supportato solo su Linux)

    Utilizzando la funzionalità di riutilizzo delle porte fornita da Venom, su Windows è possibile riutilizzare le porte di servizi come Apache, MySQL, ecc., ma temporaneamente non è possibile riutilizzare porte di servizi come RDP, IIS, ecc. Su Linux è possibile riutilizzare la maggior parte delle porte dei servizi. Le porte riutilizzate continuano a fornire il servizio originale normalmente.

    Primo metodo di riutilizzo delle porte

    root@kitploit:~
    # Esempio con Apache su Windows
    # Riutilizza la porta 80 di Apache senza influenzare il normale servizio HTTP di Apache
    # Il valore di -lhost è l'IP locale, non può essere 0.0.0.0, altrimenti non è possibile riutilizzare la porta
    ./agent.exe -lhost 192.168.204.139 -reuse-port 80
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 80
    

2. Comandi integrati del nodo admin

  • help Stampa le informazioni di aiuto

    root@kitploit:~
    (admin node) >>> help
    
      help                                     Informazioni di aiuto.
      exit                                     Esci.
      show                                     Mostra la topologia di rete.
      getdes                                   Visualizza la descrizione del nodo di destinazione.
      setdes     [info]                        Aggiungi una descrizione al nodo di destinazione.
      goto       [id]                          Seleziona id come nodo di destinazione.
      listen     [lport]                       Ascolta su una porta sul nodo di destinazione.
      connect    [rhost] [rport]               Connetti a un nuovo nodo tramite il nodo di destinazione.
      sshconnect [user@ip:port] [dport]        Connetti a un nuovo nodo tramite tunnel SSH.
      shell                                    Avvia una shell interattiva sul nodo di destinazione.
      upload     [local_file]  [remote_file]   Carica file sul nodo di destinazione.
      download   [remote_file]  [local_file]   Scarica file dal nodo di destinazione.
      socks      [lport]                       Avvia un server socks5.
      lforward   [lhost] [sport] [dport]       Inoltra una porta locale sport a una porta remota dport.
      rforward   [rhost] [sport] [dport]       Inoltra una porta remota sport a una porta locale dport.
    
    
  • show Mostra la topologia di rete

    A indica il nodo admin, i numeri indicano i nodi agent

    La topologia seguente mostra che il nodo admin è connesso al nodo 1, il nodo 1 è connesso ai nodi 2 e 4, e il nodo 2 è connesso al nodo 3

3. Note importanti

  • Attualmente è supportato un solo nodo admin per la gestione della rete
  • Per operare su un nodo appena aggiunto, è necessario prima eseguire il comando show sul nodo admin per sincronizzare la topologia di rete e i numeri dei nodi
  • Quando si utilizza il secondo metodo di riutilizzo delle porte (basato su iptables), è necessario utilizzare script/port_reuse.py per abilitare le regole di riutilizzo delle porte impostate dall'agent sull'host di destinazione.

TODO

  • Integrazione con regeorg
  • Gestione simultanea della rete da parte di più nodi admin
  • Crittografia del traffico di comunicazione tra nodi
  • Supporto UDP per socks5
  • Integrazione con meterpreter (da definire)
  • RESTful API
  • Disattivazione del proxy e del port forwarding

Ringraziamenti

  • rootkiter#Termite
  • ring04h#s5.go
  • n1nty#Controllo remoto di IPTables per il riutilizzo delle porte
Scarica lo strumento

Secondo metodo di riutilizzo delle porte

root@kitploit:~
# Esempio con Apache su Linux
# Richiede privilegi di root
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80

Questo metodo di riutilizzo delle porte imposta una regola iptables sulla macchina locale per inoltrare il traffico di reuse-port a lport, che viene poi distribuito dall'agent.

Da notare che se il programma viene terminato tramite segnali sigterm o sigint (kill o Ctrl+C), il programma può pulire automaticamente le regole iptables. Se l'agent viene ucciso con kill -9, non può pulire automaticamente le regole iptables e sarà necessario pulirle manualmente, poiché l'agent non può gestire il segnale sigkill.

Per evitare che le regole iptables non vengano pulite automaticamente e che il penetration tester non riesca ad accedere al servizio sulla porta 80, il secondo metodo di riutilizzo delle porte utilizza iptables -m recent per controllare l'attivazione delle regole di inoltro iptables tramite pacchetti TCP speciali.

L'implementazione si basa su https://threathunter.org/topic/594545184ea5b2f5516e2033

root@kitploit:~
# Avvia le regole iptables impostate dall'agent sulla macchina Linux
# Se rhost è sulla rete interna, è possibile utilizzare il proxy socks5 per il traffico dello script; l'uso del proxy socks5 è descritto di seguito
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80
root@kitploit:~
# Connetti al nodo agent
./admin_macos_x64 -rhost 192.168.204.135 -rport 80
root@kitploit:~
# Per disattivare le regole di inoltro
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
  • Crittografia della comunicazione tra nodi

    Venom fornisce la crittografia della comunicazione tra nodi; l'utente può specificare una password tramite l'opzione -passwd, che viene utilizzata per generare la chiave necessaria per la crittografia AES.

    root@kitploit:~
    # Imposta la password come dlive@dubhe tramite -passwd
    ./admin_macos_x64 -lport 8889 -passwd dlive@dubhe
    
    # L'agent specifica la stessa password per connettersi al nodo admin
    ./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe
    
  • root@kitploit:~
    (node 1) >>> show
    A
    + -- 1
         + -- 2
              + -- 3
         + -- 4
    

    Nota: per operare su un nodo appena aggiunto, è necessario prima eseguire il comando show sul nodo admin per sincronizzare la topologia di rete e i numeri dei nodi

  • goto Operare su un nodo

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

    Dopo aver eseguito goto su un nodo, è possibile utilizzare i comandi descritti di seguito

  • getdes/setdes Ottenere/impostare la descrizione del nodo

    root@kitploit:~
    (node 1) >>> setdes linux x64 blahblahblah
    (node 1) >>> getdes
    linux x64 blahblahblah
    
  • connect/listen/sshconnect Interconnessione tra nodi

    Il nodo 1 si connette alla porta 9999 di 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
    

    Ascolta sulla porta 9997 sul nodo 1, quindi esegui ./agent_linux_x64 -rhost 192.168.204.139 -rport 9997 su un'altra macchina per connetterti al nodo 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
    

    Su 192.168.0.104 esegui ./agent_linux_x64 -lport 9999, il nodo 3 si connette tramite sshconnect alla porta 9999 di 192.168.0.104 usando un tunnel SSH. Puoi autenticarti con password o chiave SSH privata.

    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 Ottenere una shell interattiva sul nodo

    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 Caricare/scaricare file dal nodo

    Carica /tmp/test.pdf locale su node1 come /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!
    

    Scarica il file /tmp/test2.pdf da node1 in locale come /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 Creare un proxy socks5 verso un nodo

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

    Dopo aver eseguito con successo il comando socks, viene aperta una porta locale sul nodo admin, come la 7777 sopra. Utilizza la 7777 per il proxy socks5.

  • lforward/rforward Inoltrare una porta locale verso remota / Inoltrare una porta remota verso locale

    lforward inoltra la porta locale 8888 del nodo admin alla porta 8888 del nodo 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 inoltra la porta 8889 della rete del nodo 1 (192.168.204.103) alla porta locale 8889 del nodo 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