Comprometiendo seguridad a través de GRUB

En este post vamos a ver cómo podemos comprometer la seguridad de un pc con acceso físico al mismo, para ello utilizaremos el archiconocido gestor de arranque GRUB.

Bien, por una parte veremos cómo con presionar una tecla podríamos obtener bastante info de la máquina, y por otra parte, nos saltaremos el password de acceso a un sistema GNU/Linux.

Situémonos, una vez aparezca ante nosotros la pantalla del grub, nos posicionamos sobre la entrada del sistema operativo Linux que queremos iniciar.

Si pulsamos la tecla ‘c’, se nos abre una consola con el prompt ‘grub’, si escribimos ‘help’ obtendremos una lista de comandos que podemos utilizar, entre ellos están ‘ls’ y ‘cat’, que nos pueden ofrecer bastante info.

Lo primero que podemos hacer es un ‘ls’ , como resultado se nos muestran las particiones del equipo, para poder acceder al contenido de una de ellas, escribiremos lo siguiente:

ls -l (hd0,msdos6)/home/user1/Escritorio

Con esta línea estaríamos visualizando los ficheros que el usuario ‘user1’ tiene en su Escritorio, algo poco recomendable en un servidor de una compañía, ¿verdad?, aquí tenéis un ejemplo:

ls

Sigamos, al principio del post comenté que nos podríamos saltar la petición de login de un sistema GNU/Linux y tener acceso como root, para ello, sobre la entrada del S.O. en el grub, pulsamos la letra ‘e’ para editar la línea.

Cuando pulsemos, nos aparecerá una pantalla mostrando diferentes opciones de arranque, nosotros arrancaremos el kernel en modo lectura/escritura, monousuario y ejecutaremos /bin/sh.

Para ello, nos situamos sobre la línea que contiene la palabra ‘boot’ y después de la opción ‘root’ añadimos lo siguiente:

rw single init=/bin/sh

Si ahora pulsamos F10 (para arrancar el sistema), nos aparecerá una línea de comandos con el prompt #, ¡YA TENEMOS ACCESO COMO ROOT A LA MAQUINA!

whoami

No ha sido difícil, y cualquier atacante con acceso físico a la máquina y con un par de minutos tendría acceso root a nuestro pc, servidor de empresa, o cualquier dispositivo con grub.

Ahora simplemente podríamos cambiar la pass del usuario root (o cualquier otro) y loguearnos en el sistema como lo hacemos normalmente.

¿Qué podemos hacer para remediarlo?, pues bien, hay diversas opciones, tal y como se detalla en esta página: securizar-grub

Nosotros nos centraremos en una, en grub podemos crear usuarios y roles, por lo que crearemos un usuario que sea el que tenga acceso a editar las opciones de grub, para ello, tendremos que editar el fichero /etc/grub.d/40_custom , quedando así:

custom

con superusers indicamos que el usuario escrito a continuación será el único con acceso a modificar grub, en la línea de abajo pondremos la contraseña, se puede indicar en texto plano y mediante un hash (GRUB2 usa pbkdf2, GRUB md5), yo lo haré mediante hash, puedes generar uno escribiendo la siguiente línea en la consola:

grub-mkpasswd-pbkdf2

pbkdf2

Por último, debemos hacer un sudo uptade-grub para que los cambios surtan efecto, ahora comprobamos si podemos volver a editar la línea en el grub, ¡NO!, nos aparece lo siguiente:

login

Como vemos, estaríamos complicando la vida a un posible atacante, o, simplemente, nadie que no conozca la contraseña podría incluso llegar a la pantalla de login.

Espero que os sea de utilidad

HackSaludos!

Fuente: Hardening de servidores GNU/Linux

Acerca de Darkvidhck

Estudiante de ingeniería informática, haciendo mis pinitos como desarrollador web, programador, gamer y Linuxero. Aficionado a la seguridad. Eterno viciado al conocimiento.
Esta entrada fue publicada en Linux en general, Seguridad y etiquetada , , , , . Guarda el enlace permanente.

2 respuestas a Comprometiendo seguridad a través de GRUB

  1. Tali dijo:

    Para no sufrir de esta vulnerabilidad podríamos hablar de dos opciones. La primera todo servidor de una compañía que se respete lo tiene bajo llave. Por tanto el acceso físico estaría en principio solventado y el problema resuelto. Pero como no hay nada imposible lo mejor sería además de esto y tratándose de un servidor NO instalar GRUB dado que es un servidor y no necesitamos arranque dual. Ahora si problema resuelto.

  2. AMT dijo:

    Gracias Dark, muy interesante !

Deja un comentario