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 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:
| Tipo | Descrição | Prefixo | Exemplo |
|---|---|---|---|
| exploit | Código que tira partido de uma vulnerabilidade | exploit/ | exploit/multi/handler |
| payload | Código que corre após o exploit (reverse shell, bind, etc) | payload/ | payload/osx/x64/meterpreter/reverse_tcp |
| auxiliary | Módulos auxiliares: scanners, fuzzers, sniffers, DoS | auxiliary/ | auxiliary/scanner/portscan/tcp |
| post | Módulos de pós-exploração (privilege escalation, hashdump) | post/ | post/osx/gather/hashdump |
| encoder | Ofusca o payload para evitar deteção | encoder/ | encoder/x64/xor |
| nop | Geradores de NOP sleds | nop/ | 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).
⬆ 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
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:
Depois de instalado, inicia o serviço e configura o Metasploit para usar a base de dados:
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
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:
Vais ver o banner do Metasploit (personalizável com msfconsole --banner-file) e a prompt msf6 > à tua espera.
Comandos base para sobreviver no msfconsole:
| Comando | Descrição |
|---|---|
| help | Lista todos os comandos disponíveis (uso: help search para ajuda específica) |
| search | Pesquisa módulos por nome, CVE, plataforma, etc. Ex: search apache |
| use [módulo] | Carrega um módulo. Ex: use exploit/multi/handler |
| show options | Mostra 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 exploit | Executa o módulo ativo com as opções configuradas |
| back | Sai do módulo atual e volta à prompt principal |
| info | Mostra informação detalhada sobre o módulo carregado |
| check | Verifica se um alvo é vulnerável (sem executar o exploit) |
| sessions | Lista e interage com sessões ativas. sessions -i 1 para interagir |
| jobs | Lista e gere handlers em background. jobs -k para matar todos |
| exit | Sai do msfconsole |
Exemplo prático de navegação:
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:
| Tipo | Descrição | Prefixo |
|---|---|---|
| exploit | Código que tira partido de uma vulnerabilidade | exploit/ |
| payload | Código que corre após o exploit (reverse shell, bind, etc) | payload/ |
| auxiliary | Módulos auxiliares: scanners, fuzzers, sniffers | auxiliary/ |
| post | Módulos de pós-exploração (privilege escalation, hashdump) | post/ |
| encoder | Ofusca o payload para evitar deteção | encoder/ |
| nop | Geradores de NOP sleds | nop/ |
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:
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:
| Payload | Tipo | Descrição | Staged |
|---|---|---|---|
| meterpreter/reverse_tcp | staged | Reverse TCP com Meterpreter (small stager + payload completo) | Sim |
| meterpreter_reverse_https | stageless | Meterpreter via HTTPS (evasivo, encapsulado em SSL) | Não |
| shell/reverse_tcp | staged | Reverse shell clássico: uma shell pura no alvo | Sim |
| windows/x64/meterpreter/reverse_tcp | staged | Meterpreter x64 para Windows | Sim |
| osx/x64/meterpreter/reverse_tcp | staged | Meterpreter 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.
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):
Nota a diferença no nome do payload: meterpreter/reverse_tcp (staged, com slash) vs meterpreter_reverse_tcp (stageless, sem slash).
⬆ 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.
Dentro do msfconsole:
O handler fica à escuta. Quando o payload payload.macho for executado no Mac alvo, recebes uma sessão Meterpreter:
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:
Para verificar que o msfconsole está conectado à BD, dentro da shell:
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.
Comandos de base de dados
Com a BD ativa, ganhas acesso a comandos extra que tornam o teu trabalho muito mais organizado:
| Comando | Descrição |
|---|---|
| hosts | Lista todos os hosts descobertos com IP, OS, hostname |
| services | Lista serviços (portas, protocolos, estado) nos hosts |
| vulns | Mostra vulnerabilidades identificadas por host |
| loot | Lista ficheiros extraídos (hashes, screenshots, configs) |
| notes | Notas adicionadas manualmente sobre hosts, sessões, observações |
| creds | Base de dados de credenciais encontradas |
| db_export | Exporta toda a base de dados para XML |
| db_import | Importa resultados de scanners (Nmap, Nessus, etc) |
Exemplo prático: Importar um scan do Nmap e ver os resultados:
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:
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:
Ou diretamente ao iniciar o msfconsole:
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:
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:
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:
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:
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.
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário