Compreender e Usar Payloads Staged vs Stageless no Metasploit

Kali LinuxBeginner
Pratique Agora

Introdução

No mundo dos testes de penetração com o Metasploit Framework, um payload é o código que é executado no sistema alvo após uma vulnerabilidade ter sido explorada com sucesso. Compreender os diferentes tipos de payloads é crucial para um engajamento bem-sucedido. As duas categorias principais de payloads são "staged" (em estágios) e "stageless" (sem estágios).

Um payload staged é enviado em duas partes: um pequeno "stager" inicial e um "stage" final maior. A função do stager é estabelecer uma conexão de volta com a máquina do atacante e, em seguida, baixar o restante do payload. Um payload stageless, por outro lado, é um pacote único e autônomo que inclui todo o código necessário para ser executado no alvo.

Neste laboratório, você terá experiência prática com ambos os tipos. Você usará o console do Metasploit para selecionar cada tipo de payload, observar suas principais diferenças, particularmente em tamanho, e aprender sobre os prós e contras de usar cada um deles.

Selecione um exploit e um payload staged como windows/meterpreter/reverse_tcp

Nesta etapa, você iniciará o console do Metasploit Framework e selecionará um manipulador de exploit genérico. Em seguida, você o configurará para usar um payload staged comum. Usamos o módulo exploit/multi/handler porque ele é um listener universal, perfeito para demonstrar payloads sem a necessidade de um alvo vulnerável específico.

Primeiro, abra seu terminal e inicie o console do Metasploit. Usaremos a flag -q (quiet) para pular o banner de inicialização.

msfconsole -q

Assim que você vir o prompt do Metasploit (msf6 >), você precisará selecionar o manipulador de exploit.

use exploit/multi/handler

Em seguida, vamos definir o payload. O nome de um payload staged é tipicamente formatado como plataforma/estágio/stager. Por exemplo, windows/meterpreter/reverse_tcp significa que a plataforma é Windows, o payload final (stage) é Meterpreter, e o método de conexão inicial (stager) é um shell TCP reverso.

Defina o payload staged com o seguinte comando:

set payload windows/meterpreter/reverse_tcp

Você verá uma mensagem de confirmação payload => windows/meterpreter/reverse_tcp. Para ter certeza, você pode visualizar a configuração atual.

show options

Você verá o payload listado nas opções. Não precisamos definir LHOST ou LPORT porque não estamos realmente executando o exploit; estamos apenas examinando as propriedades do payload.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Observe o pequeno tamanho do payload staged

Nesta etapa, você usará o comando info para inspecionar os detalhes do payload staged que você selecionou. O detalhe mais importante a notar é o seu tamanho.

Ainda no console do Metasploit com o payload windows/meterpreter/reverse_tcp selecionado, digite o comando info:

info

O Metasploit exibirá informações detalhadas sobre o payload, incluindo seu nome, plataforma, arquitetura e tamanho. Percorra a saída e encontre a linha "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Stager
     Module: payload/windows/meterpreter/reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 354
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (staged).
  Listen for a connection from the stager and send the second stage.

Observe que o Total size é muito pequeno (por exemplo, 354 bytes). Esta é a característica principal de um payload staged. Este pequeno pedaço de código, o stager, é projetado apenas para se conectar de volta à sua máquina e baixar o estágio Meterpreter, muito maior. Este pequeno tamanho o torna ideal para se encaixar em restrições de memória apertadas de certos exploits.

Selecione o mesmo exploit e um payload stageless como windows/meterpreter_reverse_tcp

Agora, vamos mudar para um payload stageless para ver a diferença. O nome de um payload stageless é tipicamente formatado como plataforma/tipo_de_payload, usando um underscore _ em vez de uma segunda barra /. Esta convenção de nomenclatura ajuda você a identificá-los rapidamente.

Na mesma sessão do msfconsole, use o comando set payload novamente, mas desta vez para a versão stageless: windows/meterpreter_reverse_tcp.

set payload windows/meterpreter_reverse_tcp

Você verá a confirmação payload => windows/meterpreter_reverse_tcp. Note o underscore no nome. Este único payload contém o servidor Meterpreter completo e a lógica de conexão, tudo em um único pacote.

Vamos verificar as opções novamente para confirmar a mudança.

show options

A saída agora refletirá o payload stageless recém-selecionado.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter_reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port

...

