49
Web Spiders Automação para web Hacking

Bsides4cooler

Embed Size (px)

Citation preview

Page 1: Bsides4cooler

Web Spiders Automação para web Hacking

Page 2: Bsides4cooler

Coolers-lab $ whoami

Antonio Costa “Cooler_”

• Experiência de 4 anos com desenvolvimento de sistemas web e web spiders em geral,soluções para problemas em unix...

• Desenvolvedor e pesquisador .

• Faço parte do grupo de pesquisa BugSec.

• Fundador da E-zine Cogumelo Binario.

• Programador em ASM,C,C++,Common Lisp,Perl,PHP...

• Trabalho atualmente na CONVISO.

https://github.com/CoolerVoid/

http://code.google.com/p/bugsec/

@Cooler_freenode

Page 3: Bsides4cooler

• O que é um Web Spider ?• Casos de uso

• Minerando dados

• APIs para ajudar no desenvolvimento

• Trabalhando com formulários e cookies

• Spoofing de user agent

• Autenticação,captcha e OAUTH

• Passando certificados com SSL

• Uso de proxys

• Scanners,fuzzers, Hacks...

Agenda

Page 4: Bsides4cooler

Códigos exemplos da apresentação !

code.google.com/p/bugsec/downloads/list•owasp_cooler.zip

Page 5: Bsides4cooler

• Geralmente trabalha nos protocolos

• HTTP e HTTPs

O que é um Web Spider ?

Page 6: Bsides4cooler

• E agora como fazer abstração do conteúdo ?

Page 7: Bsides4cooler

• Exemplo usando sockets simples

• arquivo ex1.c

• Leia rfc2616

Page 8: Bsides4cooler

• send() “GET /index.php HTTP/1.1\nHost: localhost \t \n “• Então para pegar a resposta

um read()

• Como resultado temos o source da página :-)

Page 9: Bsides4cooler

• ./ex1

Page 10: Bsides4cooler

•Exemplo •servidor HTTP•Arquivo ex2.c

Page 11: Bsides4cooler

• Exemplo • servidor HTTP programa ex2.c• Se receber qualquer dado

então • String para write() vai ser • "HTTP/1.1 200

Ok\n\n<html>codigo em html<br><b>BUGSEC</b></html>\n"

Page 12: Bsides4cooler

• Ex2.c

Page 13: Bsides4cooler

• Onde podemos encontrar web spiders ?

Page 14: Bsides4cooler

• No android e no iOS• Na sua TV moderna

• Gateways de pagamento...

Casos de uso

Page 15: Bsides4cooler

• GPSCasos de uso

Page 16: Bsides4cooler

• Muitos...

Casos de uso

Page 17: Bsides4cooler

• Em ferramentas...

Casos de uso

Page 18: Bsides4cooler

• Parsers !!!• <p>rand(x)</p>• /<p>(.*?)<\/p>/• split(),strtok(),strcmp...• Comparar letra por letra, ou cadeias...• re2c,flex+bison,pcre,posix

regex,sed...• Bitwise “bitap”• Assembly !? o.O

Minerando dados

Page 19: Bsides4cooler

• Spider para pegar temperatura do tempo

Como você faria o Parser ???

Minerando dados

Page 20: Bsides4cooler

• Temperatura.pl

• PCRE

