Cómo funciona la fuerza bruta en código

1

Me preguntaba cómo funcionan los métodos de fuerza bruta desde un nivel de código. ¿Cómo puede el código acceder a una página de inicio de sesión, por ejemplo, e insertar información en los campos necesarios? ¿Y es el código capaz de duplicar el sistema para que 3 intentos o esperar entre conjeturas ya no sea un problema?

    
pregunta abden003 30.07.2013 - 21:42
fuente

1 respuesta

6

Hay ataques en línea y ataques sin conexión .

Los ataques en línea son cuando el atacante intenta cada contraseña enviándola al sistema atacado. El sistema atacado podría estar utilizando, por ejemplo, una página de inicio de sesión HTML; en ese caso, el atacante primero manualmente obtendría una copia de la página de inicio de sesión (como cualquier otro usuario, con un navegador web), luego mirará el HTML e inferirá el formato de los datos que se envían al servidor. La mayoría de las páginas de inicio de sesión son simplemente HTML Forms ; cuando un usuario ingresa el nombre de usuario y la contraseña y hace clic en el botón "Iniciar sesión", el navegador envía una solicitud HTTP que codifica los datos ingresados por el usuario. El atacante solo tiene que compilar, con algún código personalizado, solicitudes HTTP sintéticas que usen el mismo formato.

En cuanto a la frecuencia con la que el atacante intentará ... bueno, depende. Por un lado, el atacante tiene muchas contraseñas que probar, por lo que enviará muchas solicitudes, incluirá muchas en paralelo porque el propio servidor puede manejar varias solicitudes entrantes a la vez y procesará más solicitudes por segundo cuando se use en paralelo. el cliente (el atacante) esperó una respuesta antes de enviar su próxima solicitud. El paralelismo absorbe la latencia, de alguna manera.

Por otra parte, algunos administradores de sistemas incluyen sistemas de detección para "actividad sospechosa" y recibir 100 intentos de inicio de sesión para un usuario dado por segundo seguramente no es natural. Por lo tanto, algunos atacantes intentarán lo de bajo perfil, probando solo una contraseña a la vez y esperando varios minutos entre dos intentos. El atacante intenta permanecer bajo el radar. Esta aún puede ser una estrategia eficiente para el atacante, si tiene lotes de inicios de sesión de usuarios para probar en lotes de servidores distintos.

Los ataques sin conexión son muy diferentes. En un ataque fuera de línea, el atacante tuvo la suerte de obtener suficiente información para "probar las contraseñas en casa". Por ejemplo, a través de un ataque de inyección SQL , el atacante tomó una copia de las contraseñas de hash para mil usuarios de un sitio determinado . Luego, el atacante puede proceder a "probar" las contraseñas mediante el uso de hash de cada contraseña potencial y ver si la versión con hash coincide con la tabla de la base de datos que previamente había robado. Todo esto ocurre en la PC del atacante, sin ninguna red, y nadie más está al tanto del esfuerzo de craqueo.

Los ataques sin conexión son una preocupación mayor que los ataques en línea porque en un ataque sin conexión, los atacantes están limitados solo por su capacidad de cómputo disponible; no hay un servidor honesto que pueda limitar arbitrariamente la velocidad a la que pueden intentarse las contraseñas. Con las funciones de hashing simples, los atacantes pueden probar miles de millones de contraseñas por segundo, con hardware de consumo estándar (una PC con una GPU grande y de clase de juego). Hay medidas de mitigación pero no son perfectas (son compensaciones relativamente caras). Es mucho mejor evitar los ataques sin conexión en primer lugar (es decir, revisar sus sentencias de SQL, ¡maldita sea!).

    
respondido por el Thomas Pornin 30.07.2013 - 22:11
fuente

Lea otras preguntas en las etiquetas