• Nenhum resultado encontrado

Varredores de vulnerabilidades

No documento Teste de Invasão de Aplicações Web (páginas 70-72)

q

Estas ferramentas têm por objetivo encontrar, de maneira automatizada, o maior número possível de vulnerabilidades em um ativo. O mecanismo básico de funciona- mento consiste no envio de requisições e análise das respostas obtidas, em busca de evidências de que uma dada vulnerabilidade está presente.

Por exemplo, o varredor pode tentar acessar arquivos de exemplo instalados por padrão em uma dada plataforma e, se a solicitação for bem-sucedida, é possível concluir que há um problema a ser resolvido. Essa estratégia é ótima para verificar fraquezas em softwares de prateleira e os embutidos em hardware, uma vez que as instalações não variam muito de uma máquina para outra e, assim, é possível construir uma base de dados de vulnera- bilidades que podem afetá-los. Aplicações web, por outro lado, tendem a ser únicas, já que normalmente são construídas para propósitos específicos e, logo, devem ser tratadas como tais, inviabilizando a criação de um dicionário específico de fraquezas.

q

As dificuldades encontradas em web spiders, que foram discutidas anteriormente, também afetam os varredores de vulnerabilidades, mas em um grau maior, pois a tarefa a ser executada depende da qualidade do mapeamento. Em decorrência deste fato e do estado-da-arte desse tipo de tecnologia, apenas algumas classes de vulnerabilidades de aplicações web podem ser detectadas de maneira confiável e, para qualquer classe, não se deve esperar que todas as ocorrências, em uma dada aplicação, sejam descobertas. Sempre existirão casos mais sutis que dependerão do conhecimento do analista de segurança para serem identificados. Logo, é importante ter em mente que as ferramentas ainda não são capazes de substituir os seres humanos, mas sim de auxiliá-los em termos de produtividade.

q

De acordo com Stuttard e Pinto (2007), as vulnerabilidades que podem ser encontradas automaticamente são aquelas para as quais é possível descrever claramente a assina- tura de ataque e o resultado que deve ser verificado para inferir a presença da fraqueza, como por exemplo:

1Cross-site scripting refletido.

1Alguns tipos de injeção de SQL.

1Alguns tipos de injeção de comando.

Ca pí tu lo 2 - R ec on he ci m en to e m ap ea m en to

q

É importante conhecer também os tipos de vulnerabilidades que normalmente não são detec- tados corretamente. A lista abaixo, adaptada de Stuttard e Pinto (2007), não visa ser exaustiva:

1Falhas no controle de acesso.

1Problemas que, para serem explorados, precisam que parâmetros sejam alterados considerando a semântica associada.

1Uso inadequado de criptografia.

1Falhas de lógica decorrentes de situações não previstas, como a remoção de um parâmetro obrigatório.

Um estudo realizado por Doupé, Cova e Vigna (2010) avaliou onze varredores de vulnerabili- dades, livres e pagos, contra a aplicação WackoPicko, que desenvolveram especificamente para os testes, contendo dezesseis vulnerabilidades de diversas classes. O trabalho analisou, para cada ferramenta, capacidade de detecção, quantidade de falsos positivos reportados, qualidade do mapeamento, tempo de execução, número de acessos realizados, interpretação de Javascript e criação automática de contas de usuário. Alguns dos resul- tados podem ser observados na Figura 2.5, que aproveita para dar exemplos dos principais varredores existentes atualmente.

Ferramenta Licença Escore Falsos positivos Tempo de execução (s) Acunetix Comercial 14 1 < 1000 AppScan Comercial 10 11 < 2000 Burp Comercial 13 1 < 1000 Grendel-Scan GPLv3 3 15 < 1000 Hailstorm Comercial 6 3 < 1000 Milescan Comercial 4 0 < 1000 N-Stalker Comercial 13 5 > 25000 NTOSpider Comercial 4 3 < 2000 Paros CAL 6 1 < 2000 w3af GPLv2 9 1 < 2000 Webinspect Comercial 13 215 < 2000

Outras ferramentas

q

Outras ferramentas podem ser úteis em situações específicas:

1Netcat

1OpenSSL

1Nikto

1Metasploit Framework

Há inúmeras outras ferramentas disponíveis, além das apresentadas até aqui, que podem ser úteis em situações específicas e que devem ser consideradas como parte de um “cinto de utilidades” de uma pessoa que realiza testes de invasão em aplicações web. Adicionalmente,

Figura 2.5

Alguns resultados do estudo de Doupé, Cova e Vigna (2010).

Te st e d e I nv as ão d e A pl ic aç õe s W eb

em alguns casos, pode ser necessário personalizar uma ferramenta já existente ou criar uma própria e, assim, é interessante dominar uma ou mais linguagens de programação.

Netcat

Utilitário de rede distribuído sob licença GPL e considerado por muitos como o canivete suíço de redes TCP/IP, devido a sua grande versatilidade. Permite enviar e receber dados, utilizando os protocolos TCP e UDP, em qualquer porta e com os parâmetros que se queira. Além disso, pode ser usado independentemente ou em conjunto com outras ferramentas ou scripts e é facilmente compilável, sem alterações, para diversos sistemas operacionais, como Linux, BSD, Unix e Mac OS X. Um ponto negativo, entretanto, é a falta de suporte aos protocolos SSL e TLS, mas que pode ser resolvido por meio da associação com outras ferramentas.

Como exemplo, considere-se o exercício sobre métodos HTTP do Capítulo 1. Ele pode ser executado com o Netcat da seguinte maneira:

nc exemplo.esr.rnp.br 80 OPTIONS / HTTP/1.0 Host: exemplo.esr.rnp.br

OpenSSL

Utilitário livre que permite trabalhar com diversos algoritmos criptográficos e com os protocolos SSL e TLS, suprindo assim a deficiência apresentada pelo Netcat. Está disponível para inúmeras plataformas, como Linux, BSD, Mac OS X e Windows, e é empregado por diversos softwares, como o Apache mod_ssl, Sendmail e OpenCA. Pode ser usado via linha de comando ou programaticamente, por meio de códigos escritos em linguagens C e C++. Em testes de invasão de aplicações web, é empregado para verificar a configuração de SSL/TLS de servidores web e dos demais elementos do ambiente.

Nikto

Aplicativo livre, fornecido sob licença GPL, que serve para varrer servidores web em busca de arquivos e diretórios instalados por padrão, problemas específicos de versão e configura- ções vigentes. A base de dados inclui milhares de itens para inúmeras plataformas e é atua- lizada constantemente com novas informações. Uma informação importante é que Nikto é uma ferramenta ruidosa, isto é, procura executar a tarefa no menor tempo possível, sem se preocupar em ser detectada por sistemas de detecção de intrusão.

No documento Teste de Invasão de Aplicações Web (páginas 70-72)