Password Cracker, lo que debes saber

Share this…

Los expertos en seguridad informática dijeron que, en muchos casos, lo que separa a los administradores de los usuarios normales no es más que el conocimiento de una contraseña. No suena glamoroso y de hecho es tan ruidoso como se puede esperar, pero en la mayoría de los casos los ataques de fuerza bruta son la manera más práctica y fácil de entrar en los sistemas al aprovechar las malas prácticas de administración de contraseñas.

Las aplicaciones web y los servicios web son particularmente vulnerables a los ataques de contraseña bruteforce. Este tipo de software es relativamente fácil de acceder, es abundante, está disponible de forma remota de manera predeterminada y, sobre todo, es personalizado y está sujeto a cambios constantes para mantenerse al día con los últimos avances en tecnologías web.

Autenticación básica

Desde los primeros días de la World Wide Web, Basic Authentication y algunas de sus variaciones, como Digest Authentication, NTLM, etc., es el estándar de facto para la autenticación. No es ningún secreto que la Autenticación básica es suficientemente insegura para ser usada con propósitos prácticos, pero esto no impide que los desarrolladores utilicen este esquema de autenticación para proteger con contraseña las interfaces de administración de enrutadores, servicios web, interfaces administrativas y mucho más. Una de las razones por las que está tan extendida es porque Basic Authentication es relativamente fácil de implementar ya que todo el esquema de autenticación se transmite en un encabezado especialmente construido, que contiene tanto el nombre de usuario como la contraseña codificados en formato base64.

Los expertos en seguridad informática preparan un ataque brutforce contra un aviso básico de autenticación. Abra el Fuzzer de AppBandit o el Fuzzer del paquete en línea y configure algunos parámetros. En primer lugar, debemos configurar el encabezado Authorization y luego tenemos que agregar el elemento Basic Authentication, que se creó a propósito para esta tarea específica.

pass craker

Para el nombre de usuario, los profesionales usarán una lista de cuentas conocidas. También pueden usar un diccionario común de algunas bases de datos conocidas.

pass craker 1

Para la contraseña, los profesionales utilizarán un diccionario real. AppBandit y Fuzzer vienen con sus propios diccionarios. En cambio, ambas herramientas pueden descargar e incluir archivos de diccionario proporcionados por la comunidad. Agregue un elemento del diccionario del menú desplegable y simplemente busque “contraseña” y encontrará la lista de varias colecciones de muchos tipos de listas de contraseñas más comunes y la lista de contraseñas reales extraídas de violaciones de datos pasadas conocidas.

pass craker 2

Asegúrese de aumentar las solicitudes paralelas máximas a 60 o más y reducir el tiempo de espera a aproximadamente 5 segundos para aumentar el rendimiento del ataque. Efectivamente, pronto los profesionales posteriores encontrarán la contraseña correcta simplemente monitoreando los códigos de respuesta como se ilustra en la captura de pantalla a continuación.

pass craker 3

Autenticación basada en PIN

Muchas aplicaciones, especialmente las aplicaciones móviles, utilizan lo que se conoce como autenticación basada en PIN, es decir, la autenticación con un código de 4 a 6 dígitos. La autenticación de dos factores basada en la generación de tokens enviados a través de correo electrónico o SMS también se incluye en esta categoría porque a menudo se implementa incorrectamente. Huelga decir que los PIN proporcionan baja entropía para ser considerados seguros. Los pernos de refuerzo, ya sea que decida aplicarlos brutalmente secuencialmente o al azar, es sencillo.

Los investigadores en seguridad informática preparan el ataque contra un servicio JSON ficticio. Configure la solicitud para que el servicio lo considere válido. En el cuerpo, usaremos una cadena de elementos para codificar correctamente el generador para el pin. Primero, necesitamos el codificador JSON para citar el valor. También necesitamos un elemento de Formato para rellenar el valor con la longitud correcta del pin. Esto es útil para el siguiente paso.

pass craker 4

El elemento de la almohadilla contiene un contador simple, es decir, para el ciclo. El contador va de 0 a 9999 con el paso 1. La razón por la que usamos el pad es que solo los números de 4 dígitos se consideran pines válidos. Necesitamos agregar ceros adicionales delante del número para cubrir todos los pines comenzando con cero para hacer un pin de cuatro dígitos. Podemos usar la misma técnica para los pines de 6 y 8 dígitos también.

pass craker 5

