{"id":334,"date":"2016-02-23T21:37:22","date_gmt":"2016-02-24T00:37:22","guid":{"rendered":"http:\/\/www.batori.com.br\/blog\/?p=334"},"modified":"2016-02-26T14:57:54","modified_gmt":"2016-02-26T17:57:54","slug":"estudo-de-um-ataque-de-dicionario-contra-um-site-baseado-wordpress","status":"publish","type":"post","link":"http:\/\/www.batori.com.br\/blog\/estudo-de-um-ataque-de-dicionario-contra-um-site-baseado-wordpress\/","title":{"rendered":"Estudo de um ataque de dicion\u00e1rio contra um site baseado em WordPress"},"content":{"rendered":"<p><a href=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/wordpress-hacked.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-357\" src=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/wordpress-hacked.jpg\" alt=\"wordpress-hacked\" width=\"692\" height=\"303\" srcset=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/wordpress-hacked.jpg 692w, http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/wordpress-hacked-300x131.jpg 300w\" sizes=\"(max-width: 692px) 100vw, 692px\" \/><\/a><\/p>\n<p>Um ataque de dicion\u00e1rio \u00e9 um m\u00e9todo de cracking que consiste em tentar advinhar uma senha provando todas as palavras do dicion\u00e1rio ou combina\u00e7\u00f5es de palavras. Este tipo de ataque costuma ser mais eficiente que um ataque de for\u00e7a bruta, j\u00e1 que muitos usu\u00e1rios costumam utilizar uma palavra existente em sua l\u00edngua ou combina\u00e7\u00e3o de palavras como senha. Muitos usu\u00e1rio fazem isso para que a senha seja f\u00e1cil de lembrar, o que n\u00e3o \u00e9 uma pr\u00e1tica recomend\u00e1vel.<\/p>\n<p>A figura abaixo demonstra uma das tentantivas que o atacante fez para tentar adivinhar o usu\u00e1rio e a senha de um site baseado em WordPress.<\/p>\n<p><a href=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/word-press-post-ataque-de-dicionario.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-339\" src=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/word-press-post-ataque-de-dicionario.png\" alt=\"word-press-post-ataque-de-dicionario\" width=\"752\" height=\"579\" srcset=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/word-press-post-ataque-de-dicionario.png 752w, http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/word-press-post-ataque-de-dicionario-300x230.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/a><\/p>\n<p>Os cabe\u00e7alhos e o formato desta solicita\u00e7\u00e3o HTTP POST s\u00e3o bem semelhantes a uma solicita\u00e7\u00e3o leg\u00edtima feita por um usu\u00e1rio e um navegador web comum. O cabe\u00e7alho <strong>User-Agent<\/strong> destacado em verde na figura, descreve que a solicita\u00e7\u00e3o foi feita por navegador Firefox instalado num sistema operacional Linux 32 bits. Por\u00e9m conforme an\u00e1lise dos logs que ser\u00e1 descrita a seguir, observamos que a solicita\u00e7\u00e3o HTTP foi montada por um script ou programa de computador. Todos os cabe\u00e7alhos podem facilmente ser falsificados. Para o atacante, \u00e9 interessante que a solicita\u00e7\u00e3o seja o mais parecida poss\u00edvel com uma solicita\u00e7\u00e3o leg\u00edtima, desta forma, dificulta a cria\u00e7\u00e3o de filtro para bloquear o ataque.<\/p>\n<p>No segundo destaque em verde da figura acima, podemos observar que nesta tentativa, o atacante tentou o entrar no WordPress com usu\u00e1rio <strong>root<\/strong> com a senha <strong>Jessica<\/strong>.<\/p>\n<p>Ao analisar os logs no servidor web, podemos observar que o IP 35.59.7.115 enviou v\u00e1rias solicita\u00e7\u00f5es HTTP POST para a p\u00e1gina <strong>wp-login.php<\/strong> conforme figura abaixo.<\/p>\n<p><a href=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/log-ataque-dicionario-wordpress.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-344\" src=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/log-ataque-dicionario-wordpress.png\" alt=\"log-ataque-dicionario-wordpress\" width=\"828\" height=\"694\" srcset=\"http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/log-ataque-dicionario-wordpress.png 828w, http:\/\/www.batori.com.br\/blog\/wp-content\/uploads\/2016\/02\/log-ataque-dicionario-wordpress-300x251.png 300w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/a><\/p>\n<p>Foi destacada na figura acima, a hora da solicita\u00e7\u00e3o. Podemos observar que foi feita uma solicita\u00e7\u00e3o por segundo. Com esta observa\u00e7\u00e3o, conclu\u00edmos que as solicita\u00e7\u00f5es foram feitas por uma processo automatizado.<\/p>\n<p>Segue abaixo, uma amostra dos nomes de usu\u00e1rio e senhas usadas nas tentativas do atacante. Embora existam muitas palavras em ingl\u00eas, este ataque foi feito com uma banco de senha em portugu\u00eas muito provavelmente criado por brasileiros.<\/p>\n<pre class=\"\">(...)\r\n log=root pwd=Password\r\n log=root pwd=Nicole\r\n log=root pwd=Daniel\r\n log=root pwd=Jessica\r\n log=root pwd=Lovely\r\n log=root pwd=Michael\r\n log=root pwd=Ashley\r\n log=root pwd=porsche\r\n log=root pwd=firebird\r\n log=root pwd=rosebud\r\n log=root pwd=guitar\r\n log=root pwd=butter\r\n log=root pwd=beach\r\n log=root pwd=jaguar\r\n log=root pwd=chelsea\r\n log=root pwd=united\r\n log=root pwd=amateur\r\n log=root pwd=great\r\n log=root pwd=black\r\n log=root pwd=turtle\r\n log=robsonidr pwd=mariposa\r\n log=robsonidr pwd=america\r\n log=robsonidr pwd=Password\r\n log=robsonidr pwd=Nicole\r\n log=robsonidr pwd=Daniel\r\n log=robsonidr pwd=Jessica\r\n log=robsonidr pwd=Lovely\r\n log=robsonidr pwd=Michael\r\n log=robsonidr pwd=Ashley\r\n (...)<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Qual o risco deste ataque<\/strong><\/p>\n<p>Se voc\u00ea usa uma senha forte e n\u00e3o baseada em palavras simples, voc\u00ea j\u00e1 dificulta a vida do atacante. Por\u00e9m, o grande desafio \u00e9 garantir que todos os usu\u00e1rios, inclusive os usu\u00e1rios de marketing, \u00e1reas de neg\u00f3cios e outros tipos de usu\u00e1rios adotem senhas seguras.<\/p>\n<p>Mesmo que voc\u00ea implemente um pol\u00edtica de senha complexa, ainda existe o risco do atacante tamb\u00e9m evoluir sua base de senhas usada no ataque.<\/p>\n<p>Para minimizar o risco de um atacante roubar a senha de algum usu\u00e1rio com este ataque, \u00e9 importante que o ataque seja bloqueado.<\/p>\n<p>Outro problema \u00e9 o risco de ocorrer incidentes provocados pelo excesso de solitica\u00e7\u00f5es HTTP como, por exemplo, problemas no desempenho do ambiente, excesso de log, etc.<\/p>\n<p><strong>Como se proteger deste ataque<\/strong><\/p>\n<p>A forma mais pr\u00e1tica e f\u00e1cil de se proteger deste ataque \u00e9 a utiliza\u00e7\u00e3o de um Web Application Firewall (WAF) que tenha um m\u00f3dulo de DoS no n\u00edvel de aplica\u00e7\u00e3o.<\/p>\n<p>No WebViser, um WAF desenvolvido para uso interno da Batori, a cria\u00e7\u00e3o de uma simples regra de DoS para a p\u00e1gina <strong>wp-login.php<\/strong> iria bloquear este ataque de forma muito simples.<\/p>\n<p>Uma outra solu\u00e7\u00e3o que exige mais esfor\u00e7o \u00e9 criar um script que analise continuamente o log do servidor web e que identifique a quantidade anormal de solicita\u00e7\u00f5es HTTP POST para a p\u00e1gina de login. Quando isso ocorrer, o script dever\u00e1 bloquear o IP atrav\u00e9s de regras de firewall (iptables) e\/ou alarmar a equipe de resposta a incidentes que dever\u00e1 tomar as a\u00e7\u00f5es necess\u00e1rias, como por exemplo, criar regra no firewall de rede para bloquear o IP, notificar o respons\u00e1vel pelo IP, etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um ataque de dicion\u00e1rio \u00e9 um m\u00e9todo de cracking que consiste em tentar advinhar uma senha provando todas as palavras do dicion\u00e1rio ou combina\u00e7\u00f5es de palavras. Este tipo de ataque costuma ser mais eficiente que um ataque de for\u00e7a bruta, &hellip; <a href=\"http:\/\/www.batori.com.br\/blog\/estudo-de-um-ataque-de-dicionario-contra-um-site-baseado-wordpress\/\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":125,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"_links":{"self":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/334"}],"collection":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/comments?post=334"}],"version-history":[{"count":20,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/334\/revisions"}],"predecessor-version":[{"id":382,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/334\/revisions\/382"}],"wp:attachment":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/media?parent=334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/categories?post=334"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/tags?post=334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}