Contributor(s): KirstenS, Paul McMillan, Raesene, Adedov, Dinis.Cruz, JoE, Daniel Waller, kingthorin
bloqueando ataques de Força bruta
a common threat web developers face is a password-guessing attack known as a brute force attack.Um ataque de Força bruta é uma tentativa de descobrir uma senha tentando sistematicamente todas as combinações possíveis de letras, números e símbolos até que você descubra a combinação correta que funciona.,Se o seu site necessita de autenticação do Utilizador, você é um bom alvo para um ataque de Força bruta.
um atacante pode sempre descobrir uma senha através de um ataque de Força bruta, mas a desvantagem é que pode levar anos para encontrá-la.Dependendo do comprimento e complexidade da senha, pode haver trilhões de combinações possíveis.
para acelerar um pouco as coisas, um ataque de Força bruta pode começar com palavras de dicionário ou palavras de dicionário ligeiramente modificado, porque a maioria das pessoas irá usá-las ao invés de uma senha completamente aleatória., Estes ataques são chamados de ataques de dicionário ou ataques híbridos de Força bruta.Ataques de Força bruta colocam contas de usuário em risco e inundam seu site com tráfego desnecessário.
Hackers lançam ataques de Força bruta usando ferramentas amplamente disponíveis que utilizam wordlists e conjuntos de regras inteligentes para adivinhar inteligentemente e automaticamente senhas de usuário. Embora tais ataques sejam fáceis de detectar, não são tão fáceis de prevenir.
Por exemplo, muitas ferramentas de Força bruta HTTP podem transmitir pedidos através de uma lista de servidores proxy abertos., Uma vez que cada pedido parece vir de um endereço IP diferente, você não pode bloquear esses ataques simplesmente bloqueando o IP address.To para complicar ainda mais as coisas, algumas ferramentas tentam um nome de usuário e senha diferente em cada tentativa, de modo que você não pode bloquear uma única conta para tentativas de senha falhadas.
bloquear contas
a forma mais óbvia de bloquear ataques de Força bruta é simplesmente bloquear contas após um número definido de tentativas incorretas de senha.,Os bloqueios de conta podem durar uma duração específica, como uma hora, ou as contas podem permanecer bloqueadas até serem desbloqueadas manualmente por um administrador.
no Entanto, o bloqueio de conta não é sempre a melhor solução, porque alguém poderia facilmente abusar da medida de segurança e bloqueio de centenas de contas de usuário.Na verdade, alguns Web sites experiência de tantos ataques que eles são incapazes de impor uma política de bloqueio, porque eles constantemente ser o desbloqueio de contas de clientes.,
os problemas com bloqueios de conta São:
- um atacante pode causar uma negação de serviço (DoS) ao bloquear um grande número de contas.
- Porque você não pode bloquear uma conta que não existe, apenas os nomes válidos da conta irão bloquear. Um atacante poderia usar este fato para colher nomes de usuário do site, dependendo das respostas de erro.
- um atacante pode causar um desvio, bloqueando muitas contas e inundando o help desk com chamadas de suporte.,
- um atacante pode bloquear continuamente a mesma conta, mesmo segundos depois de um administrador desbloqueá-la, desativando efetivamente a conta.
- O Bloqueio Da Conta é ineficaz contra ataques lentos que tentam apenas algumas senhas a cada hora.
- O Bloqueio Da Conta é ineficaz contra ataques que tentam uma senha contra uma grande lista de nomes de utilizador.
- O Bloqueio Da Conta é ineficaz se o atacante estiver usando uma lista de combinações de nome de usuário/senha e adivinhar corretamente no primeiro par de tentativas.,
- contas poderosas como as contas de administrador muitas vezes ignoram a Política de bloqueio, mas estas são as contas mais desejáveis para atacar. Alguns sistemas bloqueiam contas de administrador apenas em logins baseados em rede.mesmo quando você bloqueia uma conta, o ataque pode continuar, consumindo valiosos recursos humanos e de computador.
o bloqueio da conta é por vezes eficaz, mas apenas em ambientes controlados ou nos casos em que o risco é tão grande que até mesmo ataques contínuos DoS são preferíveis ao compromisso da conta.,Na maioria dos casos, no entanto, o bloqueio de conta é insuficiente para parar ataques de Força bruta.Considere, por exemplo, um local de leilões no qual vários licitantes lutam pelo mesmo item.Se o site de leilão forçou lockouts de conta, um licitante poderia simplesmente bloquear as contas dos outros no último minuto do leilão, impedindo-os de submeter qualquer vitória bids.An o atacante poderia usar a mesma técnica para bloquear transações financeiras críticas ou comunicações de E-mail.,Cookies de dispositivo
Pode também considerar bloquear as tentativas de autenticação de navegadores ou dispositivos conhecidos e desconhecidos separadamente.O Slow Down Online adivinhar ataques com o artigo de cookies de dispositivo propõe o Protocolo para o mecanismo de bloqueio com base em informações sobre se o navegador específico já foi usado para o login de sucesso.O protocolo é menos suscetível a ataques DoS do que o bloqueio de conta simples e ainda eficaz e fácil de implementar.,
encontrando outras contramedidas
como descrito, bloqueios de conta geralmente não são uma solução prática, mas existem outros truques para lidar com ataques de Força bruta.Em primeiro lugar, uma vez que o sucesso do ataque depende do tempo, uma solução fácil é injectar pausas aleatórias ao verificar uma senha.Adicionando mesmo alguns segundos de pausa pode atrasar muito um ataque de Força bruta, mas não vai incomodar a maioria dos usuários legítimos como eles fazem login em suas contas.,
Note que, embora adicionar um atraso possa atrasar um ataque simples, é menos eficaz se o atacante enviar vários pedidos de autenticação simultânea.
outra solução é bloquear um endereço IP com várias loginas falhadas.O problema com esta solução é que você poderia inadvertidamente bloquear grandes grupos de usuários, bloqueando um servidor proxy usado por um ISP ou grande empresa.Outro problema é que muitas ferramentas utilizam listas de proxy e enviam apenas alguns pedidos de cada endereço IP antes de passar para o próximo.,
usando listas de proxy abertas amplamente disponíveis, um atacante poderia facilmente contornar qualquer mecanismo de bloqueio de IP.Como a maioria dos sites não bloqueiam após apenas uma senha falhada, um atacante pode usar duas ou três tentativas por proxy.An o atacante com uma lista de 1.000 proxies pode tentar 2.000 ou 3.000 senhas sem ser bloqueado.
no entanto, apesar das fraquezas deste método, sites que experimentam um elevado número de ataques (sites adultos em particular) optam por bloquear endereços IP proxy.,
uma solução simples mas surpreendentemente eficaz é projetar seu site para não usar comportamento previsível para senhas falidas.Por exemplo, a maioria dos sites retornam um código de “erro HTTP 401” com uma falha de senha, embora alguns sites retornem um código de “sucesso HTTP 200”, mas direcionam o Usuário para uma página explicando a tentativa de senha falhada.Isso engana alguns sistemas automatizados, mas também é fácil de contornar.
uma solução melhor pode ser variar o comportamento o suficiente para eventualmente desencorajar todos, menos os hackers mais dedicados.,Você pode, por exemplo, usar mensagens de erro diferentes de cada vez ou, às vezes, deixar um usuário passar para uma página e, em seguida, pedir-lhes novamente uma senha.
algumas ferramentas automatizadas de Força bruta permitem ao atacante definir certas strings de gatilho para procurar que indicam uma tentativa de senha falhada.Por exemplo, se a página resultante contém a frase “mau utilizador ou senha”, a ferramenta saberia que as credenciais falharam e tentaria o próximo na lista.,Uma maneira simples de enganar essas ferramentas é incluir também essas frases como comentários na fonte HTML da página que eles recebem quando eles autenticam com sucesso.
Após uma ou duas tentativas de login falhadas, poderá querer pedir ao Utilizador não só o nome de utilizador e a senha, mas também para responder a uma pergunta secreta.Isso não só causa problemas com ataques automatizados, como impede que um atacante obtenha acesso, mesmo que eles obtenham o nome de usuário e senha corretos.,
Você também pode detectar um elevado número de ataques em todo o sistema e, sob essas condições, pedir a todos os usuários para a resposta às suas perguntas secretas.
outras técnicas que você pode querer considerar são:
- para usuários avançados que querem proteger suas contas de ataque, dê-lhes a opção de permitir o login apenas a partir de certos endereços IP.
- atribuir URLs de login únicos a blocos de usuários para que nem todos os usuários possam acessar o site a partir do mesmo URL.,
- Use a para prevenir ataques automáticos
- em vez de bloquear completamente uma conta, coloque-a num modo de bloqueio com capacidades limitadas.
os Atacantes podem, muitas vezes, evitando muitas dessas técnicas por si, mas pela combinação de várias técnicas, você pode limitar significativamente a ataques de força bruta.Pode ser difícil para parar um atacante, que está determinado a obter uma palavra-passe especificamente a partir do seu web site, mas essas técnicas, certamente, pode ser eficaz contra muitos ataques, incluindo os inexperientes hackers.,Estas técnicas também requerem mais trabalho da parte do atacante, o que lhe dá mais oportunidade de detectar o ataque e talvez até mesmo identificar o atacante.
embora os ataques de Força bruta sejam difíceis de parar completamente, são fáceis de detectar porque cada tentativa de login falhada regista um código de estado HTTP 401 no seu servidor Web logs.It é importante monitorar seus logfiles para ataques de Força bruta-em particular, os 200 códigos de Estado misturados que significam que o atacante encontrou uma senha válida.,ins com um URL de referência de alguém mail ou cliente de IRC
ataques de força Bruta são surpreendentemente difícil parar completamente, mas com um design cuidado e várias medidas de combate, você pode limitar a sua exposição a esses ataques.,
em última análise, a única melhor defesa é garantir que os usuários seguem regras básicas para senhas fortes: usar senhas longas e imprevisíveis, evitar palavras de dicionário, evitar reutilizar senhas, e mudar senhas regularmente.
um teste de Turing público completamente automatizado para distinguir computadores e humanos, ou, é um programa que lhe permite distinguir entre humanos e computadores.Primeiro amplamente utilizado pela Alta Vista para evitar submissões de busca automatizadas, s são particularmente eficazes em parar qualquer tipo de abuso automatizado, incluindo ataques de Força bruta.,
eles trabalham apresentando algum teste que é fácil para os seres humanos passar, mas difícil para os computadores passar; portanto, eles podem concluir com alguma certeza se há um humano no outro lado.
para que a seja eficaz, o ser humano deve ser capaz de responder ao teste corretamente o mais próximo de 100 por cento do tempo possível.Os computadores devem falhar o mais próximo de 100% do tempo possível.Pesquisadores da Carnegie Mellon’s School of Computer Science trabalham continuamente para melhorar e introduzir novos S.,
Se você está desenvolvendo o seu próprio, tenha em mente que não é o quão difícil a pergunta é que importa-é o quão provável é que um computador irá obter a resposta correta.Uma vez vi um que apresenta ao usuário uma foto de três zebras, com uma pergunta de escolha múltipla perguntando quantas zebras estavam no picture.To responda à pergunta, clique num dos três botões.
apesar de ser muito difícil para um programa de computador entender a pergunta e interpretar a imagem, o programa pode apenas adivinhar aleatoriamente qualquer resposta e obtê-la correta um terço das vezes., Embora possa parecer um nível de risco satisfatório, não é, de modo algum, eficaz .Se você executar um serviço de E-mail gratuito e usar um tal como este para impedir spammers de criar contas em massa, tudo o que eles têm que fazer é escrever um script para criar automaticamente 1.000 contas e esperar, em média, que 333 dessas tentativas serão bem sucedidas.
no entanto, um simples pode ainda ser eficaz contra ataques de Força bruta.,Quando você combina a chance de um atacante enviar um nome de usuário e senha corretos com a chance de adivinhar corretamente, combinado com outras técnicas descritas neste capítulo, mesmo um simples pode ser eficaz.
Figura 1: atraso na autenticação da senha: C#
Figura 2: atraso na autenticação da senha: VB.NET
Public Sub AuthenticateRequest(ByVal obj As Object, ByVal ea As System.EventArgs) Dim objApp As HttpApplication Dim objContext As HttpContext Dim ran As Random objApp = obj objContext = objApp.Context ' If user identity is not blank, pause for a random amount of time If objApp.User.Identity.Name <> "" Then ran = New Random Thread.Sleep(ran.Next(ran.Next(minSeconds, maxSeconds) * 1000)) End IfEnd Sub