Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
Stowaway — Ferramenta de proxy multi-hop para pentesters que permite roteamento de tráfego através de múltiplos nós, tunelamento SOCKS5/SSH, encaminhamento de porta, shell remoto e comunicação criptografada entre nós. | Kitploit
Ferramentas/GitHubGitHub/ph4ntonn/stowaway
Ferramentas de Criptografia/DescriptografiaMovimento LateralControle de Acesso à RedeTestes de PenetraçãoComando e ControleRed Teaming
GitHubph4ntonn/stowaway

Stowaway

Ferramenta de proxy multi-hop para pentesters que permite roteamento de tráfego através de múltiplos nós, tunelamento SOCKS5/SSH, encaminhamento de porta, shell remoto e comunicação criptografada entre nós.

Ver Repositório
3.4k442há 5 mesesRevisado 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

stowaway.png

Stowaway

GitHub issues GitHub forks GitHub stars GitHub license

English

Stowaway é uma ferramenta de proxy multinível escrita em Go, projetada especificamente para profissionais de testes de penetração.

Os usuários podem usar este programa para encaminhar tráfego externo através de múltiplos nós para a rede interna, contornar restrições de acesso à rede, construir uma rede de nós em árvore e gerenciar facilmente as funcionalidades.

Agradeço a todos pelas estrelas. Ao mesmo tempo, sejam bem-vindos para relatar problemas e bugs após o uso. 😘

Por favor, leia atentamente as instruções de uso e as observações no final antes de usar.

Declaração

Este projeto é apenas para fins de pesquisa e ensino em segurança cibernética. É estritamente proibido usá-lo para qualquer finalidade ilegal. Certifique-se de obter autorização explícita do sistema alvo antes de realizar qualquer teste com esta ferramenta e cumpra rigorosamente as leis e regulamentos relevantes do seu país/região. Quaisquer consequências diretas ou indiretas (incluindo, mas não se limitando a: perda de dados, danos ao sistema, responsabilidade legal) decorrentes do uso desta ferramenta são de responsabilidade exclusiva do usuário. O autor deste projeto não se responsabiliza por qualquer uso indevido ou responsabilidade legal resultante. O uso desta ferramenta implica que você leu, compreendeu e concorda com todo o conteúdo desta isenção de responsabilidade.

Características

  • Interface mais amigável para o administrador, com suporte a autocompletar comandos/histórico
  • Gerenciamento de árvore de nós de fácil visualização
  • Exibição rica de informações dos nós
  • Conexões diretas/reversas entre nós
  • Suporte a reconexão entre nós
  • Conexão entre nós via proxy socks5/http
  • Conexão entre nós via túnel SSH
  • Tráfego entre nós pode ser TCP/HTTP/WS
  • Encaminhamento de proxy socks5 multinível, suporta UDP/TCP, IPv4/IPv6
  • Suporte a SSH para acessar hosts remotos a partir de um nó
  • Shell remoto
  • Upload e download de arquivos
  • Mapeamento de portas local/remoto
  • Reutilização de portas nos nós
  • Ativar/desativar livremente vários serviços
  • Autenticação mútua entre nós
  • Tráfego entre nós criptografado com TLS/AES-256-GCM
  • Tamanho do arquivo reduzido em 25% em comparação com v1.0
  • Suporte a várias plataformas (Linux/Mac/Windows/MIPS/ARM)

Compilação e demonstração

  • Compile diretamente programas completos para várias plataformas usando make, ou consulte o Makefile para compilar programas específicos.
  • Quem não quiser compilar pode usar os programas compilados no release.
  • Vídeo de demonstração: YouTube

Instruções de uso

Funções

Stowaway possui dois papéis:

  • admin – lado de controle usado pelo testador de penetração
  • agent – lado controlado implantado pelo testador de penetração

Definições de termos

  • Nó: refere-se a admin || agente
  • Modo ativo: o nó atual conecta-se ativamente a outro nó
  • Modo passivo: o nó atual escuta em uma porta, aguardando a conexão de outro nó
  • Upstream: tráfego entre o nó atual e seu nó pai
  • Downstream: tráfego entre o nó atual e todos os seus nós filhos

Início rápido

Os comandos a seguir iniciam rapidamente uma instância simples do Stowaway:

  • admin: ./stowaway_admin -l 9999
  • agent: ./stowaway_agent -c <IP do admin>:9999

