Bsides4cooler

677 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
677
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Bsides4cooler

  1. 1. Web SpidersAutomação para web Hacking
  2. 2. 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
  3. 3. Agenda• 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...
  4. 4. Códigos exemplos da apresentação !code.google.com/p/bugsec/downloads/list• owasp_cooler.zip
  5. 5. O que é um Web Spider ?• Geralmente trabalha nos protocolos• HTTP e HTTPs
  6. 6. • E agora como fazer abstração do conteúdo ?
  7. 7. • Exemplo usando sockets simples• arquivo ex1.c• Leia rfc2616
  8. 8. • send() “GET /index.php HTTP/1.1nHost: localhost t n “• Então para pegar a resposta um read()• Como resultado temos o source da página :-)
  9. 9. • ./ex1
  10. 10. • Exemplo• servidor HTTP• Arquivo ex2.c
  11. 11. • Exemplo• servidor HTTP programa ex2.c• Se receber qualquer dado então• String para write() vai ser• "HTTP/1.1 200 Oknn<html>codigo em html<br><b>BUGSEC</b></htm l>n"
  12. 12. • Ex2.c
  13. 13. • Onde podemos encontrar web spiders ?
  14. 14. Casos de uso• No android e no iOS• Na sua TV moderna• Gateways de pagamento...
  15. 15. Casos de uso• GPS
  16. 16. Casos de uso• Muitos...
  17. 17. Casos de uso• Em ferramentas...
  18. 18. Minerando dados• 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
  19. 19. Minerando dados• Spider para pegar temperatura do tempo Como você faria o Parser ???
  20. 20. Minerando dados• Temperatura.pl• PCREforeach (@result) { if ($_ =~ m/<b>(.*?).C</b>/) { my $graus="$1";…
  21. 21. Minerando dados• Abstração,normalização e profundidade.
  22. 22. Minerando dados• Seu spider tem permissões para minar os dados ? • “robots.txt”
  23. 23. APIs para ajudar no desenvolvimento• 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!
  24. 24. APIs para ajudar no desenvolvimento•
  25. 25. APIs para ajudar no desenvolvimento•
  26. 26. Trabalhando com formulários e cookies• 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”
  27. 27. Trabalhando comformulários e cookies
  28. 28. POST e GET com libcurlPOST: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");
  29. 29. POST e GET com libcurlVide ex3.cCOOKIE: res = curl_easy_setopt(curl,CURLOPT_COOKIELIST,"Set-Cookie: quem=nozes");curl_easy_setopt(curl,CURLOPT_COOKIEJAR,"cookie.txt");
  30. 30. Spoofing de User Agent• Como mudar o User Agent ?
  31. 31. Spoofing de User Agent• 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.
  32. 32. Passando certificados com SSL• 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
  33. 33. Uso de proxys• curl_setopt(x,CURLOPT_HTTPPROXYTUNNEL, 1);• curl_setopt(x, CURLOPT_PROXY, “201.66.121.116:666”);• curl_setopt(x, CURLOPT_FOLLOWLOCATION, 1);
  34. 34. Autenticação, captcha e OAUTH• Brute Force ?• Sim, por que não ?• Wp-brute = brute force para wordpress• Fairy = brute force para auth http
  35. 35. Autenticação, captcha e OAUTH•
  36. 36. Autenticação, captcha e OAUTH• HTTP AUTH , o mais fácil de brutar :-)
  37. 37. Autenticação, captcha e OAUTH• 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”
  38. 38. Autenticação, captcha e OAUTH• Captcha o que é ?• Como quebrar um captcha ?
  39. 39. Autenticação, captcha e OAUTH• OAUTH o que é ?• Facebook• twitter• APIs• Tokens• http://oauth.net
  40. 40. Automação no web browser• PTC ( Paid to Click) ,Pagam por Cliques !• AdSense como google , buscapé,submarino,zura...• Neobux , adbux ,landbux... irc.makecash.org
  41. 41. Scanners,fuzzers,GPS hacks...• 0d1n : http://code.google.com/p/0d1n/
  42. 42. Scanners,fuzzers, hacks...• 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”.
  43. 43. Scanners,fuzzers, hacks...• Analisamos os dados “hammer.html”
  44. 44. Scanners,fuzzers, hacks...• Ao clicar em uma linha na tabela
  45. 45. Scanners,fuzzers, hacks...• Um Bruteforce• -h Site.com/index.jsp• -P login=admin?password=!• Depois basta analisar a tabela gerada
  46. 46. •• github.com/CoolerVoid/beer
  47. 47. Perguntas ?
  48. 48. Contato• c00f3r@gmail.com• acosta@conviso.com.br
  49. 49. Muito Obrigado !• BugSec (m0nad,iak,sigsegv,bman,slyfunky), CONVISO.• Clandestine,muzgo,F117,bsdaemon, eremitah,crash,kov...

×