Thursday, March 11, 2010

BeEF: O que é e Como programar Módulos (pt 1)

Tagged with: ,
Friday, October 16, 2009, 4:19
This news item was posted in Desenvolvimento, Frameworks, etc, Segurança em Aplicações Web category and has 1 Comment so far.

beef 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.)
screenbeef2

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:

1# Os bastidores do 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.

2# As Categorias dos Módulos

Os módulos são organizados por categorias, são elas:

  • Standart Modules: Módulos de detecção de plugins e configurações de browser, além de comandos de javascript básicos como alerta, “deface” (reescrever o conteúdo da página), etc.
  • Browser Modules: Módulos que exploram vulnerabilidades, como buffer overflow, em navegadores.
  • Network Modules: Módulos de detecção, exploração de falhas ou interação com serviços na rede.

3# Os arquivos e a organização de um Módulo

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:

  • index.php: A página que será exibida dentro do BeEF para controle das ações do módulo.
  • name.txt: Um simples arquivo de texto contendo o nome do módulo que será exibido no menu.
  • template.js: O código JavaScript que será enviado ao Zumbie.

4# Mão na massa: Construindo nosso módulo.

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.

4.1# Criando a Pasta

O classifiquei como “Standart”. Vamos, por tanto, criar a pasta /modules/standart/url_crawler/

4.2# Definindo o Nome

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

4.2# Criando o Código JavaScript

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!");

4.3# Criando o formulário de ativação

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:






URL Crawler
Este modulo ira listar todas as URLs de links na pagina.

4.4# Ação!

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

You can leave a response, or trackback from your own site.

One Response to “BeEF: O que é e Como programar Módulos (pt 1)”

  1. Falando de Segurança » BeEF: Como programar Módulos (pt 2) – Módulo “Iframe Tools” said on Friday, October 23, 2009, 2:25

    [...] 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 [...]

Leave a Reply

Powered by WP Hashcash