Pivoting / Tunneling
Tunelamento SSH
DICA: Os encaminhamentos de porta SSH podem ser executados com usuários sem privilégios root, desde que apenas vinculemos portas locais não privilegiadas não utilizadas (acima de 1024).
Para melhor exemplificação, todos os exemplos abaixo teremos os seguintes hosts:
192.168.15.5
Host atacante
192.168.15.10
Host alvo onde temos acesso
192.168.9.100
Segundo host alvo, onde não temos acesso direto. Somente 192.168.15.10 pode se comunicar com ele
Acessando portal local de host alvo como localhost em máquina atacante (atacante - > alvo)
Um túnel SSH serve para utilizarmos serviços que só são acessíveis na máquina remota de forma local. Por exemplo, vamos imaginar um cenário onde acessamos via SSH um determinado alvo, e esse alvo possui possui a porta 80 aberta que está acessível somente para acesso localhost. Então iremos utilizar o túnel SSH para acessarmos essa porta 80 em nossa máquina, e não na máquina alvo. Utilize o comando abaixo e depois abra o navegador acessando http://127.0.0.1, que iremos ter o conteúdo da máquina alvo disponível em nosso host.
Caso já tenha se conectado via SSH da forma tradicional (ssh <user>@<ip>
) e queira depois fazer o port fowarding, pressione ~C
, que você irá ser redirecionado para um shell ssh um pouco diferente (ssh>
), então digite nele: -L <remote-port>:127.0.0.1:<local-port>
Acessando porta de um host em uma rede interna através de host alvo (atacante -> alvo)
No exemplo abaixo considere um host que tenha um IP acessível 192.168.15.10 e possui uma outra interface de rede (não acessível a internet ou ao host atacante). Essa outra interface de rede, se comunica com um host que possui o IP 192.168.9.100. No comando abaixo estamos nos comunicando com o host 192.168.15.10 via SSH (porta 22) e toda requisição que recebermos em nosso próprio IP (máquina atacante) na porta 445, irá ser redirecionado para o IP 192.168.9.100 na porta 445 através do encapsulamento SSH.
Execute o comando no host atacante
DICA: Sempre que for fazer encaminhamento da porta 445, verifique se o alvo (no caso um Windows) aceite somente o SMBv2 habilitado. Caso positivo, adicione min protocol = SMB2
no final do arquivo /etc/samba/smb.conf
e depois reinicie o serviço SMB com sudo service smbd restart
.
Enviando porta local de host alvo para host atacante (alvo -> atacante)
Esse cenário é comum quando temos o SSH bloqueado para receber acessos no host alvo, porém a saída para acessar o SSH de outra máquina está liberada no firewall. Como exemplo, vamos imaginar um cenário onde o host alvo tem a porta 80 aberta, porém só é acessada internamente, então precisamos acessar essa porta na nossa máquina atacante como se fosse localhost.
Execute o comando no host alvo.
Encaminhando todas as portas de um host (atacante -> alvo)
Diferentemente das maneiras mostradas até então (que só encaminha um determinada porta), iremos agora acessar o host 192.168.9.100 (que até então só é acessado pelo host 192.168.15.10) através do host atacante (192.168.15.5). Para este exemplo, estamos utilizando a porta 8080.
Execute o comando no host atacante.
Ainda no host atacante, vamos editar o arquivo de configuração do Proxychains, localizado em /etc/proxychains.conf
ou /etc/proxychains4.conf
. No final do arquivo, adicione a seguinte linha (altere a porta 8080 para a mesma porta que utilizou no comando acima).
Feito isso, já podemos acessar o host 192.168.9.100 como se estivéssemos em uma mesma rede. Por exemplo, para realizar um port scan, podemos utilizar o seguinte comando:
NOTA: Por padrão, o ProxyChains irá ler seu arquivo de configuração primeiro do diretório atual, depois do diretório $(HOME)/.proxychains
do usuário e, finalmente, do /etc/proxychains.conf
ou /etc/proxychains4.conf
. Isso nos permite executar ferramentas por meio de vários túneis dinâmicos, dependendo de nossas necessidades.
Tunelamento HTTP
Em alguns casos, não podemos utilizar o SSH como um recurso par túnel (por restrições nas regras de firewall do alvo), então precisamos utilizar outro serviço, e é aí que entra o HTTP.
Primeiro vamos instalar o HTTPTunnel
(caso ainda não tenha).
Meterpreter
Maneira 1
Depois de conseguir o Meterpreter de um alvo, crie uma nova rota utilizando o post autoroute do Metasploit.
Outra maneira de fazermos isso, é executando o comando abaixo:
Maneira 2
Caso precise acessar via web, utilize o Foxy Proxy, configurando-o como SOCKS5 e IP 127.0.0.1 na porta 1080.
reGeorg
Primeiro faça o upload do arquivo tunnel.php
(utilize o arquivo com a extensão correta, de acordo com a aplicação web alvo) e verifique via browser se é possível acessar esse arquivo. Se estiver ok, irá ver a mensagem: Georg Says, 'All seems fine'
. Agora no terminal, execute:
Feito isso podemos utilizar o proxychains para realizarmos quaisquer operações utilizando o host alvo como ponte de acesso.
Vá no firefox, acesse na barra de navegação about:config
e altere network.proxy.allow_hijacking_localhost
para true
. Feito isso, configure o proxy do Firefox para a porta 127.0.0.1 na 9050, utilizando SOCKS4.
Agora podemos acessar a página web da máquina externa no nosso navegador, atravá da URL http://127.0.0.1
Socat
Agora podemos acessar o serviço SSH através do tunelamento com o seguinte comando:
Chisel
SSH - Local Port Forwarding
Podemos também acessar determinado site passando pelo SSH e acessando em outra porta, assim estamos adicionando uma criptgrafia no acesso do site
E adicionalmente podemos fazer algo inverso, fazendo com que o host alvo (192.168.15.10) acesso o host atacante (192.168.15.5) via SSH e encaminhando algumas portas para o segundo host alvo (192.168.9.100).
Dessa forma, ao acessarmos no nosso host atacante na porta local 2222, iremos ser redirecionados para a porta 22 do host 192.168.9.100 (no qual não possuíamos por padrão um acesso direto) e o mesmo vale a para a porta local 8080, quer será redirecionado para a porta 80.
Port Fowarding
SSH
Encaminhamento de portas
Meterpreter
Dentro do Meterpreter, execute os comandos
Agora na máquina local, acesse
Rinetd
Caso não tenha instalado, utilize o comando:
O arquivo de configuração está localizado em /etc/rinetd.conf
e é nele que configuramos uma fowarding, como no exemplo abaixo:
Sempre que alterar o arquivo de configuração do Rinetd, reinicie o serviço.
---
Sites
Last updated