Web Application Brute-Force Attacks.

 

O ataque de Brute-force sempre foi muito comum em serviços disponibilizados remotamente tais quais, ftp, smtp, pop entre outros. Em geral este ataque por si só não apresenta um risco muito grave, porém pode ser utilizado como vetor para ataques mais complexos que podem explorar falhas na infra-estrutura que vão desde políticas mal configuradas de permissões, política de senha ineficiente ou inexistente entre outras.

Durante este tipo de ataque, o atacante tenta transpor mecanismos de segurança como por exemplo sistemas de autenticação, proteção de diretórios por senha e etc, tendo como base um mínimo conhecimento sobre o alvo.

Existem basicamente 2 métodos que podem ser empregados neste tipo de ataque o ataque de dicionário e o de força-bruta.

Dicionário: O atacante utiliza um catalogo pré-formatado onde no caso são utilizadas strings que contém possíveis resultados e que em geral utilizam senhas padrão comumente utilizadas, nomes de pastas utilizadas e etc. Em geral este tipo de ataque tende a ser direcionado.

Força-Bruta: O atacante utiliza classes de caracteres ex: alfanumerica, especiais, case sensitive e etc. Neste caso específico este tipo de método demanda muito tempo e seu percentual de aproveitamento é muito baixo assim como gera muito alarde durante o ataque fazendo com que possíveis mecanismos de segurança como IDSs, IPSs e etc sejam acionados.

 

Em sua grande maioria ataques de brute-force são utilizados para conseguir senhas de usuários para controle de acesso de aplicações e sistemas. Entretanto existem diversas ferramentas que utiliza esta técnica para examinar web services, procurar pastas contendo arquivos que possam conter senhas de banco de dados, assim como testar como a aplicação se comporta utilizando diferentes data forms (GET/POST) assim como identificar Session-IDs de usuários. Especialmente em aplicações web o ataque de brute-force pode ser utilizado para

– Conseguir cookies de acesso a sessões de usuários;

– Usuários e senhas de diretórios protegidos;

– SessionID de aplicações;

– Arquivos de include contendo dados sensíveis como senhas de banco de dados entre outras.

Veremos abaixo alguns exemplos de ferramentas que podem ajudar durante o teste de aplicações web e descobrir se estamos vulneraveis a este tipo de ataque.

 

 

Para testes em serviços web existem 2 ferramentas  interesssantes:

-dirb (http://sourceforge.net/projects/dirb)

-webroot (http://www.cirt.dk/tools/webroot/WebRoot.txt)

 

A ferramenta dirb consiste em uma ferramenta com opções mais avançadas e pode ser utilizada para:

– setar diferentes cookies

– adicionar qualquer tipo de HTTP header desejado

– utilizar proxys para mascarar a conexão

– Utilizar catalogos ou arquivos utilizando dicionários definidos ou templates fazendo uma varredura direcionada.

Podemos fazer um teste simples utilizando-a:

[root@localhost /]$  ./dirb http://laboratorio.test/

—————–

DIRB v1.9

By The Dark Raver

—————–

START_TIME: Mon Jul  9 23:13:16 2007

URL_BASE: http://laboratorio.test/

WORDLIST_FILES: wordlists/common.txt

SERVER_BANNER: apache/3.2.2

NOT_EXISTANT_CODE: 404 [NOT FOUND]

(Location: ” – Size: 345)

 

—————–

 

Generating Wordlist…

Generated Words: 839

 

—- Scanning URL: http://laboratorio.test/ —-

FOUND: http://laboratorio.test/phpmyadmin/

(***) DIRECTORY (*)

 

 

No output da ferramenta somos informados que a pasta phpmyadmin/  foi encontrada. Um atacante poderia agora efetuar um ataque direcionado para a aplicação PHPMyAdmin, como por exemplo tentar senhas de acesso default ou utilizar exploits para a versão em uso do PHPmyAdmin.

 

 

Um dos maiores problemas com ferramentas como o dirb é reconhecer se a mensagem de retorno do servidor  é a esperada ou não. Em casos onde o servidor  tem configurações avançadas (exemplo utilizando mod_rewrite) ferramentas automaticas não conseguem distinguir uma mensagem de resposta do servidor  sobre um determinado erro ao acessar uma pasta ou arquivo.

A aplicação WebRoot.pl escrita pelo CIRT.DK, tem mecanismos embutidos para trabalhar as respostas do servidor,  e baseado na frase especificada pelo atacante, consegue identificar se a resposta do servidor  é a esperada ou não.

./WebRoot.pl -noupdate -host laboratorio.test -port 80 -verbose -match “senha” -url “/private/<BRUTE>” -incremental lowercase -minimum 1 -maximum 1

 

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

o          Webserver Bruteforcing 1.8          o

0  ************* !!! WARNING !!! ************  0

0  ******* FOR PENETRATION USE ONLY *********  0

0  ******************************************  0

o       (c)2007 by Dennis Rand – CIRT.DK       o

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

[X] Checking for updates                – NO CHECK

[X] Checking for False Positive Scan    – OK

[X] Using Incremental                   – OK

[X] Starting Scan                       – OK

GET /private/b HTTP/1.1

GET /private/z HTTP/1.1

[X] Scan complete                       – OK

[X] Total attempts                      – 26

[X] Sucessfull attempts                 – 1

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

WebRoot.pl encontrou um arquivo /private/b no laboratorio.test, que contem a frase “senha: 123mudar”

Ferramentas para Identificar e proteger contra brute-forc e em aplicações Web.

Php-Brute-Force-Attack Detector

http://yehg.net/lab/pr0js/files.php/php_brute_force_detect.zip

Esta ferramenta detecta se seu servidor esta sendo scanniado por ferramentas de brute-force como  WFuzz, Owasp DirBuster e scans e vulnerabilidades como Nessus, Nikto, Acunetix, etc. Ela pode ajudar você a rapidamente identificar possíveis hosts utilizados por atacantes que ficam efetuando testes em sua aplicações para identificar brechas e possíveis falhas de segurança

 

 

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s