Use Variáveis Globais para Eficiência no Metasploit

Kali LinuxBeginner
Pratique Agora

Introdução

Ao trabalhar com o Metasploit Framework, você frequentemente precisa definir várias opções para diferentes módulos, como LHOST (o host local para escutar) e LPORT (a porta local). Definir essas opções repetidamente para cada módulo pode consumir tempo. O Metasploit oferece um recurso chamado variáveis globais para resolver isso. Ao definir uma variável globalmente, ela será automaticamente aplicada a qualquer módulo que utilize essa opção, melhorando significativamente a eficiência do seu fluxo de trabalho.

Neste laboratório, você aprenderá como definir, usar e remover variáveis globais dentro do console do Metasploit.

Use o comando setg para definir um LHOST global

Nesta etapa, você iniciará o console do Metasploit e definirá uma variável global para LHOST. O comando setg é usado para definir uma variável que persistirá entre diferentes módulos dentro da mesma sessão do msfconsole.

Primeiro, vamos encontrar o endereço IP do seu ambiente de laboratório. Este IP será usado como valor para LHOST.

hostname -I | awk '{print $1}'

Você verá uma saída semelhante a esta (seu endereço IP será diferente):

192.168.3.123

Lembre-se deste endereço IP. Agora, inicie o console do Metasploit Framework. O sinalizador -q é usado para o modo "quiet" (silencioso), que suprime o banner de inicialização.

msfconsole -q

Seu prompt mudará para msf6 >. Agora, vamos definir a variável LHOST globalmente. Use o comando setg seguido pelo nome da variável e o endereço IP que você acabou de encontrar.

Nota: Por favor, substitua YOUR_IP_ADDRESS pelo endereço IP real do comando hostname -I.

setg LHOST YOUR_IP_ADDRESS

Você deverá ver uma mensagem de confirmação:

LHOST => YOUR_IP_ADDRESS

Este comando armazenou agora seu endereço IP como um valor global de LHOST para esta sessão. Para verificar isso, você pode usar o comando show com o sinalizador -g, que exibe todas as variáveis definidas globalmente.

show -g

A saída listará todas as variáveis globais:

Global
=======

  Name   Value
  ----   -----
  LHOST  YOUR_IP_ADDRESS

Selecione um novo módulo de exploit

Nesta etapa, você selecionará um módulo de exploit para ver como a variável global é aplicada automaticamente. Usaremos o manipulador de payload genérico, exploit/multi/handler, como nosso primeiro exemplo. Este módulo é comumente usado para escutar conexões de entrada.

Dentro do prompt do msfconsole, use o comando use para selecionar o módulo:

use exploit/multi/handler

Após executar o comando, seu prompt mudará para refletir o módulo atualmente selecionado:

msf6 exploit(multi/handler) >

Isso indica que você agora está no contexto do módulo exploit/multi/handler. Quaisquer opções que você definir ou mostrar serão específicas para este módulo, mas ele também herdará quaisquer variáveis globais relevantes.

Observe que o valor de LHOST já está preenchido

Agora que você carregou um módulo, vamos verificar suas opções para ver se nossa variável global LHOST foi aplicada.

Nesta etapa, você usará o comando show options para exibir a configuração do módulo atual.

A partir do prompt msf6 exploit(multi/handler) >, execute o seguinte comando:

show options

Você verá uma tabela de opções para este módulo. Procure pela variável LHOST. Você notará que seu valor já está definido para o endereço IP que você configurou globalmente na primeira etapa.

Module options (exploit/multi/handler):

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


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  YOUR_IP_ADDRESS  yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Como você pode ver, você não precisou usar o comando set LHOST para este módulo porque o valor global foi herdado automaticamente. Este é o poder de usar variáveis globais.

Use o comando unsetg para remover uma variável global

Nesta etapa, você aprenderá como remover uma variável global. Se você não precisar mais que uma variável seja aplicada globalmente, pode usar o comando unsetg. Isso é útil quando você deseja reverter para a configuração de opções por módulo ou deseja limpar a configuração da sua sessão.

A partir do prompt do Metasploit, execute o comando unsetg seguido pelo nome da variável que você deseja remover.

unsetg LHOST

Este comando removerá a variável LHOST do escopo global. Você verá uma mensagem de confirmação:

Unsetting LHOST...

Agora, se você executar show options novamente para o mesmo módulo, verá que o valor de LHOST está vazio.

show options

A saída agora mostrará que LHOST não tem nenhum valor definido.

Module options (exploit/multi/handler):

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


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Você agora precisaria definir LHOST localmente para este módulo usando o comando set se quisesse usá-lo.

Discuta quando usar opções globais versus locais

Nesta etapa final, discutiremos as diferenças práticas entre definir variáveis locais e globais e quando usar cada uma. Compreender isso o ajudará a trabalhar de forma mais eficaz no Metasploit.

Variáveis Locais (usando set)

  • Escopo: Uma variável definida com o comando set (por exemplo, set RHOSTS 10.10.10.1) é local ao módulo atualmente carregado.
  • Comportamento: Quando você muda para um novo módulo usando o comando use, essa variável local é descartada. O novo módulo terá seu próprio valor padrão ou vazio para essa opção.
  • Quando usar: Use set para opções que são específicas para um único alvo ou módulo. O exemplo mais comum é RHOSTS (o host remoto/IP do alvo), que quase sempre muda para cada exploit que você usa. Outros exemplos incluem TARGETURI ou um USERNAME específico.

Variáveis Globais (usando setg)

  • Escopo: Uma variável definida com o comando setg (por exemplo, setg LHOST 192.168.3.123) é global para toda a sessão do msfconsole.
  • Comportamento: A variável e seu valor serão automaticamente herdados por qualquer módulo que use esse nome de opção. Ela persiste mesmo quando você muda de módulo.
  • Quando usar: Use setg para opções que provavelmente permanecerão as mesmas durante toda a sua sessão. LHOST é o exemplo perfeito, pois o endereço IP da sua máquina de ataque geralmente não muda. LPORT também pode ser um bom candidato para uma variável global se você usar consistentemente a mesma porta de escuta.

Resumo dos Comandos:

  • set <VARIÁVEL> <VALOR>: Define uma variável apenas para o módulo atual.
  • setg <VARIÁVEL> <VALOR>: Define uma variável globalmente para todos os módulos na sessão.
  • unset <VARIÁVEL>: Limpa uma variável local no módulo atual.
  • unsetg <VARIÁVEL>: Limpa uma variável global.

Ao usar estrategicamente set para opções específicas do alvo e setg para opções de toda a sessão, você pode minimizar a configuração repetitiva e se concentrar mais no processo de exploração.

Você agora pode sair do console do Metasploit.

exit

Resumo

Neste laboratório, você aprendeu a usar efetivamente variáveis globais no Metasploit Framework para otimizar seu fluxo de trabalho. Você praticou o uso do comando setg para definir um LHOST global, observou como ele foi preenchido automaticamente em diferentes módulos e usou o comando unsetg para removê-lo. Você também aprendeu as principais diferenças entre variáveis locais (set) e globais (setg), permitindo que você faça escolhas de configuração mais eficientes durante um teste de penetração. Dominar este conceito simples pode economizar uma quantidade significativa de tempo e reduzir erros em cenários complexos.