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_ADDRESSpelo endereço IP real do comandohostname -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
setpara 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 incluemTARGETURIou umUSERNAMEespecí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 domsfconsole. - 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
setgpara 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.LPORTtambé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.


