Você está na página 1de 4

O Ratproxy procura vulnerabilidades em aplicaes web

SEGURANA

Tem rato na rede


O Ratproxy do Google uma ferramenta gratuita que busca problemas de segurana em aplicaes web. por Tim Schrmann
Kri ss u Szk r l at ow ski w w x w.s c.h u

rias ferramentas de teste ajudam a procurar vulnerabilidades em aplicaes baseadas na web [1][2], mas muitas dessas aplicaes so caras ou difceis de usar. No seria timo apertar um boto e descobrir as vulnerabilidades do seu prprio software junto com uma referncia de linhas para ajudar a encontrar os problemas no cdigo-fonte? O Ratproxy [1] uma ferramenta pequena, mas poderosa, com uma tcnica simples para buscar problemas em aplicaes web. Ele se originou nos laboratrios de desenvolvimento do Google, onde foi criado para testar as prprias aplicaes web do gigante das buscas. Em julho de 2008, a empresa decidiu lanar a verso atual para o pblico geral sob a licena Apache 2.0. O Google descreve o Ratproxy como uma ferramenta majoritariamente passiva para auditoria de segurana em aplicaes web. Escondida sob essa descrio crtica existe uma ferramenta com um propsito simples: capturar as comunicaes entre o navegador e a aplicao, registrar os dados enviados e verificar os registros atrs de problemas, riscos e vulnerabilidades conhecidos. Os desenvolvedores podem simples74

mente iniciar o Ratproxy e observar a sada. O Ratproxy alcana lugares que produtos concorrentes tm dificuldade em acessar. Por exemplo, outras ferramentas podem achar difcil chegar a reas protegidas por senha, ou podem esbarrar em cenrios de encaminhamento. Da mesma forma, o Ratproxy inteligentemente transpe problemas de JavaScript. As ferramentas de teste legadas empregam chutes para descobrir qual funo ser usada em seguida. Esse problema ocorre particularmente em testes de interface grfica, nos quais os usurios geralmente possuem uma escolha de vrios botes e menus. O Ratproxy, por outro lado, simplesmente espera para conferir o que o usurio faz em seguida no navegador. Como o Ratproxy no causa um aumento perceptvel no trfego de rede, ele permite at que se verifique as aplicaes em uso em ambientes de produo (outros buscadores iniciam ataques de negao de servio ou XSS que podem derrubar sistemas de produo).

compilar os poucos arquivos com cdigo-fonte. A ferramenta no requer um script configure nem tem dependncias importantes. Ela precisa apenas das bibliotecas Libcrypto e Libssl (normalmente fornecida como parte da distribuio OpenSSL) e seus cabealhos correspondentes. Executar a ferramenta de teste um pouco mais complicado: nada menos que 22 parmetros (tabela 1) regulam a natureza e o escopo dos testes feitos pelo Ratproxy. Os parmetros tambm so responsveis por definir o nvel de detalhamento a ser exibido. Para evitar o soterramento sob uma avalanche de mensagens ao se executar o programa, inicie com as configuraes padro:
$ ./ratproxy -v /tmp -w ratproxy. log -d dominio.com -lfscm

Ratoeira

Instalar o Ratproxy simples: basta baixar o cdigo-fonte da pgina do programa e executar make para

Esse comando aponta o Ratproxy para a aplicao web no domnio dominio.com. O Ratproxy ignora qualquer URL que no esteja nesse servidor (essa tcnica uma forma de garantir que o Ratproxy no teste acidentalmente sites de anncios externos). O trfego HTTP capturado pelo Ratproxy despejado num grande nmero de pequenos arquivos

http://www.linuxmagazine.com.br

Ratproxy | SEGURANA

Tabela 1: Parmetros do Ratproxy


-l -f -s -c -m Por padro, o Ratproxy usa checksums para comparar sites. O parmetro -l ativa um mtodo menos estrito. O Ratproxy tambm inspeciona aplicaes Flash; com o parmetro -v, ele as descompila para uma anlise mais detalhada. Todas as requisies POST so armazenadas no arquivo de log. Relembra pginas que denem cookies, independentemente de representarem ou no riscos segurana. O Ratproxy guarda todo o contedo fora do domnio de teste. Sem esse parmetro, somente folhas de estilo e scripts vinculados remotamente so registrados. Isto supe que o parmetro -d esteja sendo usado. Inspeciona o cache em mais detalhes. Registra todas as URLs que podem ser teis para futuros testes manuais de XSS. Por padro, o Ratproxy registra todas as vulnerabilidades do tipo directory traversal. Esse parmetro permite candidatos menos provveis, que ento podem ser usados para anlises manuais. Registra todos os arquivos PNG retornados; esses arquivos j foram usados no passado para ataques XSS (verses antigas do Internet Explorer esto particularmente sujeitas a isso). Estende os testes XSRF para incluir requisies GET. Ativa a deteco de construes arriscadas em JavaScript, como chamadas a eval(). O Ratproxy alterna para o modo ativo e testa aplicaes web em busca de vulnerabilidades a ataques XSS e XSRF. O Ratproxy repete algumas requisies com parmetros modicados.

-e -x -t -i -g -j -X -C

H uma lista completa e abrangente de parmetros na documentao [1].

no diretrio temporrio (-v /tmp), enquanto a anlise dos resultados isto , as informaes que nos interessam so armazenadas em ratproxy.log. O quadro 1 explica a caixa de Pandora de opes de linha de comando. Se for prefervel um passeio completo, pode-se alterar os parmetros da seguinte forma:
$ ./ratproxy -v /tmp -w ratproxy. log -d dominio.com -lextifscgjm

O dueto opcional -XC libera o Ratproxy de seu modo passivo. Uma vez livre, o Ratproxy verifica quanto sua aplicao web resiste a ataques XSS e XSRF (-X), e repete requisies com diferentes parmetros (-C). Se a aplicao web retornar objetos Flash, o Ratproxy pode decomp-los e analis-los. Para isso, ele se utiliza do descompilador ActionScript Flare; infelizmente, o Flare s est disponvel como aplicativo de cdigo fechado pr-compilado. Por padro,

Figura 1  Para apontar o Firefox para o Ratproxy, preciso deni-lo como


proxy para todos os acessos do navegador e limpar seu cache.

Linux Magazine #53 | Abril de 2009

75

SEGURANA | Ratproxy

Quadro 1: Revelaes
O Ratproxy verica o dilogo em busca dos seguintes dados:  JavaScript arriscado, OGNL e construes Java;  Obedincia aos padres, como o uso correto de MIME types; R  espostas inseguras, particularmente com JSON e formatos de dado semelhantes;  Vetores de ataques do tipo cross-site scripting;  Vetores de ataques do tipo cross-site forgery; o Ratproxy se concentra particularmente em elementos de segurana embarcados e URLs previsveis;  Vetores de injeo de dados, como injeo SQL;  Uso incorreto de cookies;  Objetos Flash suspeitos;  Vetores de directory traversal;  uso incorreto de cache;  Redirecionamentos suspeitos. O arquivo messages.list fornecido com o cdigo-fonte fornece detalhes dos problemas registrados pelo Ratproxy.

ele suporta apenas processadores x86. Uma verso para Linux em 64 bits est disponvel na pgina do Flare [4]. Primeiro, preciso baixar o arquivo, descompact-lo e armazenar os resultados em flare-dist.

Conectado

Aps ver a mensagem Accepting connections on port 8080/tcp (local only), voc j saber que a ferramenta de

teste est escutando na porta 8080 espera de requisies vindas do navegador. A prxima etapa configurar o navegador para direcionar todas as comunicaes pelo Ratproxy. A forma mais fcil de fazer isso fornecer essa porta como um proxy na sua prpria mquina (127.0.0.1 ou localhost, figura 1). Isso faz o navegador encaminhar todas as requisies para localhost:8080,

Figura 2  O Ratproxy capturando o trfego.

onde o Ratproxy as analisar antes de repass-las para a aplicao web (figura 2). Como a ferramenta de teste captura o trfego passivamente, tudo isso ocorre de forma absolutamente transparente e causa um efeito mnimo na velocidade. Os parmetros -X e -C, no entanto, so excees a essa regra. Eles fazem o Ratproxy alternar para o modo disruptivo e interferir ativamente sobre as comunicaes (os efeitos desses parmetros variam). Se for usado um proxy verdadeiro para acessar a web, como o caso em vrios ambientes corporativos, ser necessrio fornecer o parmetro -P mquina:porta para o Ratproxy, em que mquina e porta representam os valores do proxy verdadeiro. Esse recurso significa que possvel implantar o Ratproxy como parte de uma corrente de ferramentas de teste.

Processamento

Figura 3  O arquivo de log do Ratproxy no exatamente intuitivo.

