22 de outubro de 2008

Um pouco sobre o ratproxy

O ratproxy é aquela ferramenta que a Google disponibilizou e com isso conseguiu o hype de sempre. Eu queria escrever algo sobre o código fonte, como funciona as análises que a ferramenta faz, mas como não vi nada se quer sobre a compilação e utilização, decidi fazer um tutorial de compilação e utilização.

O cygwin

Eu uso no meu dia a dia uma máquina com sistema operacional windows, apesar de ter uma distro linux (andlinux) também rodando na máquina. Mas quem não está disposto a fazer grandes alterações eu recomendo o cygwin. Com ele eu tenho as principais ferramentas do linux direto no prompt do windows.

Vamos usar os recursos do cygwin para usar o ratproxy. A instalação é bem simples, apenas tenha certeza de instalar os pacotes necessários. Para compilar e usar o ratproxy é necessário os seguintes pacotes:

1 - make (localizado na biblioteca Devel)
2 - gcc-core (localizado na biblioteca Devel)
3 - openssl-dev (localizado na biblioteca Devel)
4 - openssl - The Open SSL runtime enviroment (localizado na biblioteca Libs)


Estes pacotes são suficientes para compilar e executar o ratproxy. Além destes pacotes é necessário baixar e substituir o flare que vem com o ratproxy por este compilado pra windows. O flare é uma solução usada pelo ratproxy para análise de arquivos swf (flash). Basicamente ele transforma o swf em um arquivo texto que pode ser analisado pelo ratproxy.

Compilando o ratproxy

Feito as instalações dos pacotes necessários vamos alterar o arquivo makefile e compilar o ratproxy. O makefile é apenas um arquivo que contém todos os critérios para que a compilação seja simplificada, basta rodar um make no diretório.

O makefile ficará com as seguintes configurações:

    PROGNAME = ratproxy
    CFLAGS     = -Wall -O3 -D_GNU_SOURCE
    LDFLAGS  = -lcrypto -lssl

Agora para compilar apenas navegue até o diretório onde o fonte do ratproxy se encontra e dê o seguinte comando: make

Com isso "automagicamente" irá aparecer um arquivo ratproxy.exe no diretório. Agora é só utilizar.


Utilizando o ratproxy


syntax de comando:

Usage: ratproxy [ -w logfile ] [ -v logdir ] [ -p port ] [ -d domain ] [ -P host:port ] [ -xtifkgmjscael2XCr ]
   -w logfile - write results to a specified file (default: stdout)
   -v logdir - write HTTP traces to a specified directory (default: none)
   -p port - listen on a custom TCP port (default: 8080)
   -d domain - analyze requests to specified domains only (default: all)
   -P host:port - use upstream proxy for all requests (format host:port)
   -r - accept remote connections (default: 127.0.0.1 only)
   -l - use response length, not checksum, for identity check
   -2 - perform two, not one, page identity check
   -e - perform pedantic caching headers checks
   -x - log all XSS candidates
   -t - log all directory traversal candidates
   -i - log all PNG files served inline
   -f - log all Flash applications for analysis (add -v to decompile)
   -s - log all POST requests for analysis
   -c - log all cookie setting URLs for analysis
   -g - perform XSRF token checks on all GET requests
   -j - report on risky Javascript constructions
   -m - log all active content referenced across domains
   -X - disruptively validate XSRF, XSS protections
   -C - try to auto-correct persistent side effects of -X
   -k - flag HTTP requests as bad (for HTTPS-only applications)
   -a - indiscriminately report all visited URLs
  
Rodando o proxy:

O ratproxy funciona como um proxy, assim enquanto você navegua na aplicação ele vai fazendo a análise das requisições.

Para iniciar o ratproxy digite uma das 3 opções sugeridas no prompt de comando. Váriações podem ser usadas de acordo com a syntax

  1) Low verbosity
 
  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -lfscm
 
  2) High verbosity

  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -lextifscgjm
 
  3) Active testing
 
  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -XClfscm
 
Configurando o browser e utilizando a ferramenta

O ratproxy usa a porta 8080 como default. Então configure o browser para usar um proxy no localhost porta 8080.

Agora vá até o browser e navegue por todas as páginas que você deseja analisar. Enquanto você navega o ratproxy está analisando e armazenando no arquivo de log definido na opção anterior.

Analisando os resultados


Após a navegação feche o prompt que iniciou o ratproxy. O log de análise está no diretório determinado no comando de execução.

Para gerar um relatório mais amigável o google disponibilizou um script para gerar um relatório em html.

No prompt de comando execute o seguinte comando: sh ratproxy-report.sh ratproxy.log > report.html

Pronto, você já tem uma boa ferramenta de análise de aplicações web a sua disposição!

7 comentários:

someone disse...

Why not mentioning also about ratproxy patch to run on Metasploit/WMAP framework? Reference here: http://metasploit.com/dev/trac/browser/framework3/trunk/documentation/wmap.txt

Ulisses Castro disse...

Excelente aritgo Wagner, mas preciso deixar aqui o agradecimento sobre a informação do S.O. que está utilizando no Windows que SALVOU minha vida ahaha...

Recomendo a todos os Linuxers que se encontram na mesma situação que a minha, que trabalham em uma empresa que não deixa você ter na estação seu Linux instalado (mesmo trabalhando no departamento de operações LINUX!).

AndLinux DETONA tudo.. ahahah acabei de instalar aqui PQP adeus putty seu maldito até nunca mais! :)

Valeu Wagner!

Utilizando o ratproxy do google para fazer análise de sites disse...

[...] por Wagner Elias (weliasΘconviso·com·br) - referência [...]

WMAP: Power of Metasploit and Ratproxy « Ulisses Castro (thebug) - Ethical Hacking, Pentest and Computer Security disse...

[...] fez uma excelente abordagem de como o ratproxy funciona há um tempo atraz, Luiz Vieira  fez uma abordagem inicial sobre o metasploit, portanto [...]

André disse...

Wagner,

Ótimo post.
O problema que enfrento é o seguinte: Preciso explicar para os desenvolvedores as "vulnerabilidades" encontradas pelo ratproxy. Mas nem eu entendo direito o que elas querem dizer. Você poderia me informar onde encontrar informações mais detalhadas a respeito?

Obrigado,
André

Elias Wagner disse...

André,

o Ratproxy fornece uma série de informações sobre possíveis vulnerabilidades. O ideal é você dar uma estudada no material disponibilizado pela OWASP (http://www.owasp.org). De qualquer forma em breve eu escrevo algo sobre o tema.

Abs.

Ulisses Castro Security Labs » Blog Archive » WMAP: Power of Metasploit and Ratproxy disse...

[...] fez uma excelente abordagem de como o ratproxy funciona há um tempo atraz, Luiz Vieira fez uma abordagem inicial sobre o metasploit, portanto [...]