Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Venom — Venom - Ein Multi-Hop-Proxy für Penetrationstester | Kitploit
Tools/GitHubGitHub/dliv3/venom
Verschlüsselungs-/EntschlüsselungstoolsNetzwerkkartierungPenetrationstestsCommand and ControlRed TeamingRemote-Access-Tool
GitHubdliv3/venom

Venom

Venom - Ein Multi-Hop-Proxy für Penetrationstester

Repository anzeigen
2.2k358vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Venom - Ein Multi-Hop-Proxy für Penetrationstester

简体中文 | English

Venom ist ein in Go entwickeltes Multi-Level-Proxy-Tool, das für Penetrationstester konzipiert ist.

Venom kann mehrere Knoten verbinden und diese Knoten als Sprungbrett nutzen, um eine mehrstufige Proxy-Kette aufzubauen.

Penetrationstester können Venom verwenden, um Netzwerkverkehr einfach in mehrere interne Netzwerke zu leiten und die Proxy-Knoten bequem zu verwalten.

Dieses Tool ist ausschließlich für Sicherheitsforschung und Schulungszwecke bestimmt. Der Benutzer trägt die alleinige Verantwortung für alle rechtlichen und damit verbundenen Konsequenzen, die sich aus der Nutzung dieses Tools ergeben! Der Autor übernimmt keine rechtliche oder damit verbundene Haftung!

Eigenschaften

  • Visuelle Netzwerktopologie
  • Mehrstufiger SOCKS5-Proxy
  • Mehrstufige Portweiterleitung
  • Port-Nutzung (Apache/MySQL/...)
  • SSH-Tunnel
  • Interaktive Shell
  • Datei-Upload und -Download
  • Verschlüsselte Kommunikation zwischen Knoten
  • Unterstützt mehrere Plattformen (Linux/Windows/MacOS) und mehrere Architekturen (x86/x64/arm/mips)

Da IoT-Geräte (arm/mips/...) normalerweise über begrenzte Ressourcen verfügen, unterstützen die für IoT-Umgebungen kompilierten Binärdateien dieses Projekts keine Port-Nutzung und SSH-Tunnel, um die Größe der Binärdatei zu reduzieren. Außerdem wurden die Netzwerk-Parallelität und die Puffergröße begrenzt, um den Speicherverbrauch zu minimieren.

Installation

Sie können die vorkompilierten ausführbaren Dateien direkt von der Release-Seite herunterladen.

Wenn Sie das Projekt aus dem Quellcode kompilieren möchten, müssen Sie go >= 1.11 installieren und dann die folgenden Befehle ausführen:

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

# $GOPATH ist die bei der Installation von Go konfigurierte Umgebungsvariable, die mit dem Befehl go env angezeigt werden kann
cd $GOPATH/src/github.com/Dliv3/Venom

# Die kompilierten Binärdateien werden im Release-Ordner im aktuellen Verzeichnis gespeichert
./build.sh

Verwendung

YouTube-Demo-Video: https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

1. Admin/Agent Befehlszeilenparameter

  • Admin- und Agent-Knoten können Verbindungen sowohl abhören als auch initiieren

    Admin lauscht auf einem Port, Agent stellt Verbindung her:

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

    Agent lauscht auf einem Port, Admin stellt Verbindung her:

    root@kitploit:~
    ./agent_linux_x64 -lport 8888
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
    
  • Agent-Knoten unterstützen Port-Nutzung

    Der Agent bietet zwei Methoden zur Port-Nutzung:

    1. Port-Nutzung über die Optionen SO_REUSEPORT und SO_REUSEADDR
    2. Port-Nutzung über iptables (nur Linux-Plattform)

    Mit der Port-Nutzung von Venom können unter Windows Ports von Diensten wie Apache, MySQL usw. genutzt werden (jedoch vorübergehend nicht RDP, IIS usw.). Unter Linux können die meisten Dienst-Ports genutzt werden. Der genutzte Port kann weiterhin normal seinen ursprünglichen Dienst bereitstellen.

    Erste Methode zur Port-Nutzung

    root@kitploit:~
    # Beispiel unter Windows mit Apache
    # Nutzung des Apache-Ports 80, ohne den normalen HTTP-Dienst von Apache zu beeinträchtigen
    # -lhost muss die IP des lokalen Hosts sein, nicht 0.0.0.0, sonst funktioniert die Port-Nutzung nicht
    ./agent.exe -lhost 192.168.204.139 -reuse-port 80
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 80
    

    Zweite Methode zur Port-Nutzung