A prxima etapa acessar a aplicao web no navegador e us-la normalmente. Para evitar interferncia com outras fontes, o Google recomenda fechar todas as outras janelas do navegador e limpar seu cache antes de comear. O Ratproxy ento vai monitorar todas as suas aes e registr-las em ratproxy.log. No caso de dados criptografados por SSL, o Ratproxy substituir o certificado servido pela aplicao web pelo seu prprio. Bons navegadores alertam o usurio para esse fato. Para continuar com o teste,

76

http://www.linuxmagazine.com.br

Ratproxy | SEGURANA

preciso aceitar o novo certificado. A documentao do Ratproxy [1] recomenda no guardar o certificado permanentemente no navegador. Afinal, qualquer pessoa que baixa o Ratproxy conhece o certificado. Como o proxy da ferramenta fora um certificado, surge outro problema: o Ratproxy negocia todos os passos seguintes com a aplicao web, ento impossvel ter 100% de certeza de que se est conversando com o seu prprio servidor. Portanto, deve-se evitar o uso de contas crticas (administrativas) ao se digitar dados sensveis enquanto ocorre o monitoramento pela ferramenta. Alm disso, recomendvel resistir tentao de usar o wget para passar o site para o Ratproxy. A maioria dos testes do Ratproxy se baseia na interao com o usurio, e por isso eles seriam impossveis no caso do wget por este no ser interativo.

Figura 4  O Ratproxy fornece um relatrio com resultados dos testes.

Demonstrao

Com [Ctrl]+[C], o teste do Ratproxy terminado. Os resultados da anlise so armazenados no arquivo levemente crptico ratproxy.log, que feito para facilitar a leitura pelo computador e cooperar com o grep (figura 3). At surgirem novas ferramentas, possvel usar o script ratproxy-report.sh para gerar um relatrio mais intuitivo em HTML:
$ ./ratproxy-report.sh ratproxy. log > report.html

Nesse ponto, o usurio precisa interpretar os resultados. Para isso, preciso dominar tanto a segurana de computadores e os detalhes da aplicao sendo testada. Afinal, no faz sentido o Ratproxy alert-lo a respeito de um risco potencial de cross-site scripting se voc no for capaz de solucion-lo. Em outros casos, a ferramenta lista problemas genricos que no necessariamente representam risco segurana.

Concluses

O relatrio semelhante quele da figura 4: a lista apresenta os problemas identificados pelo Ratproxy, ordenados por tipo e importncia. Riscos crticos de segurana so realados com um HIGH em vermelho chamativo. Toggle exibe ou oculta as mensagens de uma seo especfica, e view trace abre o trace (isto , a comunicao capturada) a partir do diretrio tmp.

Como o Ratproxy funciona de forma inteiramente autnoma, impossvel injetar seus prprios dados de teste na aplicao web para confirmar suas suspeitas. Ele s consegue relatar vulnerabilidades detectadas nas partes da aplicao web que ele realmente investiga (veja o quadro 1). Os desenvolvedores esto cientes de que seu produto no perfeito, portanto pedem sugestes, melhorias e detalhes de quaisquer problemas de segurana que o Ratproxy no consiga identificar. Lembre-se de que o Ratproxy ainda est em fase beta. No se surpreenda ao receber falsos positivos e no se baseie apenas no Ratproxy em detrimento de todas as outras ferramentas. Se voc quiser solucionar problemas,

a ferramenta do Google ainda uma novidade til em seu kit de ferramentas para teste de segurana. O Ratproxy ainda est longe de ser uma panaceia. Ele no fornece uma lista completa de vulnerabilidades sem soluo, nem ajuda a resolver os problemas encontrados. Interpretar os resultados exige conhecimentos especializados em segurana na Web. O que o Ratproxy faz apontar de forma confivel os problemas potenciais, vulnerabilidades e cdigos mal implementados. Se o Google continuar refinando sua ferramenta e conseguir atrair outras empresas para se comunicar com as interfaces abertas do Ratproxy, esse software pode se desenvolver at tornar-se uma joia para testar aplicaes web. n

Mais informaes
[1]  Ratproxy: http://code. google.com/p/ratproxy [2]  Chorizo: https:// chorizo-scanner.com [3]  Descompilador Flash Flare: http://www. nowrap.de/flare.html [4]  Burp Suite: http:// portswigger.net/suite

Linux Magazine #53 | Abril de 2009

77

Você também pode gostar