foreach (@result) { if ($_ =~ m/<b>(.*?).C<\/b>/) { my $graus="$1";…

Minerando dados

Page 21: Bsides4cooler

• Abstração,normalização e profundidade.

Minerando dados

Page 22: Bsides4cooler

• Seu spider tem permissões para minar os dados ?

• “robots.txt”

Minerando dados

Page 23: Bsides4cooler

• Ruby a gem Mechanize,curl...

• Perl no CPAN temos LWP,WWW::Mechanize,curl...

• Python requests...

• Java,PHP,Common Lisp,C++...

• Não precisa recriar a roda com sockets!

APIs para ajudar no desenvolvimento

Page 24: Bsides4cooler

APIs para ajudar no desenvolvimento

Page 25: Bsides4cooler

APIs para ajudar no desenvolvimento

Page 26: Bsides4cooler

• Sempre que temos input no protocolo HTTP temos como os mais populares métodos POST e GET.

• Em RestFul temos outros como Delete,Put...

• Outras entradas também “User Agent”

Trabalhando com formulários e cookies

Page 27: Bsides4cooler

Trabalhando com formulários e cookies

Page 28: Bsides4cooler

POST e GET com libcurl

POST:

curl_easy_setopt(curl,

CURLOPT_POSTFIELDS, "bugsec=1&floripa=praia");

GET:

curl_easy_setopt(curl, CURLOPT_URL, "http://www.bugsec.com.br/site.jsp?var=1");

Page 29: Bsides4cooler

POST e GET com libcurl

Vide ex3.c

COOKIE:

res = curl_easy_setopt(curl, CURLOPT_COOKIELIST,

"Set-Cookie: quem=nozes");

curl_easy_setopt(curl,

CURLOPT_COOKIEJAR,

"cookie.txt");

Page 30: Bsides4cooler

• Como mudar o User Agent ?

Spoofing de User Agent

Page 31: Bsides4cooler

• Como mudar o User Agent ?

• curl_setopt (curl, CURLOPT_USERAGENT, "Mozilla/5.0 NetBSD 4.1");

• Analisar como a aplicação se comporta com diferentes User Agent.

• Enganar sistemas anti-bots que usam blacklists.

Spoofing de User Agent

Page 32: Bsides4cooler

• curl_setopt(x, CURLOPT_SSL_VERIFYPEER, false);

OU

• curl_setopt(x, CURLOPT_SSL_VERIFYPEER, true);

• curl_setopt(x, CURLOPT_SSL_VERIFYHOST, 2);

• curl_setopt (x, CURLOPT_CAINFO,”/local/CA/cert.crt”);

• CURLOPT_CAPATH

Passando certificados com SSL

Page 33: Bsides4cooler

• curl_setopt(x,CURLOPT_HTTPPROXYTUNNEL, 1);

• curl_setopt(x, CURLOPT_PROXY, “201.66.121.116:666”);

• curl_setopt(x, CURLOPT_FOLLOWLOCATION, 1);

Uso de proxys

Page 34: Bsides4cooler

• Brute Force ? • Sim, por que não ?

• Wp-brute = brute force para wordpress

• Fairy = brute force para auth http

Autenticação,captcha e OAUTH

Page 35: Bsides4cooler

Autenticação,captcha e OAUTH

Page 36: Bsides4cooler

• HTTP AUTH , o mais fácil de brutar :-)

Autenticação,captcha e OAUTH

Page 37: Bsides4cooler

• Green Fairy – Programa para brute force de auth HTTP

• https://github.com/CoolerVoid/Fairy

• Fácil para entender

• curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

• curl_easy_setopt(curl_handle, CURLOPT_USERPWD, auth);

• auth==”admin:password”

Autenticação,captcha e OAUTH

Page 38: Bsides4cooler

• Captcha o que é ?

• Como quebrar um captcha ?

Autenticação,captcha e OAUTH

Page 39: Bsides4cooler

• OAUTH o que é ?

• Facebook• twitter• APIs• Tokens

• http://oauth.net

Autenticação,captcha e OAUTH

Page 40: Bsides4cooler

• PTC ( Paid to Click) ,Pagam por Cliques !

• AdSense como google , buscapé,submarino,zura...

• Neobux , adbux ,landbux...

irc.makecash.org

Automação no web browser

Page 41: Bsides4cooler

• 0d1n :

http://code.google.com/p/0d1n/

Scanners,fuzzers,GPS hacks...

Page 42: Bsides4cooler

•Um Scanner

• Site.com/index.jsp?var=!&x=0!• Onde temos “!” será trocado

por um PAYLOAD, então enviamos “Request”.

• Logo depois será feito uma busca por

strings suspeitas na “Response”.

Scanners,fuzzers, hacks...

Page 43: Bsides4cooler

• Analisamos os dados “hammer.html”

Scanners,fuzzers, hacks...

Page 44: Bsides4cooler

• Ao clicar em uma linha na tabela

Scanners,fuzzers, hacks...

Page 45: Bsides4cooler

• Um Bruteforce

• -h Site.com/index.jsp• -P 'login=admin?password=!'

• Depois basta analisar a tabela gerada

Scanners,fuzzers, hacks...

Page 46: Bsides4cooler

• github.com/CoolerVoid/beer

Page 47: Bsides4cooler

Perguntas ?

Page 49: Bsides4cooler

Muito Obrigado !

• BugSec (m0nad,iak,sigsegv,bman,slyfunky), CONVISO.

• Clandestine,muzgo,F117,bsdaemon,

eremitah,crash,kov...