Contributor(s): KirstenS, Paul McMillan, Raesene, Adedov, Dinis.Cruz, JoE, Daniel Waller, kingthorin
bloquear ataques de fuerza bruta
una amenaza común a la que se enfrentan los desarrolladores web es un ataque de adivinación de contraseñas conocido como ataque de fuerza bruta.Un ataque de fuerza bruta es un intento de descubrir una contraseña probando sistemáticamente todas las combinaciones posibles de letras, números y símbolos hasta que descubras la combinación correcta que funciona.,Si su sitio web requiere autenticación de usuario, usted es un buen objetivo para un ataque de fuerza bruta.
Un atacante siempre puede descubrir una contraseña a través de un ataque de fuerza bruta, pero la desventaja es que podría tardar años en encontrarla.Dependiendo de la longitud y complejidad de la contraseña, podría haber billones de combinaciones posibles.
para acelerar un poco las cosas, un ataque de fuerza bruta podría comenzar con palabras del diccionario o palabras del diccionario ligeramente modificadas porque la mayoría de las personas usarán esas en lugar de una contraseña completamente aleatoria., Estos ataques se llaman ataques de diccionario o ataques híbridos de fuerza bruta.Los ataques de fuerza bruta ponen en riesgo las cuentas de los usuarios e inundan su sitio con tráfico innecesario.
Los Hackers lanzan ataques de fuerza bruta utilizando herramientas ampliamente disponibles que utilizan listas de palabras y conjuntos de reglas inteligentes para adivinar de forma inteligente y automática las contraseñas de los usuarios. Aunque estos ataques son fáciles de detectar, no son tan fáciles de prevenir.
por ejemplo, muchas herramientas HTTP de fuerza bruta pueden retransmitir solicitudes a través de una lista de servidores proxy abiertos., Dado que cada solicitud parece provenir de una dirección IP diferente, no puede bloquear estos ataques simplemente bloqueando la IP address.To para complicar aún más las cosas, algunas herramientas prueban un nombre de usuario y una contraseña diferentes en cada intento, por lo que no puede bloquear una sola cuenta por intentos fallidos de contraseña.
bloquear cuentas
la forma más obvia de bloquear ataques de fuerza bruta es simplemente bloquear cuentas después de un número definido de intentos de contraseña incorrectos.,Los bloqueos de cuentas pueden durar una duración específica, como una hora, o las cuentas pueden permanecer bloqueadas hasta que un administrador las desbloquee manualmente.
sin embargo, el bloqueo de la cuenta no siempre es la mejor solución, porque alguien podría abusar fácilmente de la medida de seguridad y bloquear a cientos de usuarios accounts.In de hecho, algunos sitios web experimentan tantos ataques que no pueden aplicar una política de bloqueo porque estarían desbloqueando constantemente las cuentas de los clientes.,
los problemas con los bloqueos de cuentas son:
- Un atacante puede causar una denegación de servicio (DoS) bloqueando un gran número de cuentas.
- debido a que no puede bloquear una cuenta que no existe, solo se bloquearán los nombres de cuenta válidos. Un atacante podría usar este hecho para recolectar nombres de usuario del sitio, dependiendo de las respuestas de error.
- Un atacante puede causar un desvío bloqueando muchas cuentas e inundando el servicio de asistencia con llamadas de soporte.,
- Un atacante puede bloquear continuamente la misma cuenta, incluso segundos después de que un administrador la desbloquee, deshabilitando efectivamente la cuenta.
- El bloqueo de cuenta es ineficaz contra ataques lentos que intentan solo unas pocas contraseñas cada hora.
- El bloqueo de cuenta es ineficaz contra los ataques que intentan una contraseña contra una gran lista de nombres de usuario.
- El bloqueo de la cuenta es ineficaz si el atacante está utilizando una lista combinada de nombre de usuario/contraseña y adivina correctamente en el primer par de intentos.,
- Las cuentas potentes, como las cuentas de administrador, a menudo omiten la política de bloqueo, pero estas son las cuentas más deseables para atacar. Algunos sistemas bloquean las cuentas de administrador solo en los inicios de sesión basados en la red.
- incluso una vez que bloquee una cuenta, el ataque puede continuar, consumiendo valiosos recursos humanos y informáticos.
El bloqueo de Cuenta a veces es efectivo, pero solo en entornos controlados o en casos donde el riesgo es tan grande que incluso los ataques DoS continuos son preferibles al compromiso de la cuenta.,En la mayoría de los casos, sin embargo, el bloqueo de cuentas es insuficiente para detener los ataques de fuerza bruta.
Considere, por ejemplo, un sitio de subastas en el que varios postores están peleando por el mismo artículo.Si el sitio web de la subasta forzara el bloqueo de cuentas, un postor podría simplemente bloquear las cuentas de los demás en el último minuto de la subasta, evitando que envíen cualquier ganancia bids.An el atacante podría usar la misma técnica para bloquear transacciones financieras críticas o comunicaciones por correo electrónico.,
cookies de dispositivo
También puede considerar bloquear los intentos de autenticación de navegadores o dispositivos conocidos y desconocidos por separado.El artículo Slow Down online Guessing Attacks with Device Cookies propone un protocolo para el mecanismo de bloqueo basado en información sobre si un navegador específico ya se ha utilizado para iniciar sesión con éxito.El protocolo es menos susceptible a los ataques DoS que el bloqueo de la cuenta simple y, sin embargo, es efectivo y fácil de implementar.,
encontrar otras contramedidas
como se describe, los bloqueos de cuentas generalmente no son una solución práctica, pero hay otros trucos para lidiar con ataques de fuerza bruta.En primer lugar, dado que el éxito del ataque depende del tiempo, una solución fácil es inyectar pausas aleatorias al verificar una contraseña.Agregar incluso una pausa de unos segundos puede ralentizar en gran medida un ataque de fuerza bruta, pero no molestará a la mayoría de los usuarios legítimos cuando inicien sesión en sus cuentas.,
tenga en cuenta que aunque agregar un retraso podría ralentizar un ataque de subproceso único, es menos efectivo si el atacante envía múltiples solicitudes de autenticación simultáneas.
otra solución es bloquear una dirección IP con varios inicios de sesión fallidos.El problema con esta solución es que podría bloquear inadvertidamente grandes grupos de usuarios al bloquear un servidor proxy utilizado por un ISP o una gran empresa.Otro problema es que muchas herramientas utilizan listas de proxy y envían solo unas pocas solicitudes de cada dirección IP antes de pasar a la siguiente.,
Usando listas de proxy abiertas ampliamente disponibles, Un atacante podría eludir fácilmente cualquier mecanismo de bloqueo de IP.Debido a que la mayoría de los sitios no se bloquean después de solo una contraseña fallida, un atacante puede usar dos o tres intentos por proxy.An atacante con una lista de 1.000 proxies puede intentar 2.000 o 3.000 contraseñas sin ser bloqueado.
sin embargo, a pesar de las debilidades de este método, los sitios Web que experimentan un alto número de ataques (sitios web para adultos en particular) optan por bloquear las direcciones IP de proxy.,
una solución simple pero sorprendentemente efectiva es diseñar su sitio web para no usar un comportamiento predecible para contraseñas fallidas.Por ejemplo, la mayoría de los sitios web devuelven un código de » error HTTP 401 «con un error de contraseña, aunque algunos sitios web devuelven un código de» éxito HTTP 200 » pero dirigen al usuario a una página que explica el intento de contraseña fallido.Esto engaña a algunos sistemas automatizados, pero también es fácil de eludir.
una mejor solución podría ser variar el comportamiento lo suficiente para desalentar a todos, excepto a los hackers más dedicados.,Podría, por ejemplo, usar diferentes mensajes de error cada vez o, a veces, dejar que un usuario pase a una página y luego solicitarle nuevamente una contraseña.
algunas herramientas automatizadas de fuerza bruta permiten al atacante establecer ciertas cadenas de activación para buscar que indican un intento fallido de contraseña.Por ejemplo, si la página resultante contiene la frase «mal nombre de usuario o contraseña», la herramienta sabría que las credenciales fallaron y probaría la siguiente en la lista.,Una forma sencilla de engañar a estas herramientas es incluir también esas frases como comentarios en la fuente HTML de la página que obtienen cuando se autentican con éxito.
Después de uno o dos intentos fallidos de inicio de sesión, es posible que desee solicitar al usuario no solo el nombre de usuario y la contraseña, sino también para responder a una pregunta secreta.Esto no solo causa problemas con los ataques automatizados, sino que evita que un atacante obtenga acceso, incluso si obtiene el nombre de usuario y la contraseña correctos.,
también puede detectar un gran número de ataques en todo el sistema y, en esas condiciones, solicitar a todos los usuarios la respuesta a sus preguntas secretas.
otras técnicas que puede considerar son:
- Para los usuarios avanzados que desean proteger sus cuentas de ataques, déles la opción de permitir el inicio de sesión solo desde ciertas direcciones IP.
- asigne URLs de inicio de sesión únicas a bloques de usuarios para que no todos los usuarios puedan acceder al sitio desde la misma URL.,
- Use a para evitar ataques automatizados
- en lugar de bloquear completamente una cuenta, colóquela en un modo de bloqueo con capacidades limitadas.
Los atacantes a menudo pueden eludir muchas de estas técnicas por sí mismos, pero al combinar varias técnicas, puede limitar significativamente la fuerza bruta attacks.It puede ser difícil detener a un atacante que está decidido a obtener una contraseña específicamente de su sitio web, pero estas técnicas ciertamente pueden ser efectivas contra muchos ataques, incluidos los de hackers novatos.,Estas técnicas también requieren más trabajo por parte del atacante, lo que le da más oportunidad de detectar el ataque y tal vez incluso identificar al atacante.
aunque los ataques de fuerza bruta son difíciles de detener por completo, son fáciles de detectar porque cada intento de inicio de sesión fallido registra un código de estado HTTP 401 en su servidor Web logs.It es importante monitorear sus archivos de registro en busca de ataques de fuerza bruta, en particular, los 200 códigos de estado entremezclados que significan que el atacante encontró una contraseña válida.,ins con una URL de referencia del correo de alguien o cliente de IRC
en última instancia, la única Mejor Defensa es asegurarse de que los usuarios sigan las reglas básicas para contraseñas seguras: usar contraseñas largas e impredecibles, evitar palabras del diccionario, evitar reutilizar contraseñas y cambiar contraseñas regularmente.
una prueba pública de Turing completamente automatizada para distinguir a las computadoras y a los humanos, or , es un programa que le permite distinguir entre humanos y computadoras.Los primeros ampliamente utilizados por Alta Vista para evitar envíos de búsqueda automatizados, son particularmente efectivos para detener cualquier tipo de abuso automatizado, incluidos los ataques de fuerza bruta.,
trabajan presentando alguna prueba que es fácil para los humanos pasar pero difícil para las computadoras pasar; por lo tanto, pueden concluir con cierta certeza si hay un humano en el otro extremo.
para que a sea eficaz, los seres humanos deben ser capaces de responder a la prueba correctamente tan cerca del 100 por ciento del tiempo como sea posible.Las computadoras deben fallar lo más cerca posible del 100 por ciento del tiempo.Los investigadores de la Escuela de Ciencias de la Computación de Carnegie Mellon trabajan continuamente para mejorar e introducir nuevas S.,
si usted está desarrollando su propio, tenga en cuenta que no es lo difícil que la pregunta es lo que importa-es la probabilidad de que una computadora obtendrá la respuesta correcta.Una vez vi una que presenta al usuario con una imagen de tres cebras, con una pregunta de opción múltiple preguntando cuántas cebras había en el picture.To responda la pregunta, haga clic en uno de los tres botones.
aunque sería muy difícil para un programa de computadora entender la pregunta e interpretar la imagen, el programa podría adivinar al azar cualquier respuesta y corregirla un tercio del tiempo., Aunque esto pueda parecer un nivel de riesgo satisfactorio, de ninguna manera es un eficaz .Si ejecuta un servicio de correo electrónico gratuito y usa un servicio como este para evitar que los spammers creen cuentas en masa, todo lo que tienen que hacer es escribir un script para crear automáticamente 1,000 cuentas y esperar en promedio que 333 de esos intentos tengan éxito.
sin embargo, un simple aún puede ser efectivo contra ataques de fuerza bruta.,Cuando combinas la posibilidad de que un atacante envíe un nombre de usuario y contraseña correctos con la posibilidad de adivinar correctamente, combinado con otras técnicas descritas en este capítulo, incluso un simple podría resultar efectivo.
Figura 1: Autenticación de Contraseña de la Demora: C#
Figura 2: Autenticación de Contraseña de Retraso: 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