Ataques de contraseñas, password guessing – 1 de 2
Se denomina fuerza bruta cuando se desconoce uno de los dos datos necesarios para autenticarnos, ya sea el usuario o la contraseña y se prueban palabras hasta que se encuentra la válida.
- Diccionario: consiste en un archivo con una lista de las contraseñas más comunes, según un estudio de SkullSecurity.org sobre las contraseñas de rockyou.com, con las 500 palabras más comunes se obtiene un acierto aproximado del 19.82%, con tan solo 100, un 10,34%. El diccionario también puede estar generado a raíz de términos relacionados con lo auditado o utilizando palabras encontradas en sus páginas web u otras fuentes.
- Rango: este método es más lento y no tiene sentido salvo se pretenda encontrar la contraseña de un usuario determinado sin importar demasiado el tiempo y el elevado número de intentos. Consiste en recorrer todas las posibilidades de unas determinadas características. Por ejemplo, todos los números del «000000» al «999999» o todas las combinaciones formadas entre «aaaaaa» a «zzzzzz». Mezclas más complejas como números, minúsculas, mayúsculas y caracteres especiales son posibles aunque poco prácticas en la realidad.
De igual forma se puede hacer sobre la contraseña o sobre el nombre de usuario, aunque los diccionarios cambiarían. La utilidad ncrack incluye algunas listas con nombres de usuario comunes.
- Lentitud: al tratarse de un ataque contra equipos remotos que requiere comprobación mediante ensayo y error la ejecución es lenta, además en ocasiones es necesario añadir tiempos de espera para evitar otros problemas que se describen a continuación.
- Registros: como se lanzan cientos de pruebas los registros del sistema se llenarán rápidamente con múltiples líneas revelando nuestras intenciones. Aunque no es un problema en si, ya que estamos autorizados a lanzar estas pruebas, se pueden generar otros relacionados, como por ejemplo que se llene un volumen de datos y el equipo deje de registrar eventos importantes o inutilice el servicio.
- Medidas preventivas: para evitar este tipo intrusión, los sistemas y aplicaciones en ocasiones implementan algunas medidas preventivas, como por ejemplo el uso de captchas, la prolongación del tiempo hasta que informa de si es incorrecto o no, la inhabilitación o filtrado en el cortafuegos de la dirección IP de origen o el bloqueo del usuario para que no pueda acceder.
- Bloqueo de cuentas: merece especial atención esta medida, ya que una configuración y planificación incorrecta del ataque podría bloquear el acceso a todas las cuentas de la red, dejando completamente inaccesible los sistemas incluso para los administradores.
- Número de intentos antes de bloqueo: con una cuenta de prueba se contarán el número de veces que permite introducir incorrectamente una contraseña antes de bloquear e inutilizar el usuario. El ataque se hará de ese número-1, para evitar la protección y no llegar nunca a bloquear a nadie.
- Duración del bloqueo: en algunos productos si se produce un bloqueo este es desactivado automáticamente una vez ha transcurrido un tiempo. El bloqueo puede ser al usuario o a nuestra dirección IP. Se ha de averiguar si existe este tiempo y que duración tiene para considerarlo y añadir esperas entre los bancos de pruebas.
- Duración antes de que no se considere un nuevo intento: en ocasiones si los intentos de acceso son cada mucho tiempo el contador de intentos no suma la nueva prueba fallida. Esto es útil para jugar nuevamente con los tiempos y añadir tiempos de retardo o probar otros usuarios y otras contraseñas mientras transcurre esa ventana de tiempo.
- Prueba inversa: o user guessing, es un método de evitar bloqueos que funciona en la mayoría de los casos. Consiste en dada una contraseña de uso común, probar nombres de usuario que la hayan utilizado. El mismo proceso pero en orden inverso. Esto lo hicimos y contamos para el caso de Digg con un 2% de acierto aproximadamente con nuestra amada contraseña: 123456
- Reinicio del contador de bloqueo en caso de usuario correcto: se ha de contemplar la posibilidad de que el contador de intentos fallidos se reinicie si se introduce un usuario y contraseña. válido Si fuese así, se probará la fuerza bruta contra un usuario mientras se intercalan accesos válidos con uno de prueba o que ya se haya obtenido.
Para que el ataque este lo más optimizado posible a la plataforma es conveniente conocer la política de usuarios y contraseñas que sigue el servicio analizado. Los factores a controlar son:
- Longitud mínima y máxima de la contraseña: de esta forma el diccionario tendrá que cumplir los requisitos.
- Caracteres obligatorios: así se podrá determinar si es obligatorio algún tipo de combinación y si tiene sentido el uso de un diccionario o no.
- ¿Permite que la contraseña sea igual al usuario?: ya que este tipo de ataque es habitual se debe conocer si se contempla esta posibilidad o no.
Algunas herramientas para este tipo de ataque son ncrack, thc-hydra o medusa. Esta última ha hecho una comparativa sobre las funcionalidades de Hydra y Medusa.
Herramientas y referencias
- CeWL, Custom word List Generator – http://www.digininja.org/
projects/cewl.php - Wyp – http://www.remote-exploit.org/
?page_id=418 - Diccionarios – http://www.skullsecurity.org/
wiki/index.php/Passwords - ncrack – http://nmap.org/ncrack/man.
html - THC-Hydra – http://freeworld.thc.org/thc-
hydra/ - Medusa – http://www.foofus.net/jmk/
medusa/medusa.html
Via: SecurityDefault