Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Venom — Venom - Um Proxy de Múltiplos Saltos para Testadores de Penetração | Kitploit
Ferramentas/GitHubGitHub/dliv3/venom
Ferramentas de Criptografia/DescriptografiaMapeamento de RedeTestes de PenetraçãoComando e ControleRed TeamingFerramenta de Acesso Remoto
GitHubdliv3/venom

Venom

Venom - Um Proxy de Múltiplos Saltos para Testadores de Penetração

Ver Repositório
2.2k35815há 6 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Venom - Um Proxy Multi-hop para Testadores de Penetração

Chinês Simplificado | English

O Venom é uma ferramenta de proxy multi-nível desenvolvida em Go, projetada para testadores de penetração.

O Venom pode conectar múltiplos nós e, em seguida, usar esses nós como trampolins para construir proxies multi-nível.

Os testadores de penetração podem usar o Venom para rotear facilmente o tráfego de rede para várias camadas de redes internas e gerenciar os nós proxy de forma simples.

Esta ferramenta é destinada exclusivamente a pesquisas de segurança e fins educacionais. O usuário assume toda a responsabilidade legal e relacionada decorrente do uso desta ferramenta! O autor não assume qualquer responsabilidade legal ou relacionada!

Características

  • Topologia de rede visualizável
  • Proxy socks5 multi-nível
  • Encaminhamento de porta multi-nível
  • Reutilização de porta (apache/mysql/...)
  • Túnel SSH
  • Shell interativo
  • Upload e download de arquivos
  • Criptografia de comunicação entre nós
  • Suporte a múltiplas plataformas (Linux/Windows/MacOS) e múltiplas arquiteturas (x86/x64/arm/mips)

Como dispositivos IoT (arquiteturas arm/mips/...) geralmente têm recursos limitados, para reduzir o tamanho do binário, os binários compilados para ambientes IoT neste projeto não suportam reutilização de porta e túnel SSH, e para reduzir o uso de memória, o número de conexões simultâneas e o tamanho do buffer são limitados.

Instalação

Você pode baixar diretamente os executáveis compilados na release

Se você deseja compilar este projeto a partir do código fonte, precisa instalar go >= 1.11 e então executar os comandos abaixo

go get -u github.com/Dliv3/Venom/...

# $GOPATH是安装Go时配置的环境变量,可通过go env命令查看
cd $GOPATH/src/github.com/Dliv3/Venom

# 编译好的二进制文件存放在当前目录下的release文件夹中
./build.sh

Uso

Vídeo de demonstração no Youtube: https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

1. Parâmetros de linha de comando admin/agent

Os nós admin e agent podem escutar conexões ou iniciar conexões

admin escuta porta, agent inicia conexão:

./admin_macos_x64 -lport 9999
./agent_linux_x64 -rhost 192.168.0.103 -rport 9999

agent escuta porta, admin inicia conexão:

./agent_linux_x64 -lport 8888
./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
  • Os nós agent suportam reutilização de porta

O agent fornece dois métodos de reutilização de porta

  1. Reutilização de porta através das opções SO_REUSEPORT e SO_REUSEADDR
  2. Reutilização de porta via iptables (apenas suportado em Linux)

Através da funcionalidade de reutilização de porta fornecida pelo Venom, no Windows você pode reutilizar portas de serviços como apache, mysql, etc., mas não pode reutilizar portas de serviços como RDP, IIS por enquanto. No Linux, você pode reutilizar a maioria das portas de serviço. A porta reutilizada ainda pode fornecer seu serviço original normalmente.

Primeiro método de reutilização de porta

# 以windows下apache为例
# 复用apache 80端口,不影响apache提供正常的http服务
# -lhost 的值为本机ip,不能写0.0.0.0,否则无法进行端口复用
./agent.exe -lhost 192.168.204.139 -reuse-port 80
./admin_macos_x64 -rhost 192.168.204.139 -rport 80

Segundo método de reutilização de porta

# 以linux下apache为例
# 需要root权限
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80

Este método de reutilização de porta configura regras iptables na máquina local, redirecionando o tráfego da reuse-port para lport, que é então distribuído pelo agent.

Observe que se o programa for encerrado com sinais sigterm ou sigint (kill ou ctrl-c), o programa pode limpar as regras iptables automaticamente. Se o agent for morto com kill -9, as regras iptables não podem ser limpas automaticamente e precisam ser limpas manualmente, pois o programa agent não pode lidar com o sinal sigkill.

Para evitar que as regras iptables não sejam limpas automaticamente, impedindo o testador de penetração de acessar o serviço na porta 80, o segundo método de reutilização de porta usa iptables -m recent para controlar se as regras de encaminhamento iptables estão ativadas, através de um pacote TCP especial.

A implementação aqui faz referência a https://threathunter.org/topic/594545184ea5b2f5516e2033

# 启动agent在linux主机上设置的iptables规则
# 如果rhost在内网,可以使用socks5代理脚本流量,socks5代理的使用见下文
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80

# 连接agent节点
./admin_macos_x64 -rhost 192.168.204.135 -rport 80

# 如果要关闭转发规则
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
  • Criptografia de comunicação entre nós

O Venom fornece funcionalidade de criptografia de comunicação entre nós. O usuário pode especificar uma senha através da opção -passwd, que é usada para gerar a chave necessária para a criptografia AES.

# 通过-passwd指定密码为dlive@dubhe
./admin_macos_x64 -lport 8889 -passwd dlive@dubhe

# agent指定相同的密码与admin节点连接
./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe

2. Comandos internos do nó admin

  • help Imprime informações de ajuda
(admin node) >>> help

  help                                     Help information.
  exit                                     Exit.
  show                                     Display network topology.
  getdes                                   View description of the target node.
  setdes     [info]                        Add a description to the target node.
  goto       [id]                          Select id as the target node.
  listen     [lport]                       Listen on a port on the target node.
  connect    [rhost] [rport]               Connect to a new node through the target node.
  sshconnect [user@ip:port] [dport]        Connect to a new node through ssh tunnel.
  shell                                    Start an interactive shell on the target node.
  upload     [local_file]  [remote_file]   Upload files to the target node.
  download   [remote_file]  [local_file]   Download files from the target node.
  socks      [lport]                       Start a socks5 server.
  lforward   [lhost] [sport] [dport]       Forward a local sport to a remote dport.
  rforward   [rhost] [sport] [dport]       Forward a remote sport to a local dport.
  
  • show Exibe a topologia de rede

A representa o nó admin, números representam nós agent

O diagrama de topologia abaixo mostra que o nó admin está conectado ao nó 1, o nó 1 está conectado aos nós 2 e 4, e o nó 2 está conectado ao nó 3

(node 1) >>> show
A
+ -- 1
     + -- 2
          + -- 3
     + -- 4

Observe que para operar em um nó recém-adicionado, você precisa primeiro executar o comando show no nó admin para sincronizar a topologia de rede e os números dos nós.

  • goto Operar em um nó específico
(admin node) >>> goto 1
(node 1) >>> 

Após usar goto para um nó, você pode usar os comandos que serão apresentados a seguir.

  • getdes/setdes Obter/definir descrição das informações do nó
(node 1) >>> setdes linux x64 blahblahblah
(node 1) >>> getdes
linux x64 blahblahblah
  • connect/listen/sshconnect Interconexão entre nós

O nó 1 se conecta à porta 9999 de 192.168.0.103

(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

No nó 1, escute a porta 9997 e, em seguida, execute ./agent_linux_x64 -rhost 192.168.204.139 -rport 9997 em outra máquina para conectar ao nó 1

Baixar ferramenta