0x00: intro Neste guia vou demonstrar como e possivel criar exploits de maneira facil,rapida e com a ajuda da Metasploit Framework 3.E verdade que uma grande quantidade de script kiddies usa o metasploit para correr payloads atras de payloads sobre servicos que encontram a correrem servidores remotos, mas a verdade e que esta e tambem uma otima framework para o desenvolvimento de exploits, seja ele para uso domestico ou mesmo profissional, pois economiza tempo, esforco e oferece-nos um fantastico leque de ferramentas que serao introduzidas ao longo do guia.0x01: software Em termos de software irei usar: Metasploit Framework (www.metasploit.com) Immunity Debbuger (http://www.immunityinc.com/products-immdbg.shtml) um interprete de Ruby (http://www.ruby-lang.org/pt/ ) uma servidor a correr Windows 2000, se bem que pode ser virtual (www.virtualbox.org)netcat (man netcat) Neste servidor estara a correr um servidor criado para este guia que poderei fornecer por mail.0x02: requerimentos Pretende-se neste guia explorar os buffer overflows remotos a uma maquina Windows utilizando o Metasploit 3 para ajudar a desenvolver o exploit. Sera facilentao para a compreensao do mesmo um conhecimento previo de:conhecimento basico de assemblyuma linguagem de programacao a escolha para a escrita do exploitconhecimento basico sobre buffer overflows (estrutura da stack, damemoria, registos, o ataque, etc..)saber usar um debugger0x03: encontrar o EIP Uma das tecnicas normais para tentar criar um exploit de buffer overflow seria encontrar qual o tamanho da string para que fosse suficiente grande de modo aescrever por cima do RET address do programa.Executamos o servidor a partir do Immunity, na maquina remota Windows, ecorremos o seguinte codigo na nossa maquina local:sploit1.rbputs "A" * 100 + "\r\n" Obtendo:#./sploit1.rb | nc 192.168.56.102 1974Welcome to SNOWUsername: O programa para aqui a execucao. Voltando ao debugger ve-se que eletrancou ao tentar executar, em EIP, o endereco 0x41414141, que sao "AAAA":E verificamos tambem no debugger que controlamos dois registos EBP e EIP.Agora poderiamos ir modificando o numero de A's introduzidos ate que o fim da nossa string coincidisse exatamente com os 4 bytes do EIP. Isso seria bastante trabalhoso, mas com a ajuda do metasploit podemos descobrir qual olocal exacto do EIP sem recorrer a tentativa e erro.Para isto usamos a ferramentapatternoffset , que se encontra na pasta /tools/ da framework metasploit:# ./tools/pattern_create.rb 100Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A Criamos assim uma string com 100 caracteres para nos ajudar a encontrar o sitio exato do EIP. Escrevemos agora o seguinte codigo para a usar:sploit2.rbstringmeta ="Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A"puts stringmeta + "\r\n" Reiniciamos o programa do servidor no debugger, corremos o nosso scriptsploit2.rb e obtemos no servidor, na janela do debugger:Podemos agora retirar do valor do EIP o endereco: 0x41336341 . Este endereco pode ser introduzido noutra ferramente disponibilizada pelo metasploit, opatternoffset. Esta ferramenta permite obter, a partir do resultado de uma string gerada pela patterncreate, o offset exato da cadeia de caracteres que procuramos, que faz parte dessa string:# ./tools/pattern_offset.rb 0x41336341 10069 Descobrimos assim que o offset de bytes e 69, ou seja, o EIP esta na posicao69 da string que usamos, que foi gerada pelo metasploit, para criar o overflow.Geramos agora um script Ruby para substituir exatamente aqueles 4 bytes na posicao 69 por um endereco que queiramos, para