Login en Linux y caracteres no imprimibles

En una de las preguntas que teníamos que hacer en clase para un ejercicio de la asignatura de Seguridad Informática, se nos preguntaba acerca de las contraseñas en Linux (expiraciones, limitaciones, …) Al final resultó ser más entretenido que un simple y típico chequeo, con un final interesante y curioso, al menos para mi, es por eso que lo publico. He buscado un poco y no he visto ningún documento que lo recoja, así que me parecía interesante escribirlo.

Toda la historia tiene como centro al comando passwd, que es el que nos permite cambiar la contraseña de nuestro usuario actual. Su funcionamiento es simple: escribimos passwd, introducimos la contraseña actual, e introducimos dos veces la nueva contraseña. Nada nuevo.

Hay varios conjuntos de contraseñas que no podemos poner, ya porque sean simples, fáciles, etc. De hecho, estos son algunos de los errores que nos pueden dar si tratamos de introducir algunas contraseñas.

Este es un extracto del man del passwd.

Then, the password is tested for complexity. As a general guideline,
passwords should consist of 6 to 8 characters including one or more
characters from each of the following sets:

·   lower case alphabetics
·   digits 0 thru 9
·   punctuation marks

Care must be taken not to include the system default erase or kill
characters.  passwd will reject any password which is not suitably
complex
.

Tal y como pone, nos podriamos imaginar que el passwd tiene las restricciones que ahí nos puede hacer entender que tiene. Sin embargo, lo interesante viene cuando lo hacemos con el sudo. En este caso, básicamente, se lo traga absolutamente todo. Fuimos probando los palíndromos que antes no nos dejaba poner, y signos raros, y si, se podía meter de todo.

El caso es que, después de probar a meter todo tipo de símbolos, probamos incluso a teclear Esc, RePag, AvPag.. y sorpresa, también se los tragaba. Es decir, podíamos tener un usuario que para loguearse necesitara que introdujeses 7 veces Esc. ¿Qué “problemas” trae esto? Principalmente, que en el entorno gráfico es imposible loguearte. No hay manera de introducir esto, pues cuando le damos a Esc, deselecciona el usuario, y con AvPag y demás, simplemente no mete nada.

Lo primero que pensamos fue que no tenía nada sentido, ya que cuando estamos en el entorno gráfico de un sistema operativo o incluso en la propia terminal, si pulsamos Esc no pasa absolutamente nada. Pero me vinieron a la mente el concepto de los caracteres no imprimibles, y buscamos en una tabla ASCII a ver.

Y exáctamente ahí lo teníamos. Esc es un carácter no imprimible, y de alguna forma se metía. Importante decir que los caracteres no imprimibles se los traga sin el sudo.

Después de llegar a esta conclusión, comprobamos esta teoría de manera muy sencilla.

cat > prueba
Ahí pulsamos Esc una vez, y luego lo cerramos. Abrimos con el vi, lo ponemos para que se muestre en hexadecimal (:!%xxd) et voilá. Ahí tenemos a nuestro 1B (Esc).

Como curiosidad y con respecto al error del palíndromo. Un palíndromo es una palabra que se lee igual a ambos lados. Insisto en el concepto palabra, porque si ponemos de contraseña 3avpag+2repag+3avpag no nos dice que sea un palíndromo (aunque técnicamente lo sería). Si después de tener esta contraseña se nos ocurre escribir 2repag+3avpag, nos salta el error de “New password is just a wrapped version of the old one”. Si todo esto lo hacemos con letras (sin ser un palíndromo) nos diría “New and old password are too similar”. Curioso ¿no?

Leave a Reply

Your email address will not be published. Required fields are marked *