🔑Password Mutations
Mutaciones de contraseña
Mucha gente crea sus contraseñas según simplicidad en vez de seguridad
. Para eliminar esta debilidad humana que a menudo compromete las medidas de seguridad, se pueden crear políticas de contraseñas en todos los sistemas que determinan cómo debe verse una contraseña. Esto significa que el sistema reconoce si la contraseña contiene letras mayúsculas, caracteres especiales y números. Además, la mayoría de las políticas de contraseñas requieren una longitud mínima de ocho caracteres en una contraseña, incluida al menos una de las especificaciones anteriores.
En las secciones anteriores, adivinamos contraseñas muy simples, pero se vuelve mucho más difícil adaptar esto a sistemas que aplican políticas de contraseñas que obligan a crear contraseñas más complejas.
Desafortunadamente, la tendencia de los usuarios a crear contraseñas débiles también ocurre a pesar de la existencia de políticas de contraseñas. La mayoría de las personas/empleados siguen las mismas reglas al crear contraseñas más complejas. Las contraseñas suelen crearse en estrecha relación con el servicio utilizado. Esto significa que muchos empleados suelen seleccionar contraseñas que pueden tener el nombre de la empresa en las contraseñas. Las preferencias e intereses de una persona también juegan un papel importante. Pueden ser mascotas, amigos, deportes, pasatiempos y muchos otros elementos de la vida. La recopilación de información OSINT
puede ser muy útil para obtener más información sobre las preferencias de un usuario y puede ayudar a adivinar la contraseña.
Normalmente, los usuarios utilizan las siguientes adiciones a su contraseña para que se ajuste a las políticas de contraseña más comunes:
Descripción | Sintaxis de contraseña |
La primera letra es mayúscula |
|
Añadir números |
|
Añadir año |
|
Añadir mes |
|
El último carácter es un signo de exclamación |
|
Añadiendo caracteres especiales |
|
Teniendo en cuenta que muchas personas quieren mantener sus contraseñas lo más simples posible a pesar de las políticas de contraseñas, podemos crear reglas para generar contraseñas débiles. Según las estadísticas proporcionadas por WPengine , la mayoría de las longitudes de las contraseñas no son superiores
a 10
caracteres.
Entonces, lo que podemos hacer es elegir términos específicos que tengan al menos 5
caracteres y que parezcan más familiares para los usuarios, como los nombres de sus mascotas, pasatiempos, preferencias y otros intereses. Si el usuario elige una sola palabra (como el mes actual), agrega el año actual
, seguido de un carácter especial, al final de su contraseña, alcanzaríamos el requisito de 10 caracteres
de contraseña.
Teniendo en cuenta que la mayoría de las empresas requieren cambios regulares de contraseña, un usuario puede modificar su contraseña simplemente cambiando el nombre de un mes o un solo número, etc. Usemos un ejemplo simple para crear una lista de contraseñas con una sola entrada.
Lista de contraseñas
Podemos utilizar una herramienta muy poderosa llamada Hashcat para combinar listas de nombres y etiquetas potenciales con reglas de mutación específicas para crear listas de palabras personalizadas. Hashcat utiliza una sintaxis específica para definir caracteres y palabras y cómo se pueden modificar. La lista completa de esta sintaxis se puede encontrar en la documentación oficial de Hashcat. Sin embargo, los que se enumeran a continuación son suficientes para que entendamos cómo Hashcat muta las palabras.
Función | Descripción |
| No hace ninguna modificación |
| Todas las letras minúsculas |
| Todas las letras mayúsculas |
| Pone en mayúscula la primera letra y las demás en minúscula |
| Reemplaza todas las instancias de X con Y |
| Añade el carácter de exclamación al final |
Cada regla está escrita en una nueva línea que determina cómo se debe mutar la palabra. Si escribimos las funciones mostradas arriba en un archivo y consideramos los aspectos mencionados, este archivo puede verse así:
Archivo de reglas Hashcat
Hashcat aplicará las reglas custom.rule
para cada palabra de password.list
y almacenará la versión mutada en nuestro mut_password.list
en consecuencia. Por tanto, una palabra dará como resultado quince palabras mutadas en este caso.
Generar wordlist basado en reglas
Hashcat
y John
vienen con listas de reglas prediseñadas que podemos usar para generar y descifrar contraseñas. Una de las reglas más utilizadas es best64.rule
, que muchas veces puede conducir a buenos resultados. Es importante tener en cuenta que descifrar contraseñas y crear listas de palabras personalizadas es un juego de adivinanzas en la mayoría de los casos. Podemos reducir esto y realizar conjeturas más específicas si tenemos información sobre la política de contraseñas y tomamos en cuenta el nombre de la empresa, la región geográfica, la industria y otros temas/palabras que los usuarios pueden seleccionar para crear sus contraseñas. Las excepciones son, por supuesto, los casos en los que se filtran y encuentran contraseñas.
Reglas existentes de Hashcat
CeWL
Ahora podemos utilizar otra herramienta llamada CeWL para escanear palabras potenciales del sitio web de la empresa y guardarlas en una lista separada. Luego podemos combinar esta lista con las reglas deseadas y crear una lista de contraseñas personalizada que tenga una mayor probabilidad de adivinar la contraseña correcta.
Especificamos algunos parámetros, como la profundidad del spidering ( -d
), la longitud mínima de la palabra ( -m
), el almacenamiento de las palabras encontradas en minúsculas ( --lowercase
), así como el archivo donde queremos almacenar los resultados ( -w
).
Generando listas de palabras usando CeWL
Caso de uso
Cree una lista de palabras mutadas utilizando los archivos proporcionados. Utilice esta lista de palabras para forzar la contraseña del usuario "sam". Una vez conseguido, inicie sesión con SSH y envíe el contenido del archivo flag.txt como respuesta.
Escaneo del host
Nos encontramos una máquina con 4 servicios corriendo. Tiene FTP y SSH por lo que vamos a intentar explotar estos servicios con un ataque de contraseñas.
Archivos
Disponemos de estos 3 archivos:
Mutación de password.list
Vamos a utilizar las técnicas recogidas en esta sección para mutar las contraseñas contenidas en password.list
, y para ello vamos a utilizar las reglas definidas en el archivo custom.rule
de la siguiente manera:
Esto nos ha generado una lista muy extensa, lo que al hacer bruteforce a SSH con Hydra tardaría mucho. Vamos a probar con best64.rules
de hashcat:
La lista es considerablemente menor, y este best64.rules
suele ser muy efectivo. Así que vamos a probar a hacer bruteforce con hydra a FTP con el usuario sam
de la siguiente manera:
Encontramos las credenciales de FTP del usuario Sam, por lo que posiblemente nos sirva para conectarnos a otros servicios como SSH:
Conexión por SSH
Encontramos 3 usuarios en este sistema: kira
, sam
y will
. Al acceder a la carpeta sam/smb
obtenemos la flag:
Última actualización