Análise de parâmetros

  • admin
root@kitploit:~
Parâmetros:
-l Endereço de escuta no modo passivo [ip]:<porta>
-s Chave de criptografia da comunicação do nó, todos os nós (admin && agente) devem ser iguais
-c Endereço do nó alvo no modo ativo
--socks5-proxy Endereço do servidor proxy SOCKS5
--socks5-proxyu Nome de usuário do servidor proxy SOCKS5 (opcional)
--socks5-proxyp Senha do servidor proxy SOCKS5 (opcional)
--http-proxy Endereço do servidor proxy HTTP
--down Tipo de protocolo downstream, padrão é tráfego TCP puro, opções: HTTP/WS
--tls-enable Habilita TLS para comunicação entre nós; quando TLS é ativado, a criptografia AES é desativada
--domain Especifica o domínio TLS SNI/WebSocket; se vazio, padrão é o endereço do nó alvo
--heartbeat Ativa pacotes de heartbeat
  • agent
root@kitploit:~
Parâmetros:
-l Endereço de escuta no modo passivo [ip]:<porta>
-s Chave de criptografia da comunicação do nó
-c Endereço do nó alvo no modo ativo
--socks5-proxy Endereço do servidor proxy SOCKS5
--socks5-proxyu Nome de usuário do servidor proxy SOCKS5 (opcional)
--socks5-proxyp Senha do servidor proxy SOCKS5 (opcional)
--http-proxy Endereço do servidor proxy HTTP
--reconnect Intervalo de reconexão (em segundos)
--rehost Endereço IP reutilizado na reutilização de porta
--report Porta reutilizada na reutilização de porta
--up Tipo de protocolo upstream, padrão é tráfego TCP puro, opções: HTTP/WS
--down Tipo de protocolo downstream, padrão é tráfego TCP puro, opções: HTTP/WS
--cs Codificação do shell da plataforma de execução, padrão é utf-8, opcional: gbk
--tls-enable Habilita TLS para comunicação entre nós; quando TLS é ativado, a criptografia AES é desativada
--domain Especifica o domínio TLS SNI/WebSocket; se vazio, padrão é o endereço do nó alvo

Como usar os parâmetros

-l

Este parâmetro é usado da mesma forma para admin e agente, apenas no modo passivo.

Se nenhum endereço IP for especificado, escuta em 0.0.0.0 por padrão.

  • admin: ./stowaway_admin -l 9999 ou ./stowaway_admin -l 127.0.0.1:9999

  • agent: ./stowaway_agent -l 9999 ou ./stowaway_agent -l 127.0.0.1:9999

-s

Este parâmetro é usado da mesma forma para admin e agente, disponível nos modos ativo e passivo.

Opcional. Se vazio, significa que a comunicação não é criptografada; caso contrário, a comunicação é criptografada com a chave fornecida pelo usuário.

  • admin: ./stowaway_admin -l 9999 -s 123

  • agent: ./stowaway_agent -l 9999 -s 123

-c

Este parâmetro é usado da mesma forma para admin e agente, apenas no modo ativo.

Representa o endereço do nó ao qual se deseja conectar.

  • admin: ./stowaway_admin -c 127.0.0.1:9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999

--socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy

Esses quatro parâmetros são usados da mesma forma para admin e agente, apenas no modo ativo.

--socks5-proxy representa o endereço do servidor proxy SOCKS5; --socks5-proxyu e --socks5-proxyp são opcionais.

--http-proxy representa o endereço do servidor proxy HTTP, usado da mesma forma que SOCKS5.

Sem nome de usuário/senha:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

Com nome de usuário/senha:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

--up/--down

Esses dois parâmetros são usados da mesma forma para admin e agente, disponíveis nos modos ativo e passivo.

Observe que admin não tem o parâmetro --up.

Esses parâmetros são opcionais. Se vazios, o tráfego upstream/downstream será TCP puro.

Para que o tráfego upstream/downstream seja HTTP/WS, defina esses parâmetros como http ou ws.

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --up ws ou ./stowaway_agent -c 127.0.0.1:9999 --up ws --down ws

Além disso, dois pontos importantes:

Primeiro, quando você define o upstream/downstream de um nó como TCP/HTTP/WS, o downstream/upstream do nó pai/filho conectado deve ser configurado de forma consistente, como abaixo:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -l 9999 --up ws

