¿Cómo de seguras son tus claves? (segundo asalto)

candado

Foto: Carlamercury

Seguimos destripando a John The Ripper (y nunca mejor dicho). En esta ocasión explicaré un poco la estructura y evolución de los archivos de claves de Unix/Linux, porque será con los que trabajemos más adelante.

Originalmente, en estos sistemas, el hash de las contraseñas residía en el archivo /etc/passwd. Pero éste debe tener necesariamente permisos de lectura para todos los usuarios (si no, no serán capaces de iniciar sesión), lo que suponía un problema de seguridad, ya que aunque las claves estuvieran cifradas, cualquiera podía ejecutar programas como John.

Cada línea del fichero /etc/passwd corresponde a un usuario y está dividida en 7 partes separadas por el símbolo “:” con la siguiente información:

usuario:contraseña:ID_Usuario:ID_Grupo:nombre:directorio:shell

Ejemplo:

loretahur:Ejrt3EJUnh5Ms:1000:1000:Lorena Fdez:/home/loretahur:/bin/bash

La primera parte corresponde al nombre de usuario y la segunda, a la clave cifrada. El resto, es sólo información sobre el usuario, su directorio de trabajo,… que no tiene importancia para John puesto que no lo necesita. De hecho, se podría dejar de la siguiente forma (lo importante es la estructura, de forma que john pueda reconocerlo como una clave unix):

loretahur:Ejrt3EJUnh5Ms:a:a:a:a:a

Posteriormente, para mejorar la seguridad, se incluyó un nuevo sistema: el shadowing o sistema de claves fantasmas. Éste consiste en ocultar las contraseñas del archivo /etc/passwd (dejando el campo de la contraseña o bien con “x” o con “*”). Ejemplo:

loretahur:x:1000:1000:Lorena Fdez:/home/loretahur:/bin/bash

Ahora, los hashes de las claves se encuentran en el archivo /etc/shadow, al que sólo tiene acceso el usuario root. Por tanto, ahora para obtener las claves son necesarios los ficheros passwd y shadow. Para hacer nuestras pruebas de calidad de claves, copiaremos estos dos ficheros (y reitero lo de copiar, que luego os cargáis cualquiera de ellos y la liáis parda).

Otra cuestión curiosa de los sistemas Unix es que cifran las contraseñas utilizando como llave de cifrado a la propia contraseña. Con esto se consigue que no pueda invertirse el proceso. Por lo tanto, para poder obtener la clave, John hace lo siguiente: utiliza las palabras de los diccionarios y variaciones de éstas como llaves del DES, comparando el resultado obtenido con la clave cifrada. Si coinciden, ha dado con la clave buscada.

En anteriores capítulos de la saga:

¿Cómo de seguras son tus claves?

Lorena Fernández Álvarez (@loretahur)

Ingeniera salsera. Actualmente, directora de comunicación digital de la Universidad de Deusto. Miembro del grupo experto de la Comisión Europea Gendered Innovations para analizar el impacto de no incorporar la perspectiva de género en la Inteligencia Artificial. Colabora en el programa de radio “Hoy por Hoy Bilbao” de la Cadena SER desde 2009 con una sección sobre nuevas tecnologías. Además, es jurado del premio Ada Byron a la mujer tecnóloga y mentora del proyecto Inspira STEAM, un proyecto que busca el fomento de la vocación científico-tecnológica entre las niñas. Ha creado junto a Pablo Garaizar e Iñigo Maestro el juego de mesa Nobel Run.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *