¿Cómo Brute-Forcer sabe que la contraseña está descifrada para el nombre de usuario de destino?

2

Hay muchos ataques de fuerza bruta (principalmente para el nombre de usuario 'admin') en los sitios de WordPress. Todos estos ataques se realizan automáticamente a través de solicitudes de publicación.

La pregunta 1: ¿cómo Brute-forcer sabe que la contraseña está descifrada para el nombre de usuario de destino?

El brute-forcer intenta las contraseñas típicas como: '12345', 'qwerty', etc. Y a menudo los administradores del sitio tienen un nombre de usuario 'admin' con una contraseña típica y este nombre de usuario se descifra a veces mediante la fuerza bruta. complemento de intentos de inicio de sesión limitado resuelve este problema bastante bien por cierto.

La idea y la pregunta 2: si sabemos con certeza que se trata de un ataque de fuerza bruta (la prueba de JavaScript o la prueba de cookies resuelven esto porque los robots de fuerza bruta no son clientes habituales del navegador) ¿ es un buen método para decirle nada a Brute-forcer incluso si la contraseña se eligió correctamente?

Discusión sobre WordPress.org foro .

Actualización: Desarrollé complemento de protección de seguridad . El complemento agrega una cookie en la pantalla de inicio de sesión y comprueba si esta cookie existe en la solicitud POST. Si no existe una cookie, entonces se trata de una solicitud de fuerza bruta y el intento de inicio de sesión se bloquea incluso si el nombre de usuario y la contraseña son correctos. El complemento envía las cookies de inicio de sesión falsas de WordPress al robot de fuerza bruta y las redirige a la sección de administración para emular que la contraseña está descifrada y muchos forzadores de fuerza detienen sus ataques después de esto. Es realmente impresionante :)

    
pregunta webvitaly 21.02.2013 - 22:54

3 respuestas

7

Las credenciales de inicio de sesión se procesan en wp_signon() , y si son válidas, wp_set_auth_cookie() enviará una cookie en el cuerpo de la respuesta HTTP.

El nombre de esa cookie se establece en una constante denominada SECURE_AUTH_COOKIE o AUTH_COOKIE . Ambos nombres comienzan con wordpress_ .

Pero no tienen que hacerlo. Puedes definir estas constantes en tu wp-config.php y agregar una capa de oscuridad, para que el atacante no esté realmente seguro de si es la cookie regular.

Puede agregar otra capa: enganche en la acción 'wp_login_failed' y envíe una cookie que realmente comience con wordpress_ . Podrías llamarlo wordpress_logged_in por ejemplo. No hace nada, y no hará que tu blog sea más seguro ... pero no duele.

Por otro lado: WordPress enviará un encabezado location y redirigirá al usuario después del inicio de sesión a otra página. Eso es fácil de detectar y más difícil de eludir.

Una verificación adicional que uso en muchos sitios ahora: agregue una nueva casilla de verificación al formulario de inicio de sesión por JavaScript con un nombre único por sitio y solicite que se marque. Si no se marca, la respuesta siempre será una página en blanco, incluso si la contraseña es correcta . Puede obtenerlo en GitHub: Campo de registro único T5 .

    
respondido por el fuxia 21.02.2013 - 23:57
2
  

¿es un buen método para no decirle nada a la fuerza bruta incluso si la contraseña se eligió correctamente?

No. No hará ninguna diferencia para el pirata informático sofisticado, y para el propietario del sitio es lo mismo si puede ser pirateado 10 veces por guiones o por un profesional.

  

¿Cómo Brute-Forcer sabe que la contraseña está descifrada para el nombre de usuario de destino?

Si estuviera haciendo esas cosas, simplemente intentaría acceder a examle.com/wp-admin y verificar si me redireccionan a la página de inicio de sesión.

De todos modos, la suposición de que las personas que inician sesión solo desde los navegadores es falsa. Desde 3.5, XML-RPC está habilitado de forma predeterminada y no necesita ningún JS o cookies para intentar iniciar sesión con él. Cualquier cambio que realice en la forma en que funciona XML-RPC probablemente romperá todas las aplicaciones de publicación que utilizan el protocolo.

    
respondido por el Mark Kaplun 22.02.2013 - 06:44
2

Estás viendo este problema desde la perspectiva incorrecta. Cualquier cosa que hagas que impida efectivamente que un bot ejecute un intento de iniciar sesión en tu cuenta también evitará que un usuario general. Cualquier cosa que un humano pueda hacer, un programa bien escrito también puede hacer (y hacerlo más rápido). Se debe enviar una cookie válida al iniciar sesión correctamente y es trivial que un programa pruebe si alguna de las cookies devueltas es válida o no, incluso si envía cookies ficticias si falla o algún método similar.

Dicho esto, una solución muy efectiva para prevenir los intentos de inicio de sesión de fuerza bruta es usar un complemento que evite más de x el número de inicios de sesión en un período de tiempo determinado. Limitar los intentos de inicio de sesión es un complemento agradable que mucha gente usa y lo hará por usted (y tu pregunta sugiere que ya habías considerado esta opción).

La razón por la que limitar los intentos de inicio de sesión evitará la fuerza bruta es que ningún usuario intentará iniciar sesión 100 veces seguidas si es el usuario real, pero un robot intentará miles y miles de veces. Cualquier contraseña decente será completamente imposible de descifrar dentro de la vida si limita los intentos a 5 por hora (o cualquier otro número razonable).

Sé que esto no responde a tu pregunta, pero espero que te proporcione una mejor dirección.

Todo lo mejor!

    
respondido por el Dan 17.04.2013 - 22:11

Lea otras preguntas en las etiquetas