2. Eingebaute Befehle des Admin-Knotens

  • help Hilfe anzeigen

    root@kitploit:~
    (admin node) >>> help
    
      help                                     Hilfeinformationen.
      exit                                     Beenden.
      show                                     Netzwerktopologie anzeigen.
      getdes                                   Beschreibung des Zielknotens anzeigen.
      setdes     [info]                        Beschreibung zum Zielknoten hinzufügen.
      goto       [id]                          ID als Zielknoten auswählen.
      listen     [lport]                       Auf einem Port auf dem Zielknoten lauschen.
      connect    [rhost] [rport]               Über den Zielknoten mit einem neuen Knoten verbinden.
      sshconnect [user@ip:port] [dport]        Über einen SSH-Tunnel mit einem neuen Knoten verbinden.
      shell                                    Interaktive Shell auf dem Zielknoten starten.
      upload     [local_file]  [remote_file]   Dateien auf den Zielknoten hochladen.
      download   [remote_file]  [local_file]   Dateien vom Zielknoten herunterladen.
      socks      [lport]                       SOCKS5-Server starten.
      lforward   [lhost] [sport] [dport]       Lokalen Port zu einem entfernten Port weiterleiten.
      rforward   [rhost] [sport] [dport]       Entfernten Port zu einem lokalen Port weiterleiten.
      
    
  • show Netzwerktopologie anzeigen

    A steht für den Admin-Knoten, Zahlen für Agent-Knoten

    Das folgende Topologie-Diagramm zeigt, dass der Admin-Knoten mit Knoten 1 verbunden ist, Knoten 1 mit den Knoten 2 und 4, und Knoten 2 mit Knoten 3.

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

3. Hinweise

  • Derzeit wird nur ein einzelner Admin-Knoten für die Netzwerkverwaltung unterstützt.
  • Um einen neu hinzugefügten Knoten zu verwalten, muss zuerst der Befehl show auf dem Admin-Knoten ausgeführt werden, um die Netzwerktopologie und die Knotennummern zu synchronisieren.
  • Bei der zweiten Port-Nutzungsmethode (basierend auf iptables) müssen Sie script/port_reuse.py verwenden, um die auf dem Zielhost erstellten iptables-Regeln zu aktivieren.

TODO

  • Integration mit regeorg
  • Mehrere Admin-Knoten zur gleichzeitigen Netzwerkverwaltung
  • Verschlüsselung des Datenverkehrs zwischen Knoten
  • SOCKS5-Unterstützung für UDP
  • Integration mit Meterpreter (in Planung)
  • RESTful-API
  • Schließen von Proxys und Portweiterleitungen

Danksagungen

  • rootkiter#Termite
  • ring04h#s5.go
  • n1nty#远程遥控 IPTables 进行端口复用
Tool herunterladen
root@kitploit:~
# Beispiel unter Linux mit Apache
# Root-Rechte erforderlich
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80

Diese Methode erstellt iptables-Regeln, die den Datenverkehr von reuse-port an lport weiterleiten, von wo aus der Agent ihn verteilt.

Beachten Sie: Wenn das Programm über sigterm oder sigint (kill oder Strg-C) beendet wird, kann es die iptables-Regeln automatisch bereinigen. Wenn der Agent mit kill -9 beendet wird, ist dies nicht möglich, da das Programm das sigkill-Signal nicht verarbeiten kann. In diesem Fall müssen die iptables-Regeln manuell bereinigt werden.