Nesse caso, o agente deve definir --up como ws, caso contrário, ocorrerá erro de rede.

O mesmo se aplica entre agentes.

Suponha que agent-1 esteja escutando na porta 127.0.0.1:10000 aguardando conexão de nó filho e tenha definido --down ws.

Então agent-2 também deve definir --up como ws, caso contrário, ocorrerá erro de rede.

  • agent-2: ./stowaway_agent -c 127.0.0.1:10000 --up ws

Segundo, como HTTP é um protocolo half-duplex, não é muito adequado para a comunicação full-duplex do Stowaway. Portanto, a implementação HTTP aqui apenas utiliza o formato de mensagem HTTP, não um fluxo de trabalho HTTP completo. Você ainda pode usar este protocolo, mas o tráfego entre nós Stowaway não pode ser encaminhado via nginx quando selecionado o formato de mensagem HTTP. Esse código e funcionalidade são mantidos para uso em situações especiais com HTTP e também para fornecer um modelo de tráfego personalizado, útil como referência para protocolos personalizados.

Se você precisar usar proxy reverso como nginx, use o protocolo ws juntamente com TLS.

--reconnect

Este parâmetro é usado apenas no agente e apenas no modo ativo.

Opcional. Se não definido, o nó não tentará reconectar automaticamente após a desconexão. Se definido, o nó tentará reconectar-se ao nó pai a cada x segundos (o valor definido).

  • admin: ./stowaway_admin -l 9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --reconnect 10

Nesse caso, se a conexão entre agente e admin for perdida, o agente tentará reconectar-se ao admin a cada 10 segundos.

O mesmo se aplica entre agentes.

Além disso, o parâmetro --reconnect pode ser usado junto com --socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy, e o agente tentará reconectar através do proxy de acordo com a configuração inicial.

--rehost/--report

Esses dois parâmetros são especiais e usados apenas no agente. Veja detalhes na seção de reutilização de porta abaixo.

--cs

Este parâmetro é usado apenas no agente, disponível nos modos ativo e passivo.

Principalmente para resolver problemas de codificação no comando 'shell'. Quando o agente é executado em uma plataforma com codificação de console gbk (por exemplo, Windows em geral) e o admin é executado em uma plataforma com codificação utf-8, certifique-se de definir este parâmetro como 'gbk'.

  • Windows: ./stowaway_agent -c 127.0.0.1:9999 -s 123 --cs gbk

--tls-enable

Esses dois parâmetros são usados da mesma forma para admin e agente, disponíveis nos modos ativo e passivo.

Ao ativar esta opção, o tráfego entre nós será criptografado com TLS.

Exemplo:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c localhost:10000 --tls-enable -s 123

Observe que quando este parâmetro é ativado, a criptografia AES é desativada por padrão, e o parâmetro -s será usado apenas para autenticação mútua entre nós e recurso de reutilização de porta.

Além disso, quando este parâmetro estiver ativado, certifique-se de que todos os nós na rede (incluindo admin) também o ativem.

--domain

Esses dois parâmetros são usados da mesma forma para admin e agente, disponíveis apenas no modo ativo.

Ao definir esta opção, é possível configurar a opção SNI durante a negociação TLS deste nó ou o Host alvo do WebSocket.

Exemplo:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:10000 --tls-enable -s 123 --domain xxx.com

--heartbeat

Este parâmetro é usado apenas no admin, disponível nos modos ativo e passivo.

Ao definir esta opção, o admin enviará continuamente pacotes de heartbeat para o primeiro nó, mantendo uma conexão de longa duração mesmo na presença de proxy reverso intermediário.

Suponha que haja um proxy reverso como nginx entre admin e agente, que proxy a porta 8080 para a porta 8000. Exemplo:

  • admin: ./stowaway_admin -l 8000 --tls-enable -s 123 --down ws --heartbeat
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:8080 --tls-enable -s 123 --domain xxx.com --up ws

Mecanismo de reutilização de porta

Atualmente, o Stowaway oferece reutilização de porta baseada nas características SO_REUSEPORT e SO_REUSEADDR, e também reutilização de porta baseada em IPTABLES.

  • No Linux, pode reutilizar a maioria das portas de serviços.
  • No Windows, não pode reutilizar portas IIS, RDP; pode reutilizar portas de serviços MySQL, Apache.

