Escolar Documentos
Profissional Documentos
Cultura Documentos
SEGURANA
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
-e -x -t -i -g -j -X -C
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,
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,
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
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.
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
77