Você agora mudou com sucesso de um payload staged para um stageless.

Observe o tamanho maior do payload stageless

Nesta etapa, você inspecionará o payload stageless que acabou de selecionar e comparará seu tamanho com o payload staged da Etapa 2.

Assim como antes, use o comando info para obter detalhes sobre o payload atual.

info

Examine a saída e localize a linha "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Inline
     Module: payload/windows/meterpreter_reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 999335
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (inline).
  This payload is a single executable and does not need to download a
  second stage.

Como você pode ver, o Total size é dramaticamente maior (por exemplo, 999335 bytes ou quase 1 MB) em comparação com o tamanho de algumas centenas de bytes do payload staged. Isso ocorre porque o payload stageless contém toda a funcionalidade do Meterpreter. Ele não precisa baixar mais nada após a execução.

Agora que você viu a principal diferença, pode sair do console do Metasploit.

exit

Discuta os prós e contras de cada tipo de payload

Nesta etapa final, resumiremos as vantagens e desvantagens dos payloads staged e stageless. Compreender esses trade-offs é fundamental para escolher a ferramenta certa para um cenário específico. Não há comandos para executar nesta etapa; é para compreensão conceitual.

Payloads Staged (por exemplo, windows/meterpreter/reverse_tcp)

Prós:

  • Tamanho Pequeno: O stager inicial é muito pequeno. Esta é uma vantagem significativa quando o exploit tem um buffer size ou espaço de memória muito limitado para o payload.
  • Discrição (Estágio Inicial): O stager pequeno pode ter menos probabilidade de ser detectado por soluções antivírus simples baseadas em assinatura em comparação com um payload grande e rico em recursos.

Contras:

  • Múltiplas Conexões: Eles exigem uma segunda conexão para baixar o estágio principal. Isso gera mais tráfego de rede e oferece outra oportunidade para firewalls, Sistemas de Detecção de Intrusão (IDS) ou administradores de rede detectarem e bloquearem o ataque.
  • Menos Estável: A conexão pode ser frágil. Se a conexão cair enquanto o segundo estágio está sendo baixado, o exploit falhará.
  • Problemas de Callback: A máquina alvo deve ser capaz de alcançar a máquina do atacante pela rede para baixar o estágio, o que pode ser um problema em redes altamente restritas.

Payloads Stageless (por exemplo, windows/meterpreter_reverse_tcp)

Prós:

  • Confiabilidade e Estabilidade: Como tudo está em um único pacote, o payload é mais autônomo e estável. Ele só precisa estabelecer uma conexão, e uma vez que está em execução, não depende de baixar mais componentes.
  • Funciona em Ambientes Restritos: Uma vez que o payload é entregue ao alvo, ele pode ser executado sem precisar baixar mais nada, o que é útil se o alvo tiver acesso limitado ou nenhum acesso à internet de saída.

Contras:

  • Tamanho Grande: Seu tamanho grande é sua maior desvantagem. Eles podem não caber no espaço de memória permitido por muitos exploits, tornando-os inutilizáveis nesses casos.
  • Mais Fácil de Detectar: Um executável grande e único é frequentemente mais fácil para soluções antivírus e de segurança analisarem e sinalizarem como malicioso com base em seu tamanho e assinaturas.

Em resumo, você deve escolher um payload staged ao lidar com exploits que têm restrições de tamanho. Escolha um payload stageless quando a confiabilidade for primordial e o método de exploit puder lidar com um tamanho de payload maior.

Resumo

Neste laboratório, você explorou a diferença fundamental entre payloads staged e stageless dentro do Metasploit Framework.

Você começou iniciando o msfconsole e selecionando um payload staged, windows/meterpreter/reverse_tcp. Você observou seu tamanho muito pequeno, que é projetado para ser um stager leve. Em seguida, você mudou para seu correspondente stageless, windows/meterpreter_reverse_tcp, e notou seu tamanho significativamente maior, pois ele contém todo o payload em um único pacote.

Finalmente, você revisou os prós e contras de cada tipo, aprendendo que a escolha entre eles envolve um trade-off entre tamanho, discrição e confiabilidade. Payloads staged são pequenos, mas requerem uma segunda conexão, enquanto payloads stageless são grandes, mas mais estáveis e autônomos. Esse conhecimento é essencial para tomar decisões eficazes durante os engajamentos de testes de penetração.