Modos de reutilização

  • Modo SO_REUSEPORT e SO_REUSEADDR

    Suponha que o agente use reutilização de porta para reutilizar a porta 80.

    Nesse caso, o agente deve definir os parâmetros --rehost, --report e -s.

    • --rehost: representa o endereço IP a ser reutilizado, não pode ser 0.0.0.0, geralmente deve ser o endereço externo da placa de rede.
    • --report: representa a porta a ser reutilizada.
    • -s: representa a chave de comunicação.

    Suporta principalmente reutilização em ambientes Windows e Mac; também funciona no Linux, mas com mais limitações.

    • admin: ./stowaway_admin -c 192.168.0.105:80 -s 123
    • agent: ./stowaway_agent --report 80 --rehost 192.168.0.105 -s 123
  • Modo IPTABLES

    Suponha que o agente use reutilização de porta para reutilizar a porta 22.

    Nesse caso, o agente deve definir os parâmetros -l, --report e -s.

Observações

  • Os exemplos acima mostram apenas conexões entre admin e agentes; conexões entre agentes são idênticas, sem diferenças.

  • Se o agente for morto com Ctrl+C ou kill, o programa limpará automaticamente as regras IPTABLES; no entanto, se morto com kill -9, a limpeza automática não ocorrerá.

    Portanto, para evitar que as regras IPTABLES não sejam limpas após uma saída anormal do agente, impedindo o acesso ao serviço reutilizado,

    para desligar, execute: python reuse.py --stop --rhost xxx.xxx.xxx.xxx --rport xxx

    Isso interromperá a regra de encaminhamento e permitirá o acesso normal ao serviço original.

  • Se estiver usando o modo de reutilização de porta por IPTABLES, o agente forçará a escuta em 0.0.0.0, não sendo possível especificar um IP com o parâmetro -l.

Como formar uma rede multinível?

Nos exemplos acima, apenas admin e um agente aparecem.

A rede multinível é o núcleo.

No Stowaway, formar uma rede multinível requer o uso dos comandos listen, connect e sshtunnel do admin.

Exemplo simples:

  • admin: ./stowaway_admin -l 9999 -s 123

Agora agent-1 já está conectado ao admin.

  • agent-1: ./stowaway_agent -c 127.0.0.1:9999 -s 123

Se o usuário também deseja conectar agent-2, faça:

  • agent-2: ./stowaway_agent -l 10000 -s 123

Então, no admin, digite use 0 -> connect IP_do_agent-2:10000 para adicioná-lo à rede, tornando-o um nó filho de agent-1.

Se o usuário ainda quiser conectar um nó agent-3, mas agent-1 não puder acessar agent-3,

então, no admin, digite use 0 -> listen -> escolha 1.Normal Passive -> digite 10001. Isso fará com que agent-1 escute na porta 10001 e aguarde a conexão de nós filhos.

Após a operação do admin, inicie agent-3 da seguinte forma:

  • agent-3: ./stowaway_agent -c 127.0.0.1:10001 -s 123

Assim, agent-3 será adicionado à rede como outro nó filho de agent-1.

Para mais detalhes sobre os comandos listen e sshtunnel, consulte a análise de comandos abaixo.

Como reconectar?

Atualmente, o Stowaway suporta vários modos de reconexão, resumidos a seguir:

Primeiro, quando o nó pai fica offline, apenas um tipo de nó sairá ativamente: aquele iniciado em modo ativo e sem reconexão configurada.

Se a reconexão estiver configurada, o nó tentará reconectar no intervalo especificado.

Além disso, todos os nós iniciados em modo passivo não sairão ativamente; em vez disso, eles escutarão novamente na porta especificada com base nos parâmetros de inicialização. O usuário ainda pode usar connect ou sshtunnel para reconectar esses nós à rede.

Observações

  1. Se devido a flutuações de rede ou queda de um nó intermediário, um ramo for desconectado, ao reconectar ativamente, certifique-se de conectar-se ao nó cabeça da cadeia perdida. Por exemplo, admin seguido por node1, node1 se ramifica em duas: node1->node2->node3->node4 e node1->node5->node6. Se node2 cair, node3 e node4 não cairão, permanecerão ativos. O usuário terá duas opções para reconectar node3 e node4: uma, se node1 puder acessar diretamente node3, o usuário pode reconectar node3 imediatamente via comando connect ou sshtunnel em node1 (lembre-se: mesmo que node1 também possa acessar node4, não conecte diretamente node4; conecte o nó cabeça da cadeia perdida (node3->node4) que é node3). Isso reconectará node3 e node4 à rede. A outra opção, se node1 não puder acessar diretamente node3 (ou seja, deve passar por node2), então reinicie node2 e o adicione à rede, depois use connect ou sshtunnel em node2 para conectar node3, adicionando node3 e node4 à rede.

  2. Quando um nó cai, todos os serviços relacionados a esse nó e seus nós filhos (socks, backward, forward) serão forçadamente interrompidos.

