SÉRIE SHELL REVERSA - O Básico (Parte 1)
Saudações a todos os membros do HF,
estou apresentando a série reverse shell para todos que desejam aprender sobre o reverse shell em profundidade. Como eu e meu parceiro α¢ já escrevemos um livro - Hands On - Red Team Tactics que tem este capítulo, gostaríamos de expandir o horizonte para que todos possam aprender mais sobre reverse shells com diferentes cenários de casos.
Todas as sugestões são bem vindas. Aproveite o tutorial!
Neste tutorial, você aprenderá sobre:
[+] Noções básicas
[+] Shell Shoveling
[+] Introdução aos Reverse Shells
Compreendendo o básico
Uma conexão reversa (também conhecida como conexão de saída, também conhecida como conexão reversa) se origina do servidor colocado dentro de uma rede (principalmente rede interna) e segue pelos roteadores e switches (dispositivos de rede) para um destino fora da rede. Quando o tráfego de entrada, ou seja, o tráfego de rede que flui para o servidor (origem -> destino) é filtrado e bloqueado pelos firewalls existentes, uma conexão reversa pode ajudar a contornar as restrições do firewall para que o servidor inicie uma conexão com o cliente (destino -> fonte), ou seja, gerando tráfego de saída. Um firewall geralmente bloqueia as conexões de entrada em portas abertas, mas não bloqueia o tráfego de saída (é claro que há situações em que o firewall também filtra o tráfego de saída. Nesse caso, é necessária uma abordagem diferente que abordarei posteriormente nesta série).
Uma conexão de ligação (também conhecida como conexão de entrada, também conhecida como conexão de encaminhamento) se origina do cliente para o servidor, uma conexão normal quando feita para se conectar a um IP de destino. Geralmente, a maioria dos servidores possui firewalls (firewalls de hardware e firewalls de software) para restringir a conexão no servidor. Por exemplo, um servidor web rodando na porta 80/tcp provavelmente terá um firewall instalado para restringir o acesso a outras portas abertas no mesmo servidor.
Em um cenário típico de hacking, uma conexão vinculada ocorre quando a máquina do invasor se conecta ao servidor de destino, conforme mostrado na captura de tela a seguir: Uma conexão
reversa é quando o servidor de destino inicia uma conexão com a máquina do invasor, conforme mostrado na captura de tela a seguir:
escavação com pá
É um processo em que um invasor obtém acesso de shell interativo a um alvo. Geralmente, o shell interativo só funciona quando o shell é aberto localmente no sistema, mas caso um invasor tenha vulnerabilidade de Execução Remota de Código (RCE) no servidor de destino, ele/ela pode obter um shell interativo do servidor de destino usando Shell Shoveling. Isso permite que um invasor ignore as regras de firewall em um alvo, pois o alvo envia uma solicitação para a máquina do invasor e apresenta o shell lá.
Resumindo, um shell shovel é um ato de redirecionar a E/S do shell (por exemplo, cmd.exe ou sh shell) para uma máquina remota (neste caso, um invasor).
Introdução aos shells reversos
Um shell reverso é um tipo de shell no qual o servidor de destino se conecta de volta à máquina do invasor. Por exemplo, um invasor encontra um servidor de destino com a porta 21/tcp, 80/tcp e 443/tcp no estado ABERTO e o serviço FTP em execução na porta 21/tcp está vulnerável. Digamos que um invasor explore esta porta para abrir outra porta 1337/tcp no servidor de destino para conexão shell, conforme mostrado no diagrama a seguir:
O problema surge quando o invasor tenta se conectar ao servidor de destino na porta 1337/tcp. O invasor não consegue se conectar à porta 1337/tcp. Por que? Porque a porta 1337/tcp não é permitida nas restrições do firewall. O firewall pode permitir apenas as portas 21/tcp, 80/tcp e 443/tcp para conexões de entrada e bloqueará todas as outras portas, conforme mostrado no diagrama a seguir:
Nesse cenário, o que você acha que um invasor pode fazer? Em vez de abrir a porta 1337/tcp no servidor de destino, o invasor abrirá uma porta (digamos 1337/tcp) localmente e executará um comando no servidor de destino que se conectará de volta à máquina do invasor. Portanto, dando acesso de shell interativo ao invasor.
Espero que todos gostem.
Confira a segunda parte aqui: REVERSE SHELL SERIES - The Basics (Parte 2)
Fique conectado e fique seguro! Felicidades ✌
Referências
https://en.wikipedia.org/wiki/Reverse_connection
https://subscription.packtpub.com/book/n...onnections
http://www.madirish.net/207