¿Cómo calcular tiempos de forzados brutos / viabilidad para que los ataques remotos incluyan el paralelismo?

9

Esto es puramente un ejercicio mental.

Suponga que un servidor no implementa la regulación o el bloqueo en los intentos fallidos. El servidor acepta una solicitud de nombre de usuario / contraseña & envía una respuesta de sí / no. El tiempo de respuesta es de 10 segundos. Usted está tratando de forzar una contraseña en el servidor. Estoy tratando de averiguar cuánto tiempo llevaría a la fuerza bruta decir un PIN numérico de 5 dígitos.

La entropía del PIN sería 10 5 = 100000 Por lo tanto, el tiempo que lleva la fuerza bruta sería 100000/10 = 10000 segundos.

Sin embargo, puede tener un programa multiproceso que envía solicitudes en paralelo. O múltiples programas que se ejecutan al mismo tiempo haciendo el forzado bruto Así que mi cálculo ingenuo no es correcto.

Suponiendo que la máquina del atacante es una computadora portátil típica de hoy (i7, 16 GB de RAM), ¿cómo calculo el tiempo que lleva la fuerza bruta? ¿Existen reglas para esto?

    
pregunta user93353 01.04.2017 - 07:01
fuente

3 respuestas

2

En el mundo real, el principal cuello de botella sería el número de conexiones. La mayoría de las implementaciones de servidores, especialmente los servidores web, limitan esta tasa de frecuencia, no solo por razones de seguridad (para combatir su situación exacta), sino también por razones de intercambio justo de recursos y para frenar a los clientes fuera de control.

Incluso si no lo aceleran, un servidor solo puede manejar un número limitado de conexiones simultáneas.

Por ejemplo, la configuración predeterminada para apache2 se establece en 150 conexiones simultáneas. Ese es el límite difícil para un atacante, y en circunstancias realistas, al menos algunas de esas conexiones estarán ocupadas manejando usuarios legítimos.

Por lo tanto, la respuesta correcta para n depende primero de la implementación de su servidor y, en segundo lugar, de otros factores. Para un escenario simple como el suyo, es trivial escribir un cliente que pueda saturar el servidor con solicitudes, el cliente no será el cuello de botella para ningún atacante medio competente, el servidor será.

    
respondido por el Tom 02.05.2018 - 23:29
fuente
0

Suponiendo que es un servidor mágico:

Tiempo: tiempo por intento

1 hilo significa el tiempo: combinaciones * tiempo / 2

n tiempo medio de subprocesos: combinaciones * tiempo / (2 * n)

    
respondido por el guest 01.04.2017 - 08:01
fuente
0

Por lo general, la forma en que determinaría un valor apropiado de n es determinar cuántos recursos computacionales son necesarios para cada hilo de ataque, luego dividirlo en los recursos que un atacante podría obtener de manera factible. Tradicionalmente, esto significaba tener en cuenta una máquina de escritorio estándar, pero en la actualidad, incluso para los atacantes individuales, la disponibilidad de alquileres de computadoras a través de AWS y fuentes similares ha facilitado el acceso rápido y económico a un poco de potencia informática. Si le preocupan los estados nacionales, entonces el presupuesto que asigna para las máquinas es mayor, pero todo es una estimación.

Entonces, ¿cómo determina exactamente cuántos ataques se pueden ejecutar en paralelo, una vez que haya elegido su hardware? La respuesta más simple es compararla: adquirir ese hardware (o una fracción de él) y ver cuál es el rendimiento. Y asegúrese de registrar su configuración (qué hardware, específicamente, qué sistema operativo, qué versiones de bibliotecas importantes, qué indicadores de compilación utilizó) para que los revisores puedan hacer sugerencias sobre cómo hacer que el proceso de ataque sea más eficiente.

    
respondido por el Xiong Chiamiov 01.04.2017 - 17:08
fuente

Lea otras preguntas en las etiquetas