Análise de comandos

No console do admin, o usuário pode usar Tab para autocompletar comandos e as teclas de seta para navegar no histórico/mover o cursor.

O console do admin tem dois níveis. O primeiro nível é o painel principal, com os seguintes comandos:

  • help: exibe ajuda do painel principal
root@kitploit:~
(admin) >> help
  help                                     		Exibe ajuda
  detail                                  		Exibe detalhes dos nós conectados
  topo                                     		Exibe topologia dos nós
  use        <id>                          		Seleciona o nó alvo a ser usado
  exit                                     		Sai do Stowaway
  • detail: exibe informações detalhadas dos nós online
root@kitploit:~
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • topo: exibe a relação pai-filho dos nós online
root@kitploit:~
(admin) >> topo
Node[0]'s children ->
Node[1]

Node[1]'s children ->
  • use: usa um agente específico
root@kitploit:~
(admin) >> use 0
(node 0) >>
  • exit: sai do Stowaway
root@kitploit:~
(admin) >> exit
[*] Deseja realmente sair do Stowaway? (s/n): s
[*] TCHAU!

Quando o usuário usa o comando use para selecionar um agente, entra no segundo nível, o painel de nós, com os seguintes comandos:

  • help: exibe ajuda do painel de nós
root@kitploit:~
(node 0) >> help
  help                                            Exibe ajuda
  status                                          Exibe status do nó, incluindo socks/forward/backward
  listen                                          Inicia escuta de porta no nó atual
  addmemo    <string>                             Adiciona memorando ao nó atual
  delmemo                                         Remove memorando do nó atual
  ssh        <ip:port>                            Inicia SSH através do nó atual
  shell                                           Inicia shell interativo no nó atual
  socks      <lport> [username] [pass]            Inicia servidor socks5
  stopsocks                                       Para serviços socks
  connect    <ip:port>                            Conecta a um novo nó
  sshtunnel  <ip:sshport> <agent port>            Usa túnel SSH para adicionar nó à topologia
  upload     <local filename> <remote filename>   Envia arquivo para o nó atual
  download   <remote filename> <local filename>   Baixa arquivo do nó atual
  forward    <lport> <ip:port>                    Encaminha porta local para IP:porta remoto específico
  stopforward                                     Para serviços forward
  backward    <rport> <lport>                     Encaminha porta remota (agente) para porta local (admin)
  stopbackward                                    Para serviços backward
  shutdown                                        Encerra o nó atual
  back                                            Volta ao painel principal
  exit                                            Sai do Stowaway
  • status: exibe o status dos serviços socks/forward/backward do nó atual
root@kitploit:~
(node 0) >> status
Socks status:
      ListenAddr: 0.0.0.0:10000    Username:    Password:
-------------------------------------------------------------------------------------------
Forward status:
      [1] Listening Addr: [::]:20000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
      [2] Listening Addr: [::]:30000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
-------------------------------------------------------------------------------------------
Backward status:
      [1] Remote Port: 40000 , Local Port: 50000 , Active Connections: 0
  • listen: comanda o agente a escutar em uma porta e aguardar a conexão de nós filhos
root@kitploit:~
(node 0) >> listen
[*] ATENÇÃO! Se escolher Reutilização IPTables ou SOReuse, VOCÊ DEVE CONFIRMAR que o nó foi iniciado inicialmente da forma correspondente!
[*] Ao escolher Reutilização IPTables ou SOReuse, o nó usará a configuração inicial (quando o nó foi iniciado) para reutilizar a porta!
[*] Escolha o modo (1.Normal passive / 2.IPTables Reuse / 3.SOReuse): 1
[*] Informe o [ip:]<porta> : 10001
[*] Aguardando resposta......
[*] Nó está escutando em 10001

