El archivo etc/passwd

El archivo etc/passwd contiene una serie de líneas formadas por campos separados por dos puntos: Cada línea guarda información de un usuario y tiene un formato como el siguiente:

 

</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Nombre_us:clave:us_ID:grupo_ID:coment:dir_inicio:proa_inicio</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">

 

“nombre_us” es el nombre de usuario o nombre de login que damos cada vez que entramos, y debe tener entre uno y ocho caracteres.

 

“clave” es el campo correspondiente a la palabra clave o clave de acceso, que está encriptada por el sistema.  En el caso de Linux aparece una x porque la palabra clave encriptada reside en el archivo /etc/shadow.

 

“us_ID” es e número de identificación de usuario. El número 0 corresponde a root.

 

“grupo-ID” es el número de identificación de grupo. Este número se asocia a una línea o entrada en el archivo /etc/group.

 

“coment” En el aparecerá un comentario sobre el usuario, tal como su nombre completo, número de teléfono, dirección, etc.

 

“dir_inicio” es el camino completo del directorio de inicio (home) del usuario al que acederá cada vez que inicie una sesión.

 

“proa_inicio” corresponde al programa que se debe ejecutar cada vez que entre el usuario al sistema. Generalmente, este programa será el shell con el que queremos trabajar.

El sistema de contraseñas Shadow

En algunos sistemas UNIX el archivo /etc/passwd contiene, entre otras cosas, la contraseña del usuario codificada según una palabra clave que establece el usuario con el programa “passwd”. De esta forma, aunque alguien pueda leer el archivo /etc/passwd, no podrá averiguar las contraseñas de ningún user, y mucho menos la del administrador.

 

La codificación de la contraseña se hace utilizando un sistema de único sentido (one way hash function), de forma que es muy sencillo codificar la clave conociendo la contraseña, pero muy difícil  de decodificar si ésta no se conoce. Cuando un user accede al sistema proporciona su contraseña codificada que se encuentra en /etc/passwd.

 

A pesar de que ya hemos dicho que el proceso inverso es difícil, existen técnicas criptográficas al alcance de cualquiera que permiten obtener la clave a partir de la clave codificiada. Además en un sistema con muchos usuarios, es fácil que un gran número de ellos haya elegido contraseñas débiles, es decir, contraseñas basadas en palabras que aparecen en diccionarios.La solución a este problema sería que el archivo /etc/passwd no fuera legible por ningún usuario, a excepción de root, pero es no e sposible porque una orden tan sencilla como ls –l necesita acceder al archivo para averiguar el nombre de ususario dado un UID, por lo tanto con estas premisas solo nos queda una solución: almacenar la contraseña codificada en otro archivo al que sólo root y algunos pocos programas autorizados (p.e passwd) puedan acceder.

 

Este archivo es /etc/shadow.

Protocolos de red inseguros

Bueno para empezar podemos nombrar SSHv1, vulnerable al ataque de intermediario con la herramienta sshmitm de Dsniff), y los valores hash de autentifiación LM/NTLMv1 de Windows.

 

La manera más frecuente de reventar valores hash LM/MTLMv1 es utilizar L0phycrack, pero en sistemas Unix podemos usar :

 

$readdsmb <archivo de salida >

 

 

Para recopilar valores hash y aplicar nuestro bien querido y famoso Jhon the Ripper:

 

$jhon –format:LM

 

O  Mdcrack:

 

$mscrack –M NTLM1

 

 

Contra el archivo conseguido para lograr romper sus passwords.

Algoritmos hash de un solo sentido

Al contrario de lo que ocurre con la codificación o el cifrado, la salida de los algoritmos de un solo sentido no puede ser descifrada con algoritmos complementarios, para obtener la información original.

 

En parte esto es así, porque el algoritmo genera un resultado bastante más pequeño que su entrada, pero por el contrario un buen algoritmo produce una única “huella digital” para cada entrada, es decir, dos contraseñas diferentes o dos ID de sesión distintos nunca generarán el mismo hash como resultado a devolver. Por eso, el uso principal de los algoritmos hash es el de producir mensajes “síntesis” o “códigos de autentifiación”.

 

Al igual que se utiliza una suma de comprobación para evitar errores en los datos, una aplicación puede utilizar el hash de un valor para verificar que su contenido no ha sido manipulado en tránsito.

 

Dos de los algoritmos más utilizados en las aplicaciones Web son el MD5 el el SHA-1, enormemente conocidos en la actualidad por su robusteza y seguridad antes cualquier tipo de ataque, y como no, Perl proporciona módulos para los dos algoritmos citados anteriormente.

 

Determinar el contenido de un valor del que conocemos su hash es maás difícil, porque necesitamos técnicas de fuerza bruta.