Revista Informática

Cómo auditar nuestras contraseñas Linux con John

Publicado el 10 marzo 2016 por Drassill
La necesidad de usar contraseñas seguras es un hecho hoy en día y el no hacerlo conlleva grandes riesgos... es por eso que tenemos que ser cuidadosos a la hora de establecer éstas. Actualmente las contraseñas son consideradas como un método de seguridad burdo y poco efectivo, ya que si se usa una muy corta puede ser adivinada por fuerza bruta, mientras que si pones una demasiado complicada corres el riesgo de olvidarla ,a menos que se use un método o un gestor de contraseñas en el que se almacenen éstas (confiando la integridad de tus contraseñas a la seguridad de dicho gestor), pero sigue siendo el método de autenticación predominante; especialmente en entornos orientados al usuario final; en entornos más orientados a servidores lo mejor sería el uso de claves pre-compartidas RSA. El post de hoy está diseñado para que uno pueda comprobar lo seguras que son nuestras contraseñas; ojo, este post no está creado para usos malignos, sino como un método con el cual podemos auditar la seguridad de nuestras contraseñas; para ello usaremos una herramienta muy conocida en el mundo de la seguridad, denominada John the Ripper.
Password_john
Para auditar la fortaleza de nuestras contraseñas habría que centrar nuestra atención en un solo fichero muy conocido llamado /etc/shadow, fichero que almacena nuestras contraseñas, aunque obviamente estas se encontrarían cifradas, cifrado que puede ser consultado/modificado con facilidad en caso de conocer las contraseña en cuestión. Aún así hemos de suponer que no conocemos éstas, o que al menos queremos fingir que no las conocemos, con lo que partiríamos de la base de que únicamente poseemos el fichero shadow; ¿Qué hacemos con éste? Lo e indispensable para ejecutar nuestra tarea con éxito, sería tener primero la herramienta John the Ripper instalada, ya que ésta no se encuentra por defecto instalada en ningún sistema operativo, pues es una herramienta con un propósito muy concreto y muy orientado a la seguridad. Al ser una herramienta incluida por defecto en nuestros repositorios solamente tendríamos que ejecutar uno de estos dos comandos:
En Debian:apt-get install johnEn Red Hat:yum install john
Con la utilidad instalada ya podríamos pasar a usarla sin problema alguno; si bien ésta nos ofrece diferentes posibilidades dependiendo lo que le especifiquemos... Por defecto John está preparado para tener el siguiente comportamiento:
  1. Prueba con variantes del nombre del usuario; por ejemplo si un usuario se llama ivan, probaría ivan, ivan1234, etc... ¡Este es el motivo principal por el que el nombre del usuario y el de la contraseña NUNCA deben de ser los mismos!
  2. Prueba a hacer un ataque de diccionario; dicho diccionario sería el que posee por defecto Jhon the ripper y no solo probaría con las palabras del diccionario, sino con sus variantes (Ej: purple, Purple,etc...); si la palabra usada en la contraseña es muy "obvia", el diccionario lo detectará en cuestión de minutos e incluso segundos. Los diccionarios que usa por defecto John se almacenan en: /var/lib/dictionaries-common/wordlist.
  3. Repite el mismo procedimiento para todos los usuarios que encuentre en el fichero shadow.
El comando base que hace que John actúe de dicha forma sería el siguiente:
john /etc/shadow
El problema de este uso por defecto es que al tener que revisar las contraseñas de todos los usuarios y al tratar con usuarios con diferentes niveles de complejidad en sus contraseñas, el proceso puede ser muy largo, con lo que tenemos dos opciones: La primera sería detener el proceso mediante la combinación ctrl + c, y retomar el proceso cuando nos sea conveniente mediante el comando:
john -restore
Dicho comando seguiría buscando allí por donde nos detuvimos, evitando que tengamos que tener el equipo todo el día encendido; cosa bastante probable (o que debería ser probable). Aún cuando lo normal es que el proceso tome un considerable número de días, podemos reducir el número de éstos considerablemente si focalizamos nuestros esfuerzos en un solo usuario. como por ejemplo root (el más "interesante"). Esto se puede hacer especificando el usuario mediante el parámetro -user:usuario, antes de especificar el fichero que deseásemos "revisar". Basándonos en el comando anterior y en que queremos centrar los esfuerzos en root, podemos crear esta sentencia:
john -user:root /etc/shadow
Si hemos hecho las cosas bien y hemos puesto una contraseña segura, no tendríamos que tener exito en nuestra tarea; pero esto no nos garantiza que nuestra contraseña sea lo suficientemente segura; el diccionario usado por defecto por John the Ripper es bastante "básico", y a veces necesitamos usar diccionarios externos que hayamos descargado por ahí; he aquí una lista de algunos sitios desde los que podemos bajarnos algunos diccionarios más completos. Si queremos usar exactamente un diccionario en concreto, tendríamos que escribir el parámetro -wordlist:ruta_diccionario, diccionario que sería aconsejable almacenar junto con el resto de diccionarios que ya tenemos:
john -user:root -wordlist:/var/lib/dictionaries-common/wordlist/especial /etc/shadow
Si queremos "jugar" con las variables de las diferentes palabras del diccionario (mayúsculas, minúsculas, etc...) tendríamos que añadir la regla -rules.
john -user:root -wordlist:/var/lib/dictionaries-common/wordlist/especial -rules /etc/shadow
Tras finalizar el proceso de crackeo, tendríamos que dirigirnos al directorio .john, almacenado dentro de la carpeta home de cada usuario. Allí veremos varios ficheros: john,log y john.pot; si el segundo esta vacío, enhorabuena, la contraseña es segura; en caso contrario uno tendría que preocuparse y cambiar la contraseña lo antes posible por otra más segura. Lo ideal sería que toda contraseña cumpliese con estos requisitos:
  1. Longitud mínima de 8 caracteres.
  2. Caracteres Numéricos.
  3. Caracteres especiales (@,#,&...).
  4. Uso de mayúsculas y minúsculas.
  5. Si vives en España, muy recomendado usar la ñ, ya que con ella evitas muchísimos diccionarios.
  6. Evasión de parecido alguno con el nombre del usuario.

Tal vez la auditoría de nuestras contraseñas parezca una tarea mundana y sin importancia y que más de uno piense que su contraseña es segura, pero creedme cuando os digo que merece la pena hacer la prueba; ¡Os puede dar más de una sorpresa! 
Esto sería todo por hoy; como siempre, espero que os haya resultado útil.
Saludos.

Volver a la Portada de Logo Paperblog