Observe que listen é um comando especial, com três modos:

  1. Normal passive: Esta opção significa que o agente escutará normalmente na porta alvo, aguardando a conexão de nós filhos.
  2. IPTables Reuse: Esta opção significa que o agente usará reutilização de porta por IPTABLES para reutilizar a porta e aguardar a conexão de nós filhos.
  3. SOReuse: Esta opção significa que o agente usará reutilização de porta por SOReuse para reutilizar a porta e aguardar a conexão de nós filhos.

O primeiro modo é o mais comum. Se o nó pai escuta dessa forma, o nó filho só precisa de -c ip_do_pai:porta para entrar na rede.

O segundo e terceiro modos são especiais. Se o usuário escolher o segundo ou terceiro modo, deve garantir que o nó atual foi iniciado usando reutilização de porta; caso contrário, não poderá usar esses modos.

No segundo e terceiro modos, o usuário não precisa inserir nenhuma informação; o nó usará automaticamente seus parâmetros de inicialização para reutilizar a porta e se preparar para aceitar conexões de nós filhos.

Além disso, listen aceita apenas a conexão de um nó filho por vez. Para conectar vários nós filhos, execute o comando listen várias vezes.

  • addmemo: adiciona memorando ao nó atual
root@kitploit:~
(node 0) >> addmemo test
[*] Memorando adicionado!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:  test
  • delmemo: remove memorando do nó atual
root@kitploit:~
(node 0) >> delmemo
[*] Memorando removido!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • ssh: comanda o nó a conectar-se a uma máquina alvo via SSH
root@kitploit:~
(node 0) >> ssh 127.0.0.1:22
[*] Escolha o método de autenticação (1.usuário&&senha / 2.certificado): 1
[*] Informe o nome de usuário: ph4ntom
[*] Informe a senha: *****
[*] Aguardando resposta.....
[*] Conectado ao host alvo via SSH com sucesso!
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:03:56]
$ whoami
ph4ntom
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:04:16]
$

Neste modo, a tecla Tab é desabilitada.

  • shell: obtém o shell do nó atual
root@kitploit:~
(node 0) >> shell
[*] Aguardando resposta.....
[*] Shell iniciado com sucesso!

bash: no job control in this shell

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ whoami
ph4ntom
bash-3.2$

Neste modo, a tecla Tab é desabilitada.

  • socks: inicia serviço socks5 no nó atual
root@kitploit:~
(node 0) >> socks 7777
[*] Tentando escutar em 0.0.0.0:7777......
[*] Aguardando resposta......
[*] Socks iniciado com sucesso!
(node 0) >>

Observe que a porta 7777 aqui não é aberta no agente, mas no admin.

Se precisar definir nome de usuário/senha, altere o comando para socks 7777 <seu_usuário> <sua_senha>.

Se precisar especificar a interface de escuta, altere o comando para socks xxx.xxx.xxx.xxx:7777.

  • stopsocks: para o serviço socks5 no nó atual
root@kitploit:~
(node 0) >> stopsocks
Socks Info ---> ListenAddr: 0.0.0.0:7777    Username: <null>    Password: <null>
[*] Deseja realmente parar o socks? (sim/nao): sim
[*] Fechando......
[*] Serviço Socks encerrado com sucesso!
(node 0) >>
  • connect: comanda o nó atual a conectar-se a outro nó filho
root@kitploit:~
agent-1: ./stowaway_agent -l 10002
root@kitploit:~
(node 0) >> connect 127.0.0.1:10002
[*] Aguardando resposta......
[*] Novo nó online! ID do nó é 1

(node 0) >>
  • sshtunnel: comanda o nó atual a conectar-se a outro nó filho via túnel SSH
root@kitploit:~
agent-2: ./stowaway_agent -l 10003
root@kitploit:~
(node 0) >> sshtunnel 127.0.0.1:22 10003
[*] Escolha o método de autenticação (1.usuário&&senha / 2.certificado): 1
[*] Informe o nome de usuário: ph4ntom
[*] Informe a senha: ******
[*] Aguardando resposta.....
[*] Novo nó online! ID do nó é 2

(node 0) >>

Em ambientes de rede estritamente restritos, o túnel SSH pode ser usado para disfarçar o tráfego do Stowaway como tráfego SSH, contornando restrições de firewall.

  • upload: envia arquivo para o nó atual
