Como recuperar tu contraseña desde un LiveUSB

Todos sabemos que Linux es muy seguro, pero como alguien acceda físicamente a tu máquina desde un LiveUSB, te hace la pascua. Y es que como se vio en «Como montar tu disco duro desde un Live USB» aprendimos a acceder a los datos de un disco. Ahora ademas, veremos como cambiar la contraseña de un usuario, e incluso la de root.

Para esto se usa Chroot (Change root) que es una utilidad del sistema Unix que se emplea para crear un nuevo entorno separado del directorio raíz del sistema principal. Este nuevo entorno se conoce como una «jaula chroot». Un usuario que opere dentro de la jaula no puede ver ni acceder ficheros fuera del entorno en el que se le ha confinado.

¡Comenzamos!

Inicia cualquier LiveUSB, yo lo haré con Debian 12 XFCE4.

Una vez iniciado el sistema, abre una terminal y escribe:

lsblk -p

Como resultado tendremos esta salida:

demo@mx1:~
$ lsblk -p
NAME                   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
/dev/loop0               7:0    0   2,1G  1 loop /live/linux
/dev/sda                 8:0    0 111,8G  0 disk 
├─/dev/sda1              8:1    0 110,8G  0 part 
├─/dev/sda2              8:2    0     1K  0 part 
└─/dev/sda5              8:5    0   975M  0 part [SWAP]
/dev/sdb                 8:16   0 298,1G  0 disk 
└─/dev/sdb1              8:17   0 298,1G  0 part 
/dev/sdc                 8:32   1  29,3G  0 disk 
├─/dev/sdc1              8:33   1  29,3G  0 part 
│ └─/dev/mapper/ventoy 254:0    0   2,2G  1 dm   /live/boot-dev
└─/dev/sdc2              8:34   1    32M  0 part 
demo@mx1:~

Como puedes observar, se han listado 3 discos:

  • /dev/sda que es donde está insalado Debian 12 XFCE (lo sé porque tiene 3 particiones, siendo una de ella la swap)
  • /dev/sdb que es un disco que tengo como almacen.
  • /dev/sdc que es el propio Pendrive de arranque del Live USB.
  • También tenemos el /dev/loop0 que es donde está montado nuestro sistema provisional.

Si con lsblk no tienes toda la información que necesitas para identificar tu disco, puedes usar estos comandos que te dejo a continuación:

  • fdisk
    fdisk es otra opción común entre los sysops. Actualmente lista las diferentes particiones (lo que está relacionado con los discos duros, ya que un disco duro puede estar dividido en varias particiones) de su sistema.
    sudo fdisk –list
  • parted
    Esta es similar a las anteriores mencionadas, lista todas las particiones y permite gestionarlas. Su principal diferencia es que también te informa de la marca y modelo de tus discos duros e incluso del tipo de conectividad utilizada en el mismo (scsi, sata, etc) y del tamaño total del disco.
    sudo parted -l
  • sfdisk
    Esto es muy similar a fdisk, sin embargo sfdisk le permite ver tanto los volúmenes físicos como los lógicos y también le da un «resumen» de las particiones de los volúmenes físicos reales con los cilindros (inicio y final), sectores, tamaño y tipo.
    Probablemente la «s» es por «super», ya que es un fdisk con superpoderes:
    sudo sfdisk -l

Creando el directorio contenedor.

Para el montaje del disco debes crear un directorio al que puedes llamar como quieras, yo lo llamaré disco, y el lugar donde lo haré, será en /media.

Así que en una terminal homologada escribe:

sudo mkdir /media/disco

Montando el disco

Ahora, en la carpeta contenedora llamada disco, montaré el disco sda1 así:

sudo mount /dev/sda1 /media/disco

Si vuelves a hacer un lsblk, verás que sda1, tiene el punto de montaje en esa ruta.

demo@mx1:~
$ lsblk -p
NAME                   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
/dev/loop0               7:0    0   2,1G  1 loop /live/linux
/dev/sda                 8:0    0 111,8G  0 disk 
├─/dev/sda1              8:1    0 110,8G  0 part /media/disco
├─/dev/sda2              8:2    0     1K  0 part 
└─/dev/sda5              8:5    0   975M  0 part [SWAP]
/dev/sdb                 8:16   0 298,1G  0 disk 
└─/dev/sdb1              8:17   0 298,1G  0 part 
/dev/sdc                 8:32   1  29,3G  0 disk 
├─/dev/sdc1              8:33   1  29,3G  0 part 
│ └─/dev/mapper/ventoy 254:0    0   2,2G  1 dm   /live/boot-dev
└─/dev/sdc2              8:34   1    32M  0 part 
demo@mx1:~

Enjaular disco

Para que Chroot funcione, este debe de ser montado dentro de un disco que tenga un sistema linux instalado, ya que bash necesitará estar instalado ahí. Si lo haces sobre un disco vacío, no funcionará ningún comando.

Y ahora que ya lo tenemos montado, ejecutamos el comando chroot para enjaularnos dentro de nuestro disco y poder ejecutar comandos como si estuviésemos operando desde ese disco

sudo chroot /media/disco

En este momento, todo lo que hagamos solo afectará al disco donde estamos enjaulados.

Cambia el password de root así:

passwd root

Y el de usuario, así:

passwd tu_usuario

Ya solo queda reiniciar el equipo, quitar el Live Cd, e introducir las nuevas contraseñas.

Deja un comentario

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

Scroll al inicio