Configure las opciones de ataque como desee, es decir, un mayor número de solicitudes concurrentes y un tiempo de espera reducido. Ejecuta el ataque. A diferencia del ejemplo de fuerza bruta de Autenticación básica, que vimos anteriormente, que proporciona un mecanismo sencillo basado en el código de estado para diferenciar intentos válidos de inválidos, este tipo de ataque depende completamente de la aplicación, por lo que debe crear su propia heurística. También es posible clasificar las respuestas según cuánto tiempo haya tardado en volver.

Este mismo ataque se puede configurar para la autenticación basada en formularios e incluso la Autenticación básica. Solo necesita mover el generador al lugar deseado.

Autenticación basada en formularios

Huelga decir que la autenticación basada en formularios es el tipo más común de esquema de autenticación en la web. Prácticamente cualquier aplicación PHP implementa uno – la mayoría del tiempo mal. Si se implementa correctamente, la autenticación basada en formularios debe ser flexible para los intentos automáticos de adivinar contraseñas, pero aunque parezca simple, esto no es fácil en los escenarios del mundo real, ya que hay muchos casos de esquina que requieren un tipo específico de manejo.

Para configurar un ataque de fuerza bruta de autenticación basada en formularios, debemos seguir los mismos pasos con el ejemplo de Autenticación básica. Esta vez no utilizaremos el encabezado Autorización, pero tendremos que seguir la configuración de los parámetros que espera la aplicación. Podemos capturar esa información primero con AppBandit Proxy o herramientas como HTTPView, que funcionan directamente desde su propio navegador sin configuración adicional.

Los investigadores en seguridad informática pueden ser bastante listos, especialmente si el nombre de usuario es un correo electrónico y queremos abarcar más terreno.

Así que configuremos un generador para nuestra lista de usuarios. Primero, definiremos algunas variables para que el ataque sea mucho más configurable.

pass craker 6

Los profesionales de seguridad informática generan dinámicamente la dirección de correo electrónico.

Ahora agreguemos las 100 contraseñas más comunes de la misma lista.

pass craker 7

Una vez que se está ejecutando el ataque, debe vigilar la tarea en ejecución en busca de pistas que indiquen un intento de inicio de sesión válido. Para la mayoría de las respuestas, los profesionales obtendrán el mismo resultado. Aquellas solicitudes que contienen credenciales válidas se diferenciarán de varias maneras, como discutimos anteriormente. Necesitas idear tu propia heurística. La mayoría de estos escenarios están cubiertos por los filtros incorporados.

Advertencias de autenticación

Los sistemas de autenticación web son divertidos en el sentido de que nunca pueden ser perfectos. Si son demasiado seguros, serán inaccesibles. Si son demasiado accesibles, es probable que sean inseguros. Como resultado, de esto, hay una serie de cosas a tener en cuenta al descifrar las contraseñas con cualquiera de las técnicas mencionadas anteriormente.

El bloqueo de cuenta es un mecanismo de defensa común contra los ataques de fuerza bruta, pero se puede convertir a denegación de servicio según la situación. Dado que podemos generar nombres de usuario válidos con alto grado de éxito, esto significa que también podemos bloquear a todos fuera del sistema, es decir, denegación de servicio.

La conversión entre ataques de fuerza bruta horizontal y vertical también es una técnica común. En otras palabras, en lugar de probar muchas contraseñas en una sola cuenta, podemos probar una contraseña contra muchas cuentas dado que podemos enumerar las cuentas o generarlas de alguna manera con alto grado de éxito.

Algunos sistemas de autenticación bloquean ingenuamente los intentos válidos de autenticación si provienen de la misma dirección IP. Más tarde, estos sistemas se refactorizan para tener una serie de excepciones porque se descubre que el espacio de direcciones IPv4 es relativamente pequeño y es probable que muchos clientes tengan la misma IP. Un atacante podría utilizar una de estas redes o engañar a la aplicación para que crean que provienen de redes en la lista de excepciones para eludir las restricciones de bloqueo de la cuenta.

Del mismo modo, si el sistema de autenticación bloquea IP o NETBLOCK en función de la dirección IP del atacante, un ataque de fuerza bruta se puede convertir en denegación de servicio ya que los usuarios de la misma red no podrán iniciar sesión. Los investigadores de seguridad informática dijeron que esto es particularmente importante para las redes móviles ya que es poco probable que el usuario móvil tenga una dirección IP pública dedicada.

Finalmente, solo porque haya reCAPTCHA en la página no significa que se use. Muchas veces está ahí para mostrar.

La des autenticación puede no funcionar, es decir, aunque parezca que el usuario está desconectado, la sesión actual no se destruye. El atacante puede reutilizar las sesiones usadas anteriormente.