DIA#16-Ethical Hacking Tools (Metasploit- Meterpreter part1)

    Continuo hoje com o tutorial da Offensive Security, desta vez abordando o Meterpreter.

    O Meterpreter é um payload avançado e dinamicamente extensível que usa injecções de stagers  DLL (Dynamic Link Library) que são extendidos pela network em runtime, realizando a sua comunicação através da socket stager. Com o Meterpreter tem-se acesso a um client-side ruby API (Application Programming Interface) compreensivo. A sua porção de server é implementada com o uso de C, sendo compilado com MSVC (Microsoft Visual C++) e a porção do client pode ser programado em qualquer linguagem, mas com Metasploit tem-se acesso a um API full-featured de Ruby.

Como funciona o Meterpreter

  • O target executa o stager inicial, normalmente um bind, reverse, findtag, passivex, etc;
  • O stager carrega o DLL com o prefixo Reflective. A Rflective stub toma conta do carregamento/injeção de DLL;
  • A core do Meterpreter inicializa e estabelece um link TLS(Transport Layer Security)/1.0 link através da socket e manda um GET. O Metasploit recebe o GET e configura o client;
  • Finalmente, o Meterpreter carrega as extensões através de TLS/1.0 com o uso do protocolo TLV(type-length-value/tag-length-value é um esquema de encoding usado para enviar/receber data). Carrega sempre stdapi e carrega priv se o modulo der permissões administrativas.

Características do Meterpreter

    O Meterpreter foi concebido para ter algumas características, entre as quais:
  • Ser furtivo
    • O Meterpreter reside completamente na memoria, não escrevendo nada no disco;
    • Não são criados processos novos, o Meterpreter injecta-se num processo comprometido, podendo migrar para outros processos a correr;
    • Usa comunicações encriptadas em modo default.  
  • Ser poderoso
    • O protocolo TLV tem poucas limitações;
    • O Meterpreter usa um sistema de comunicações com channel
  • Ser extensível
    • É possível aumentar features durante o runtime, sendo carregadas através da network;
    • É possível colocar novas features ao Meterpreter se ter que o reconstruir.
    Para adicionar novas features ao Meterpreter carregam-se extenções, isso funciona do seguinte modo:
  • O client faz upload do DLL  através da socket;
  • O servidor a correr na vitima carrega o DLL na memoria e inicializa-o;
  • A nova extensão regista-se no servidor;
  • O client na máquina do attacker carrega a extensão API local, podendo chamar as funções das extensões.
      
PS. Para ver comando incluídos com a extenção stdapi recomendo ir a "http://pwnwiki.io/#!msf/meterpreter_files/windows_meterpreter.md"
 
 

Comentários

Mensagens populares deste blogue

DIA#36-OverTheWire-Bandit (LVL 2)

DIA#45-OverTheWire-Bandit (LVL 11)

DIA#52-OverTheWire-Bandit (LVL 18)