
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.

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.
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.
make, ou consulte o Makefile para compilar programas específicos.Stowaway possui dois papéis:
admin – lado de controle usado pelo testador de penetraçãoagent – lado controlado implantado pelo testador de penetraçãoOs comandos a seguir iniciam rapidamente uma instância simples do Stowaway:
./stowaway_admin -l 9999./stowaway_agent -c <IP do admin>:9999Parâ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
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
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
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
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
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
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.
./stowaway_agent -c 127.0.0.1:10000 --up wsSegundo, 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.
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.
Esses dois parâmetros são especiais e usados apenas no agente. Veja detalhes na seção de reutilização de porta abaixo.
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'.
./stowaway_agent -c 127.0.0.1:9999 -s 123 --cs gbkEsses 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:
./stowaway_admin -l 10000 --tls-enable -s 123./stowaway_agent -c localhost:10000 --tls-enable -s 123Observe 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.
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:
./stowaway_admin -l 10000 --tls-enable -s 123./stowaway_agent -c xxx.xxx.xxx.xxx:10000 --tls-enable -s 123 --domain xxx.comEste 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:
./stowaway_admin -l 8000 --tls-enable -s 123 --down ws --heartbeat./stowaway_agent -c xxx.xxx.xxx.xxx:8080 --tls-enable -s 123 --domain xxx.com --up wsAtualmente, 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.
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.
./stowaway_admin -c 192.168.0.105:80 -s 123./stowaway_agent --report 80 --rehost 192.168.0.105 -s 123Modo 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.
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.
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:
./stowaway_admin -l 9999 -s 123Agora agent-1 já está conectado ao admin.
./stowaway_agent -c 127.0.0.1:9999 -s 123Se o usuário também deseja conectar agent-2, faça:
./stowaway_agent -l 10000 -s 123Entã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:
./stowaway_agent -c 127.0.0.1:10001 -s 123Assim, 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.
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.
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.
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.
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(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(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(admin) >> topo
Node[0]'s children ->
Node[1]
Node[1]'s children ->
use: usa um agente específico(admin) >> use 0
(node 0) >>
exit: sai do Stowaway(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(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(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(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:
Normal passive: Esta opção significa que o agente escutará normalmente na porta alvo, aguardando a conexão de nós filhos.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.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(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(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(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(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(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(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ó filhoagent-1: ./stowaway_agent -l 10002
(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 SSHagent-2: ./stowaway_agent -l 10003
(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(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(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(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) >>
$ ssh 127.0.0.1 -p 9000
Password:
# ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:19:51]
$
stopforward: para o mapeamento remoto do nó atual(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(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) >>
$ ssh 127.0.0.1 -p 9001
Password:
# ph4ntom @ ph4ntoms-MBP in ~ 🌈 [17:22:14]
$
stopbackward: para o mapeamento reverso do nó atual(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(node 1) >> shutdown
(node 1) >>
[*] Nó 1 está offline!
back: retorna ao painel principal(node 1) >> back
(admin) >>
exit: sai do Stowaway(node 1) >> exit
[*] Deseja realmente sair do Stowaway? (s/n): s
[*] TCHAU!
ansicon.exe -i; caso contrário, o admin pode apresentar caracteres ilegíveis.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.
Stowaway agora faz parte do Plano 404 StarLink
Agradeço aos seguintes mestres e projetos pela ajuda durante o desenvolvimento do Stowaway:
-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 22Agora o admin pode se conectar: ./stowaway_admin -c 192.168.0.105:22 -s 123