root@kitploit:~
(node 0) >> upload test.7z test.xxx
[*] Transmitindo arquivo, aguarde...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • download: baixa arquivo do nó atual
root@kitploit:~
(node 0) >> download test.xxx test.xxxx
[*] Transmitindo arquivo, aguarde...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • forward: mapeia uma porta do admin para uma porta remota
root@kitploit:~
(node 0) >> forward 9000 127.0.0.1:22
[*] Tentando escutar em 0.0.0.0:9000......
[*] Aguardando resposta......
[*] Forward iniciado com sucesso!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9000
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:19:51]
$
  • stopforward: para o mapeamento remoto do nó atual
root@kitploit:~
(node 0) >> stopforward
[0] All
[1] Listening Addr : [::]:9000 , Remote Addr : 127.0.0.1:22 , Active Connections : 1
[*] Deseja realmente parar o forward? (sim/nao): sim
[*] Escolha um para fechar: 1
[*] Fechando......
[*] Serviço Forward encerrado com sucesso!
  • backward: mapeia reversamente uma porta do agente atual para uma porta local do admin
root@kitploit:~
(node 0) >> backward 9001 22
[*] Tentando pedir ao nó para escutar em 0.0.0.0:9001......
[*] Aguardando resposta......
[*] Backward iniciado com sucesso!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9001
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 🌈 [17:22:14]
$
  • stopbackward: para o mapeamento reverso do nó atual
root@kitploit:~
(node 0) >> stopbackward
[0] All
[1] Remote Port : 9001 , Local Port : 22 , Active Connections : 1
[*] Deseja realmente parar o backward? (sim/nao): sim
[*] Escolha um para fechar: 1
[*] Fechando......
[*] Serviço Backward encerrado com sucesso!
  • shutdown: comanda o nó atual a sair da rede
root@kitploit:~
(node 1) >> shutdown
(node 1) >>
[*] Nó 1 está offline!
  • back: retorna ao painel principal
root@kitploit:~
(node 1) >> back
(admin) >>
  • exit: sai do Stowaway
root@kitploit:~
(node 1) >> exit
[*] Deseja realmente sair do Stowaway? (s/n): s
[*] TCHAU!

TODO

  • Correção de bugs
  • Suporte a TLS
  • Suporte a múltiplos startnodes

Observações

  • Este programa foi desenvolvido para aprendizado em tempo livre, sua estrutura e código podem não ser rigorosos; pode haver bugs. Agradeço a compreensão.
  • Novos nós não podem ser adicionados quando o admin está offline.
  • O admin suporta apenas um nó agente diretamente conectado; agentes não têm essa limitação.
  • Se o usuário usar o admin no Windows, baixe o ansicon ou aqui, entre na pasta correspondente à arquitetura do sistema e execute ansicon.exe -i; caso contrário, o admin pode apresentar caracteres ilegíveis.
  • Este programa suporta apenas o UDP ASSOCIATE padrão conforme RFC1928. Ao usar proxy socks5 UDP, preste atenção ao seu programa (ex.: scanners); a construção do pacote deve seguir o padrão RFC1928 e lidar com perda de pacotes por conta própria.

Plano 404 StarLink

Stowaway agora faz parte do Plano 404 StarLink

Agradecimentos

Agradeço aos seguintes mestres e projetos pela ajuda durante o desenvolvimento do Stowaway:

  • lz520520
  • SignorMercurio
  • MM0x00
  • r0ck3rt
  • Termite
  • Venom
Baixar ferramenta
  • -l: representa a porta que não pode ser acessada normalmente, ou seja, a porta na qual você realmente deseja que o agente escute e aceite conexões.
  • --report: representa a porta a ser reutilizada.
  • -s: representa a chave de comunicação.

Suporta apenas reutilização em ambiente Linux; o agente modificará automaticamente as regras IPTABLES, exigindo privilégios root.

  • agent: ./stowaway_agent --report 22 -l 10000 -s 123

    Após iniciar o agente, use o script reuse.py no diretório script.

    Primeiro, defina o valor de SECRET (o valor de SECRET é a chave de comunicação definida ao iniciar cada nó).

    Em seguida, execute: python reuse.py --start --rhost xxx.xxx.xxx.xxx --rport xxx

    • --rhost: representa o endereço do agente
    • --rport: representa a porta reutilizada; neste exemplo, deve ser 22
  • Agora o admin pode se conectar: ./stowaway_admin -c 192.168.0.105:22 -s 123