WordPress proteger BruteForce

De vez em quando gosto de dar uma vista de olhos nos logs do servidor para ver se deteto algo “anormal”, uma das coisas que me saltou à vista já há algum tempo foi o número exagerado de tentativas de autenticação inválidas! Estas tentativas tinham várias origens mas o método é sempre o mesmo tentar combinações comuns de utilizador e passwords de forma a entrar no Painel de administração do WordPress (isto é conhecido por BruteForce).

Para proteger a minha instalação de WordPress ainda pensei usar um plugin para proteger deste género de ataque mas decidi tentar uma abordagem de mais baixo nível, uma vez que já uso o Fail2Ban no servidor decidi aproveitar o mesmo e criar uma regra para à terceira tentativa de autenticação bloquear o ip de origem, fui acompanhando o número de ip’s bloqueados e são mais do que eu imaginava.

Como não sou nenhum master em regex usei uma expressão extremamente simples, quando uma tentativa de autenticação falha o WordPress retorna um erro http 403  (o comportamento standard retorna um 200 OK, com o JetPack ativo e com a opção de bloquear tentativas de login inválidas é que gera o 403), então é só mandar o Fail2Ban pesquisar acessos ao wp-login.php que retornaram 403, a regra que cheguei que se mostrou mais eficaz após alguns testes foi a seguinte:

failregex = :80 <HOST> .* /wp-login.php HTTP/1.1″ 403

Para já tem funcionado como esperado:

Optei por não usar plugins porque mesmo que um plugin detecte uma tentativa de intrusão, vai permitir que o atacante continue a gastar recursos ao servidor, ao enviar centenas ou milhares de pedidos seguidos. Como o Fail2Ban impede o ip do servidor de chegar sequer ao servidor o gasto de recursos é mínimo praticamente nulo.

Uma alteração que faço sempre no Fail2Ban é configurar para que quando bane um ip não faça REJECT e em vez disso faça um DROP(criei um Gist com isso) assim quem está do outro lado (o atacante) tem que aguardar pelo timeout do pedido para proceder para outro, isto fará com que no mínimo a aplicação que estão a usar para nos atacar consuma mais tempo e mais recursos ao atacante.

Burlas no OLX

Embora não seja um utilizador assíduo do site de classificados OLX, tenho tido conhecimento de diversas burlas feitas através de anúncios colocados no OLX. Não podemos culpabilizar o OLX no entanto se houvesse um sistema de feedback semelhante ao que existe no Ebay muito provavelmente algumas das burlas seriam evitadas!!

A burla que oiço com mais frequência é a de “vendedores” que colocam anúncios de produtos e que quando “vendem” limitam-se a receber o dinheiro e cortar o contacto com o comprador sem nunca entregar o objecto da venda, creio que,estes vendedores, não sejam apanhados por medo dos compradores enganados ou pelos baixos valores das transacções , porque em alguns casos o pagamento é feito por transferência bancária em que o “Vendedor” faculta o seu NIB e sendo o NIB um identificador da conta facilemente uma autoridade “chega” ao seu titular, desconheço a lei e não sei se podemos apresentar queixa de burla nestes casos. O facto de termos facultado ao “Vendedor” os nosso dados pessoais também pode ser um factor de medo!!! Os valores envolvidos são muitas vezes baixos, talvez já com intuito de dissuadir o burlado de apresentar queixa e ter as “dores de cabeça” resultantes de todo o processo.

Outra burla que já me relataram várias vezes é de um “comprador” interessado nos produtos que estão à venda, mas que infelizmente está em Inglaterra ou a mudar-se para lá e quer fazer o pagamento por Paypal!! No entanto o “comprador” como não quer prejudicar o vendedor oferece-se para suportar os custos de transporte e inclusive para pagar mais do que o valor pedido no anuncio para compensar a maçada e as taxas do Paypal!! O contacto é feito tanto por telefone como por email e tudo é muito verosímil, não tive acesso a nenhuma destas “conversas” mas nos relatos que ouvi é tudo muito convincente e o “comprador” parece ser muito honesto. Tudo corre muito bem até ao dia acordado para o levantamento pela transportadora dos bens em causa, nesse dia o vendedor recebe uma chamada de um alegado “transportador” que diz que o pagamento do transporte terá que ser feito antecipadamente, quando o vendedor contacta o “comprador” o mesmo diz-lhe para efectuar o pagamento do transporte que ele já está a tratar do pagamento dos bens!! E aqui é que está a burla o pagamento do transporte terá que ser feito através da Western Union, que os mais incautos poderão achar normal visto ser um nome Inglês o burlão ter dito que está em Inglaterra. A Western Union é um sistema de envio de remessas de dinheiro que permite ao burlão levantar o dinheiro sem ser identificado e sem deixar rasto.

Estas são as burlas que tive conhecimento no entanto não duvido que existam muitas mais…  o OLX não se responsabiliza por estas situações (nem pode!!!) e dá concelhos de como evitar algumas das burlas conhecidas, referi o site OLX a titulo de exemplo e porque as situações que me reportaram foram iniciadas em contactos através do OLX no entanto não duvido que os burlões também sejam  trabalhadores que infestem também outros sites semelhantes e concorrentes com esquemas iguais ou parecidos!!

MEO – Configuração por defeito perigosa

