Metasploit Framework (Artigo)
Metasploit Framework (Artigo)
Metasploit Framework (Artigo)
Metasploit Framework
Autor: Luiz Vieira <ala_vieira at ig.com.br> Data: 14/04/2009 Introduo A pesquisa de vulnerabilidades de software evoluiu muito nos ltimos anos. O pesquisador de vulnerabilidades o tcnico responsvel em encontrar falhas no software que podem levar a um mal funcionamento do software, ou ainda a uma possvel falha de segurana. A viso geral sobre segurana no se limita apenas a um possvel invasor ou acesso no autorizado ao sistema, segurana de software significa manter o software em seu perfeito funcionamento, ou seja, o funcionamento imaginado pelo desenvolvedor. Para ilustrar, tomemos como exemplo Defasagem no software do Cindacta 1: http://www.midiaindependente.org/pt/blue/2006/11/364354.shtml No cenrio atual da segurana da informao, infelizmente tentamos proteger a informao no pela raiz do problema, escrevendo programas com qualidade, mas criando outros softwares para proteger um software mal desenvolvido anteriormente. Por exemplo: instalamos um software que tem erros de programao que pode ser explorado por um intruso, ento instalamos um firewall que tentar bloquear o trfego de dados entre o software e o acesso no autorizado. Esse tipo de abordagem no tem se mostrado muito eficaz. E se esse programa feito para proteger o software mal desenvolvido tambm conter os mesmos erros de programao? Ferramentas como o Metasploit podem ajudar aos desenvolvedores de software produzirem software com maior qualidade, do ponto de vista da segurana, na medida que incentiva os programadores a pensarem a respeito de como algumas tcnicas de programao levam as falhas de segurana. O Metasploit framework um conjunto das melhores plataformas de aprendizagem e investigao para o profissional de segurana ou do hacker tico. Ele possui centenas de exploits, payloads e ferramentas muito avanadas que nos permite testar vulnerabilidades em muitas plataformas, sistemas operacionais, e servidores. Este framework deve ser utilizado com muita cautela e somente para fins ticos.
O que Metasploit Framework Como mencionado em seu Website, Metasploit Framework uma avanada plataforma Open Source, concebida especificamente com o objetivo de reforar e acelerar o desenvolvimento, ensaio e utilizao de exploits. O projeto relacionado a este Framework, de acordo com seus criadores, que nasceu como um jogo, tem mostrado um crescimento espetacular em especial nos ltimos tempos (na minha modesta opinio...
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823 1/17
12/03/13
especificamente a partir da verso 2.2), aspecto que lhe ajudou a conquistar um lugar privilegiado no mbito do kit de ferramentas de todo profissional relacionado de alguma forma ou de outra com as tecnologias de segurana da informao. Escrito na maioria das vezes em "Perl" (seu nico defeito, de acordo com o parecer do nmero cada vez maior de amantes de "Python"...) e com vrios componentes desenvolvidos em "C " e "Assembler", sua portabilidade est assegurada, o que contribui em larga medida para a sua aceitao macia, porque qualquer que seja a sua escolha de plataforma de uso (Like-Unix, BSD, Mac X, Windows etc), pode instal-lo e desfrutar todos os seus poderes em poucos minutos e sem grandes dificuldades. Um aspecto interessante no que se refere concesso de licenas para as novas verses do Metasploit Framework, o fato de que ela baseada tanto em GPL v2 como um "Perl Artistic License", permitindo a sua utilizao em projetos Open Source assim como em projetos comerciais. O principal objetivo do MSF criar um ambiente de pesquisa, desenvolvimento e explorao de vulnerabilidades de software, fornecendo as ferramentas necessrias para o ciclo completo da pesquisa que pode ser divido basicamente em: Descoberta da vulnerabilidade: Onde o pesquisador descobre um erro de programao que pode levar ou no a uma brecha de segurana; Anlise: Onde o pesquisador analisa a vulnerabilidade para determinar quais as maneiras pela qual a mesma pode ser explorada. Perguntas-chave so feitas nessa fase do desenvolvimento, como por exemplo: De qual maneira a vulnerabilidade pode ser explorada? Localmente ou remotamente? Entre outras dezenas mais; Desenvolvimento do exploit: Depois de respondidas as perguntas da fase de analise, comea o desenvolvimento da explorao em si, como prova da existncia real da vulnerabilidade. Tcnicas de engenharia reversa, programao, debugger etc so usadas nessa fase; Teste do exploit: Nessa fase o exploit testado em diferentes ambientes e variveis, service packs, patchs etc. O exploit em si a prova definitiva que a vulnerabilidade pode ser explorada.
12/03/13
empresas que exigem uma excelente soluo corporativa e pode arcar com o custo possui certamente o privilgio da qualidade dos produtos anteriormente mencionados.
Para comear: Instalando Metasploit Framework Bem, voc j conhece um pouco mais o Metasploit Framework , para ouvir o resto, deve instal-lo e fazer suas prprias experincias. Ento o que est esperando, mo obra! Em primeiro lugar, pois como comentado nos pargrafos anteriores, Metasploit Framework pode ser instalado tanto no Unix/Linux quanto no Windows, temos que decidir a plataforma de utilizao. Aqueles que se sentem confortveis com o Windows, tem o prazer de saber que a instalao do Metasploit no tem grandes segredos. Para esta ltima verso, os desenvolvedores do Metasploit surpreendem-nos com um simptico assistente, que ir guiar-nos atravs da implementao de um ambiente personalizado Cygwin, seguida pela instalao e configurao do prprio Framework. Assim, apenas o download e a execuo de um nico arquivo chamado "framework-3.0.exe" nos permitir, em apenas alguns momentos, o acesso ao console Metasploit e desfrutar de todos as suas ferramentas. Se, pelo contrrio, a sua deciso pelo Unix/Linux, voc pode fazer o download da verso mais recente para esta plataforma, comprimida e de denominao "framework-3.0.tar.gz". Aps ter feito isso, precisa apenas extrair o contedo do arquivo tar, alterar diretrios e executar a interface do Metasploit com a qual se sentir mais vontade. Embora seja verdade que com o que aconteceu at agora suficiente para se familiarizar com o produto, se sua inteno a de obter todo o proveito dessa ferramenta, provavelmente quer ter a certeza que tenha instalado o mdulo Perl chamado "Net:: SSLeay" e, se no for esse o caso, proceda sua instalao aproveitando que o mesmo instala-se com o Metasploit, entre os arquivos organizados no subdiretrio "extras" de seu "path" de instalao. Embora as medidas mencionadas nos pargrafos anteriores funcionem na maioria dos casos, ser bom saber que dependendo da distribuio Linux que voc est usando, provavelmente vai contar com alguma facilidade adicional ao instalar Metasploit-Framework com o seu gerenciador de pacotes preferido. Nos prximos artigos, para quem ficou com dvida na instalao do framework, vamos colocar um passo a passo usando o Ubuntu Linux como exemplo.
12/03/13
Console Interface: provvel que seja esta a interface mais comumente utilizada, devido sua utilizao intuitiva e interativa, velocidade do seu funcionamento e sua flexibilidade. Sua principal caracterstica a de proporcionar um Metasploit pronto, a partir do qual se pode interagir com cada aspecto do Framework. Se voc quiser usar essa interface, temos que executar o comando "msfconsole"; Interface web: Embora tenha muitos detratores, a interface web Metasploit pode ser extremamente til em certas circunstncias especiais, tais como apresentaes pblicas ou de trabalho em equipe. Para efeito, esta verso web do Metasploit inclui seu prprio servidor http, a fim de nos dar a capacidade de acesso via browser para praticamente as mesmas caractersticas que sua verso console.
Desenvolvimento do MSF A primeira verso estvel do MSF foi lanada em meados de 2004. Originalmente escrito em Perl, Assembler e C. Seus desenvolvedores (veja a lista no endereo) resolveram quebrar o paradigma de como os exploits eram desenvolvidos at ento. Escrever um exploit anteriormente era uma tarefa complexa, e a explorao de uma vulnerabilidade exigia conhecimentos profundos em programao especifica para cada plataforma. O MSF veio para diminuir essa complexidade e fazer intenso reuso de cdigo, assim como faz a concepo da programao orientada a objetos. Digamos que antes do MSF o desenvolvimento dos exploits era feito no melhor estilo da programao procedural tradicional, e depois do MSF a pesquisa comeou a se basear na programao orientada a objetos. A verso 2.x foi substituda pela verso 3.x, totalmente reescrita na linguagem Ruby que uma linguagem OO real, com caractersticas nicas, como: alto nvel de introspeco, recriao automatizada de classes, suporte a threading com plataforma independente e, finalmente, porque uma linguagem que os desenvolvedores realmente sentem prazer em usar. Como resultado do uso do Ruby, o cdigo original foi enxugado em quase 40, entretanto algumas partes do cdigo ainda esto em Assembler e C. Com a verso 3.x, a licena passou da GPL 2 para a Metasploit Framework License v1.2, mais parecida com a GPL 3. O Objetivo da nova licena proteger o ncleo do projeto do uso comercial, mas ao mesmo tempo, autorizar a integrao com mdulos comerciais agregados, desde que estes mdulos no modifiquem o framework. Em suma, o Metasploit continua sendo open source, e no acontecer com ele, segundo os desenvolvedores, o que aconteceu com o scanner de vulnerabilidades Nessus.
Tecnologia
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
4/17
12/03/13
O ncleo do Metasploit reside no REX (Ruby Extension Library), que uma coleo de classes e mtodos. A descrio completa das classes e mtodos pode ser acessada no endereo: http://framework.metasploit.com/documents/developers_guide.pdf E a documentao da API REX: http://framework.metasploit.com/documents/api/rex/index.html Para exemplificar algumas entre as muitas funcionalidades dessas classes do REX, durante o desenvolvimento do exploit precisamos ajustar o stack pointer, muitas vezes isso significa chamar determinado operador, que so especficos para cada plataforma, como por exemplo: jmp opcode na arquitetura x86. Ento invocamos a classe Rex::Arch:: para ajustar o stack pointer e depois especificarmos a plataforma com Rex::Arch::X86 com os mtodos jmp, mov, sub, pack, add, call, clear etc. Outro exemplo famoso e infame a classe Rex::Exploration::Seh. O Structured Exception Handling, SEH, uma proteo usada para checar o controle do fluxo cada vez que uma exceo acontece. Um estouro de buffer modifica o fluxo comum do programa e o SEH trata desses erros. A classe Rex::Exploration::Seh pode ser usada para evadir o SEH. Para maiores informaes consulte: http://www.eeye.com/html/resources/newsletters/vice/VI20060830.html Ou ainda: http://freeworld.thc.org/download.php?t=pf=Practical-SEH-exploitation.pdf Framework Core: formado de vrios sub-sistemas como gerenciamento de mdulos, sesses, despacho de eventos etc. Framework Base: Prov a interface para interagir com o Framework Core provendo configuraes, registro de logs e sesses.
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823 5/17
12/03/13
Interfaces: Prov a interface com o usurio, atualmente so: msfconsole, msfcli, msfgui, msfweb, msfd. Mdulos: So compostos pelos exploits, payloads, encoders, NOP generators e mdulos auxiliares, como por exemplo, scanners, conexo com base de dados (MS-SQL), fuzzers de protocolo etc. A lista completa pode ser acessada com o comando show all na interface msfconsole e informaes especficas do mdulo com o comando info <module_name>. Plugins: Podem ser comparados aos mdulos no sentido de trazer funes extras ao framework. Para o iniciante importante saber a diferena entre exploit e payload. Exploit a explorao da falha em si, que permite ao explorador fazer alguma coisa. O payload a coisa que ser feita. Um comando a ser executado, um shell etc. O Metasploit conta ainda com outras tecnologias, como por exemplo, a evaso de Intrusion Detection Systems (IDS) e Intrusion Prevention Systems (IPS), tornando a vida dos detectores de intruso mais difcil. Atualmente os IDSs e IPSs ainda tem muitos problemas, e certamente ainda esto longe de uma funcionalidade considerada ideal e robusta. O Metasploit pode servir para auditar essas ferramentas. Existem varias classes que podem ser usadas para evadir os detectores de intruso, TCP::max_send_size, TCP::send_delay, HTTP::chunked, HTTP::compression, SMB::pipe_evasion, DCERPC::bind_multi, DCERPC::alter_context, entre outros. Outra tecnologia que merece destaque o Metasploit anti-forensics chamada de MAFIA (Metasploit AntiForensic Investigation Arsenal). O MAFIA constitudo basicamente das ferramentas: Timestomp: Usado para modificar os arquivos do sistema de arquivo New Technology File System (NTFS). Pode-se modificar os valores de quando os arquivos foram criados, deletados etc. Slacker: Usado para esconder arquivos em parties NTFS. Sam Juicer: Um mdulo do Meterpreter usado pra extrair hashes dos arquivos SAM sem acessar o disco rgido. Transmogrify: Ferramenta usada pra passar pelo EnCases file-signaturing.
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
6/17
12/03/13
Instalando e configurando o Metasploit Framework O Metasploit Framework foi desenvolvido primeiramente para a plataforma GNU/Linux, entretanto pode ser instalado em plataformas BSD, Mac OS X, Windows e Cygwin. Porm, nestas outras plataformas, algumas funes podem estar limitadas. Existe a opo de instalar o MSF usando o subversion. A vantagem de se usar o subversion que voc sempre tem disponvel uma verso atualizada.
# apt-get install ruby libruby rdoc # apt-get install libyaml-ruby # apt-get install libzlib-ruby # apt-get install libopenssl-ruby # apt-get install libdl-ruby # apt-get install libreadline-ruby # apt-get install libiconv-ruby # apt-get install rubygems O rubygen necessrio para a interface msfweb e pode ser instalado com o comando: # gem install -v=1.2.2 rails
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
7/17
12/03/13
Caso voc queira usar a interface grfica, precisar instalar o libglade2 para o Ruby. # apt-get install libgtk2-ruby libglade2-ruby Ento faa o download do MSF no website: http://framework.metasploit.com/msf/download A verso estvel at o presente momento o Framework 3.1. Concluindo o download, vamos descompactar o arquivo com o comando: # tar -zxvf framework-3.1.tar.gz
O diretrio framework-3.1 dever ser criado, agora rode o msfconsole com o comando: # cd framework-3.1 # ./msfconsole Uma dica para aqueles que esto iniciando no GNU/Linux: no perca tempo digitando tudo, digite somente o incio, ento pressione a tecla TAB. Se voc consegue ver a tela que segue abaixo, parabns, tudo deve estar funcionando perfeitamente:
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
8/17
12/03/13
12/03/13
usar, devem comear a relacionar-se com o consola do framework e o uso avanado de seus componentes, isto incluindo o uso do famoso METERPRETER. O ltimo passo entrar no cdigo fonte, entender as entranhas que compem os exploits e os payloads e, assim, para o futuro, poderem programar e implementar novos exploits que demonstrem novas vulnerabilidades. Adicionalmente, esta a ferramenta que por excelncia serve aos profissionais do Hacking tico, devem saber como parte de suas tarefas comprovar as vulnerabilidades dos sistemas para assim poder control-las e corrig-las.
Primeiros passos na utilizao do Metasploit Abaixo vemos o console do MSF (Metasploit Framework) aberto, que tanto pode ser executado a partir da interface web no Windows, clicando em Console. Ou ento, no Linux, basta digitar "./msfconsole" no console do Linux.
Depois de alguns segundos (dependendo da velocidade de seu computador), a tela de MSFConsole aparecer conforme a imagem. Leve alguns momentos para explorar a tela de console digitando "help" no prompt msf>.
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823 10/17
12/03/13
Para ver os vrios exploits existentes e ter uma leve noo de sua aplicabilidade, digite "show exploits" no prompt msf>. Veja a figura abaixo:
Para informao sobre um comando em particular, voc pode usar o comando de info. Voc sempre poder ter certeza do comando se for til antes de voc execut-lo. Olhemos para informao disponvel para o comando lsass_ms04_011. Digite "info windows/smb/ms04_011_lsass". Veja abaixo o que aparecer na tela para voc: >> info windows/smb/ms04_011_lsass Name: Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow Version: 4511 Platform: Windows Privileged: Yes
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
11/17
12/03/13
License: Metasploit Framework License Provided by: hdm <hdm@metasploit.com> Available targets: Id Name -- ---0 Automatic Targetting 1 Windows 2000 English 2 Windows XP English Basic options: Name Current Setting Required Description -------- ------------------- ------------ --------------RHOST yes The target address RPORT 445 yes Set the SMB service port Payload information: Space: 1024 Avoid: 7 characters Description: This module exploits a stack overflow in the LSASS service, this vulnerability was originally found by eEye. When re-exploiting a Windows XP system, you will need need to run this module twice. DCERPC request fragmentation can be performed by setting 'FragSize' parameter. References: http://www.securityfocus.com/bid/10108 http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0533 http://www.osvdb.org/5248 http://www.microsoft.com/technet/security/bulletin/MS04-011.mspx http://milw0rm.com/metasploit/36
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
12/17
12/03/13
Essas informaes exibidas sobre o exploit so muito importantes para sabermos como ele funciona e qual a utilidade dele. pesquisando dessa forma que definiremos qual o melhor exploit para utilizarmos contra um determinado alvo. Para utilizar esse exploit, por exemplo, digite "use Windows/smb/ms04_011_lsass" no prompt msf>. O prompt msf> automaticamente muda para "msf exploit(ms04_011_lsass)>" mostrando que o exploit foi selecionado e est pronto para uso. Agora vamos ver que tipo de alvo pode ser afetado por esse exploit. Basta digitar "show targets" no prompt msf>. Ser exibida a seguinte tela:
Agora precisamos saber o que podemos fazer com esse exploit, j que o exploit a explorao da falha em si. Portanto, precisamos de um programa (ou mdulo) que utilize a falha da maneira que precisamos (execute
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823 13/17
12/03/13
um comando, rode um shell e etc), esse programa ou mdulo um payload. Para sabermos qual payload est disponvel para esse exploit, digite no prompt msf> o comando "show payloads", e ento a tela a seguir ser exibida com uma lista de todos os payloads compatveis com esse exploit.
Para definirmos o tipo de alvo que atacaremos explorando suas falhas, digite "set TARGET #" substituindo o # pelo nmero de identificao do tipo de alvo que atacaremos como mostrado numa tela anterior (nesse caso s temos as opes 0 = automtico, 1 = Windows 2000 e 2 = Windows XP). Para sabermos o tipo de S.O. de nosso alvo, deveremos ter pesquisado isso na fase de fingerprinting, onde colhemos informaes sobre nossos hosts alvos. Vamos, como exemplo, atacar um host que tenha como seu S.O. o Windows XP e queremos rodar um Shell a partir dele para termos acesso mquina. Vou digitar "set target 2" no prompt msf> para informar que meu alvo uma mquina rodando o Windows XP. E, logo aps isso, vou digitar "set PAYLOAD generic/shell_bind_tcp" para definir o payload que utilizarei, e me retornar um shell de comando quando rodar o exploit contra o alvo.
Nesse ponto, se digitarmos "?" no prompt msf>, alm da explicao dos comandos bsico, surgem outros comandos que precisaremos utilizar. Veja abaixo:
Como exibido com o comando "info" usado anteriormente, temos duas opes bsicas desse exploit que precisamos configurar para que ele possa ser utilizado. So elas: Name Current Setting Required Description -------- ------------------- ------------ --------------RHOST yes The target address RPORT 445 yes Set the SMB service port Vemos que o valor de RPORT est como 445, que ser a porta atravs da qual ser lanado o exploit, mas
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823 14/17
12/03/13
podemos mudar esse valor se quisermos. Digamos que atravs de um scan anterior descobri algumas vulnerabilidades na porta 150, ento essa mesma que vou utilizar, digitando o seguinte comando no prompt msf> "set RPORT 150". Vejamos na tela abaixo como ficou aps a execuo desse comando:
O valor da opo RPORT foi alterado para 150, que ser a porta utilizada para o ataque. Agora vamos outra opo. A opo RHOST definir o endereo que ser atacado via exploit, e precisamos configur-lo adequadamente, atribuindo o endereo IP do alvo. Digamos que quero atacar o IP 192.168.0.1, preciso digitar o comando "set RHOST 192.168.0.1" no prompt msf>. Vejamos abaixo como ficou a configurao de ambas opes:
Agora precisamos completar o exploit, executando-o contra o alvo. Para tanto, temos duas alternativas: 1. utilizar o comando "check" em primeiro lugar para ver se nosso alvo vulnervel a esse exploit e depois usar o comando "exploit" para execut-lo; ou 2. utilizar diretamente o comando "exploit" para executar o ataque, posto que alguns mdulos no aceitam a execuo do comando "check". No caso desse exploit, o comando "check" no suportado; ento teremos que usar o comando "exploit", sem a possibilidade de testar anteriormente se o alvo suscetvel ao ataque. Se o ataque falhar contra o alvo, um aviso como se segue ser exibido. Se no, sendo o alvo vulnervel a esse ataque, voc ser apresentado a uma interface de linha de comando interativa da mquina designada, ou seja, voc cair no prompt de comando. No desanime se no conseguir de primeira! Isto s significa que a mquina que est testando no vulnervel ao ataque!
Anlise final
Sinta-se vontade para testar com outros exploits e outros payloads, afinal esta a essncia da invaso com o Metasploit: testar at descobrir qual a vulnerabilidade certa e usar uma combinao de exploit e payload que funcione. Procure manter-se sempre atualizado com as novas verses do Metasploit, pois os pacotes de exploits, payloads e mdulos sempre so atualizados e vem com novas opes.
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
15/17
12/03/13
Referncias
1. Microsoft Security Bulletin 2. Stack, Pointers and Memory, Lally Singh 3. A Memory Allocator, Doug Lea 4. Buffer overflows likely to be around for another decade, Edward Hurley 5. Buffer Overflows Demystified, Murat 6. Badc0ded - How to exploit program vulnerabilities 7. Once upon a free(), Phrack 57 Article 9, by Anonymous 8. Presentation on Advanced Exploit Development at HITB, HD Moore (PDF) 9. Designing Shellcode Demystified, Murat 10. Crash Course User Guide for Metasploit Framework, (PDF) 11. Metasploit Framework, Part 1, by Pukhraj Singh, K.K. Mookhey 12. Metasploit Framework, Part 2, by Pukhraj Singh, K.K. Mookhey 13. Metasploit Framework, Part 3, by Pukhraj Singh, K.K. Mookhey 14. Open e-book MSF-BR
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
16/17
12/03/13
www.vivaolinux.com.br/artigos/impressora.php?codigo=9823
17/17