Um zu vermeiden, dass die iptables-Regeln nicht automatisch bereinigt werden, wurde die zweite Methode basierend auf iptables -m recent implementiert, die die Weiterleitungsregeln über spezielle TCP-Pakete steuert.

Diese Implementierung bezieht sich auf https://threathunter.org/topic/594545184ea5b2f5516e2033

root@kitploit:~
# Starten des Agents mit iptables-Regeln auf dem Linux-Host
# Wenn sich rhost im internen Netzwerk befindet, kann ein SOCKS5-Proxy für den Skriptverkehr verwendet werden (siehe unten)
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80

# Verbindung zum Agent-Knoten herstellen
./admin_macos_x64 -rhost 192.168.204.135 -rport 80

# Zum Deaktivieren der Weiterleitungsregeln
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
  • Verschlüsselte Kommunikation zwischen Knoten

    Venom bietet eine verschlüsselte Kommunikation zwischen Knoten. Der Benutzer kann mit der Option -passwd ein Passwort angeben, das zur Generierung des AES-Verschlüsselungsschlüssels verwendet wird.

    root@kitploit:~
    # Passwort mit -passwd setzen: dlive@dubhe
    ./admin_macos_x64 -lport 8889 -passwd dlive@dubhe
    
    # Agent mit demselben Passwort verbinden
    ./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe
    
  • Hinweis: Um einen neu hinzugefügten Knoten zu verwalten, muss zuerst der Befehl show auf dem Admin-Knoten ausgeführt werden, um die Netzwerktopologie und die Knotennummern zu synchronisieren.

  • goto Einen Knoten ansteuern

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

    Nachdem Sie zu einem Knoten gewechselt sind, können Sie die folgenden Befehle verwenden.

  • getdes/setdes Beschreibung eines Knotens abrufen/festlegen

    root@kitploit:~
    (node 1) >>> setdes linux x64 blahblahblah
    (node 1) >>> getdes
    linux x64 blahblahblah
    
  • connect/listen/sshconnect Knoten miteinander verbinden

    Knoten 1 verbindet sich mit Port 9999 von 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
    

    Auf Knoten 1 auf Port 9997 lauschen, dann auf einem anderen Rechner ./agent_linux_x64 -rhost 192.168.204.139 -rport 9997 ausführen, um sich mit Knoten 1 zu verbinden:

    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
    

    Auf 192.168.0.104 ./agent_linux_x64 -lport 9999 ausführen. Knoten 3 stellt über sshconnect einen SSH-Tunnel zu Port 9999 von 192.168.0.104 her. Sie können entweder ein Passwort oder einen SSH-Private-Key verwenden.

    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 Interaktive Shell auf einem Knoten starten

    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 Dateien auf einen Knoten hochladen/von einem Knoten herunterladen

    Lokale Datei /tmp/test.pdf auf Knoten 1 als /tmp/test2.pdf hochladen:

    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!
    

    Datei /tmp/test2.pdf von Knoten 1 lokal als /tmp/test3.pdf herunterladen:

    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 SOCKS5-Proxy zu einem Knoten erstellen

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

    Nach erfolgreicher Ausführung des socks-Befehls wird auf dem Admin-Knoten ein lokaler Port geöffnet (im Beispiel 7777). Verwenden Sie diesen Port für den SOCKS5-Proxy.

  • lforward/rforward Lokalen Port zum entfernten/entfernten Port zum lokalen weiterleiten

    lforward leitet den lokalen Port 8888 des Admin-Knotens zum Port 8888 von Knoten 1 weiter:

    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 leitet den Port 8889 von 192.168.204.103 im Netzwerk von Knoten 1 zum lokalen Port 8889 des Admin-Knotens weiter:

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