Os routers MEO (Thompson os outros não sei!!) disponibilizam portas USB que permitem ligar um dispositivo como por exemplo um disco ou uma pen e partilhar o seu conteúdo na rede local (pensava eu!!!).
Hoje estava a testar essa funcionalidade e para isso bastou ligar o dispositivo (PEN) e nas configurações do router activar a dita funcionalidade (Partilha Windows ou SMB, servidor FTP e UPnP AV Media Server) , todos os serviços funcionam correctamente e sem problemas na rede local… como foi tão rápido resolvi dar mais uma vista de olhos pela configuração do router e qual o meu espanto que existe um encaminhamento de portas (NAT) que está nos routers por defeito que encaminha a porta 21 (FTP) para o ip 192.168.1.253 (este é o ip em que são disponibilizados os serviços enumerados acima). Como a autenticação FTP é partilhada com o router (os users e passwords são os mesmos, testei Administrator e meo) e o serviço fica disponível para o mundo creio que isto constitui uma ameaça de segurança.

MEO_Regra_NAT_Port_21

Como as gamas de ip’s onde o MEO opera são conhecidas nada impede que alguém mal intencionado crie um bot que se tente ligar a todos os ip’s do MEO à porta 21 e teste a autenticação por defeito e caso consiga “entrar” descarregue o conteúdo do armazenamento que ligamos no router!!! ou faz upload para o nosso router de conteúdos indesejados ou maliciosos.

MEO_FTP

O conselho que dou a quem quiser usar o seu router MEO como servidor de ficheiros é desactivar a regra NAT que encaminha a porta FTP,outra solução passa por mudar as passwords dos utilizadores do router, no entanto , creio não ser suficiente pois nada impede a PT que no próximo update ao firmware coloque outro utilizador ou altere a password dos que existem para a password default.
A solução mais segura será activar apenas a partilha windows e Media Server pois estas funcionalidades estão disponíveis apenas na rede local, mas ter em atenção que não existe autenticação ou seja qualquer pessoa ligada à rede local pode aceder aos ficheiros contidos no armazenamento ligado ao router.

SQL Server – Usar Autenticação Windows fora do Dominio

Numa estrutura típica duma aplicação em rede com base de dados SqlServer em que se usa um servidor de Active Directory para centralizar os Utilizadores e acessos, tudo funciona bem até aparecer uma máquina que por alguma razão não podemos ou não dá para colocar no domínio. Na situação em que tive que implementar este “truque” tratou-se de um pc com Windows Vista Home Basic que será usado por um utilizador que está no Active Directory e que têm que usar um pc que está no domínio e esporadicamente usa um portátil com Vista Home Basic (que não dá para colocar no Domínio).

Para implementar este “truque” tudo o que precisamos é usar funções fornecidas pelo próprio Windows!! vou enumerar os passos para tornar isto possível!

1º – Criar um atalho para aplicação

2º – Nas propriedades do atalho acrescentar o texto seguinte antes do caminho do executável:

runas /user:NomeDoDominio\NomeDoUtilizador /netonly

 

3º – Confirmar que o destino do atalho está com o texto anterior seguido do caminho do executável onde queremos usar a autenticação Windows.

4º – Ao executar o atalho o utilizador só terá que fornecer a sua password do Active Directory e usar  normalmente a aplicação como se o pc estivesse no domínio!!!!

5º – para embelezar a “coisa” podemos atribuir ao atalho o mesmo icon da aplicação que o utilizador já conhece!! (durante o processo o atalho vai assumir o icon do executável do RunAs).

6º – caso o windows não assuma o comando runas, colocar o caminho completo do executável que está na pasta system32 do Windows.

Recuperar Password Gravada no Browser

Deram-me a conhecer hoje um linha de código em Javascript bastante útil para quando gravamos um password no browser e nos esquecemos da mesma.

Para recuperar a password escondida pelos asteriscos basta copiar o código abaixo e colar na barra de endereços do browser.

javascript:var p=r(); function r(){var g=0;var x=false;var x=z(document.forms);g=g+1;var w=window.frames;for(var k=0;k<w.length;k++) {var x = ((x) || (z(w[k].document.forms)));g=g+1;}if (!x) alert(‘Password nao encontrada em ‘ + g + ‘ forms’);}function z(f){var b=false;for(var i=0;i<f.length;i++) {var e=f[i].elements;for(var j=0;j<e.length;j++) {if (h(e[j])) {b=true}}}return b;}function h(ej){var s=”;if (ej.type==’password’){s=ej.value;if (s!=”){prompt(‘Password Encontrada ‘, s)}else{alert(‘Password esta em branco’)}return true;}}

O principio é simples procuramos na página os formulários e caso haja existam percorremos os inputs do tipo password dando um alerta com a password.

Problema Resolvido

O problema que relatei aqui foi resolvido.

Não encontrei a causa por isso posso continuar á mercê dos hackaros, mas pelo menos para já os sites estão limpos (este blogue está alojado noutro provider e não foi afectado).

O processo de limpeza foi simples mas demorado, comecei por fazer download de todos os ficheiros que tinha na conta afectada, pagar numa instalação “virgem” do WordPress e copiar para cima dos ficheiros já existentes, de cada instalação que tenho do WordPress. Mesmo assim continuava a haver ficheiros infectados. Fiz uma pequena aplicação em C# que pesquisa recursivamente todos os ficheiros pelo código injectado e o apaga copiando para outro directorio os ficheiros “limpos”.

Se alguém padecer do mesmo mal, que esteja á vontade para me solicitar o código que usei para percorrer todos os ficheiros em todos os directórios e sub-directórios e encontrar os ficheiros afectados. Não disponibilizo aqui a aplicação porque está um bocado tosca, para a usar convém ler o código e ajustar á infecção que os ficheiros tiverem.