La respuesta a esto depende en gran medida del caso de uso: consideremos un formulario en línea para iniciar sesión en un sitio web como ejemplo.
Cuando vea una forma visual, verá bonitos cuadros en los que puede escribir texto; presiona el botón y envía la combinación de usuario / contraseña ingresada al servidor para su validación.
Lo que sucede detrás de escena es un poco diferente: su navegador muestra un código que originalmente se parece a:
- ¿Cuáles son los diferentes tipos de malware?
- ¿Cómo piratean los hackers todo lo que necesitan?
- ¿Cuáles son las ventajas / desventajas de usar un token de seguridad física?
- ¿Existe un ejemplo en tiempo real en el que se hayan utilizado técnicas criptográficas para evitar amenazas de seguridad?
- ¿Debo abandonar mi curso de seguridad cibernética?
Representa esto como un cuadro para ingresar su nombre de usuario, uno para su contraseña y un botón para enviar. Cuando hace clic en enviar, su navegador envuelve lo que ingresó y lo envía al servidor en un formato como este:
POST /authenticate.php
HTTP / 1.0
Tipo de contenido: application / x-www-form-urlencoded
Longitud del contenido: 64
nombre de usuario = texto + usted + ingresó y contraseña = texto + usted + ingresó + por + contraseña
Sin embargo, su navegador no es nada especial: puede escribir una secuencia de comandos para enviar esa misma solicitud al servidor y luego captar su respuesta; ya sea un “acceso otorgado” o un “acceso denegado”.
Entonces envías uno con:
nombre de usuario = algunos + conocido + nombre de usuario y contraseña = aaaaaaaa
seguido por:
nombre de usuario = algunos + conocido + nombre de usuario y contraseña = aaaaaaab
Y repita hasta que obtenga la respuesta de “acceso otorgado”. Estoy comenzando con 8 caracteres aquí, asumiendo que el sitio web en cuestión impone una longitud mínima de contraseña de 8 caracteres.
Por supuesto, podemos usar 26 letras + 26 letras mayúsculas + 10 números + 28 símbolos, para un total de 90 opciones posibles, para cada uno de los 8 caracteres. Esto significa que, en el peor de los casos, tenemos que probar [matemáticas] 90 ^ 8 [/ matemáticas] o 4304672100000000 combinaciones diferentes. – ¡y eso supone que solo tiene 8 caracteres de longitud! Esto llevaría mucho tiempo (136 mil años si podemos probar 1000 combinaciones por segundo), por lo que es poco probable que alguien pueda descifrar su contraseña con este método.
Sin embargo, es mucho más probable que alguien use una palabra común como “poundcake” o “fútbol” como contraseña, que “R5 * [correo electrónico protegido] (;” o alguna otra cadena aleatoria de caracteres. Ingrese un diccionario ataque : intente un montón de contraseñas basadas en palabras comunes, o incluso mejor, contraseñas de uso común.
Las 10 contraseñas más comunes son:
contraseña
123456
12345678
1234
QWERTY
12345
continuar
coño
béisbol
fútbol
(fuente: danielmiessler / SecLists)
No son muy creativos, ¿verdad? Si prueba solo estos 10, tiene entre un 1% y un 5% de posibilidades de ingresar a cualquier cuenta, dependiendo del sitio. Si prueba los 10,000 en esa lista, tiene aproximadamente un 30% de posibilidades. Usando la misma métrica que la anterior, si podemos probar 1000 por segundo, esto nos llevará – ¡10 segundos!
Esto debería ilustrarle la importancia de usar buenas contraseñas. Largo, poco común, y arrojando algunos símbolos o mayúsculas allí.
Por supuesto, los sitios web se están volviendo más inteligentes; bloquearán una dirección IP si lanza demasiados intentos de inicio de sesión fallidos. Los piratas informáticos contrarrestan esto mediante el uso de botnets con miles de IP, enmascarando sus identidades con ataques reflexivos, etc. Es un juego de grandes felinos y ratones, pero lo anterior es lo esencial.