GhostAcademy logo GhostAcademy
🥾 GRUB · Bypass login · passwd · PBKDF2 · Debian / Ubuntu / Kali
Bypass Login
Linux — GRUB
// ro→rw · init=/bin/bash · passwd · grub-mkpasswd-pbkdf2

El bypass del login mediante GRUB permite acceder a un sistema Linux sin credenciales modificando el cargador de arranque para obtener una shell de superusuario. Esta guía cubre el método de ataque (modificar parámetros del kernel en GRUB) y la contramedida (proteger GRUB con contraseña cifrada PBKDF2).

💀 Ataque — Bypass vía parámetros del kernel
🛡️ Defensa — Proteger GRUB con contraseña cifrada
Bypass login Linux con GRUB
Bypass del login en Linux mediante manipulación del cargador de arranque GRUB

El bypass del login mediante GRUB implica acceder a un sistema Linux sin pasar por el proceso habitual de inicio de sesión. Modificando los parámetros de arranque del kernel, se puede ejecutar una shell con privilegios de superusuario directamente — lo que representa un riesgo de seguridad serio si el GRUB no está protegido.

⚠️ Uso ético y legal: Este procedimiento solo debe ejecutarse en sistemas propios o en entornos de laboratorio con autorización. Aplicarlo en sistemas ajenos sin permiso es ilegal. La segunda parte de esta guía explica cómo proteger tu sistema contra este ataque.
💀 Ataque Bypass del login vía parámetros del kernel
1
Esperar al menú GRUB al arrancar
Enciende la máquina y espera hasta que aparezca el menú de selección de GRUB. Este menú es el punto de entrada para modificar los parámetros de arranque.
Menú GRUB con lista de sistemas operativos para arrancar
Menú GRUB — lista de sistemas disponibles
2
Pulsar E para entrar al editor de GRUB
Con el sistema operativo objetivo seleccionado en el menú, pulsa la tecla E para abrir el editor de parámetros de arranque. Verás las líneas de configuración del kernel.
Editor de parámetros de GRUB con líneas de configuración del kernel
Editor GRUB — parámetros del kernel visibles y editables
3
Modificar la línea del kernel — ro→rw y añadir init=/bin/bash
Localiza la línea que empieza por linux (la línea del kernel). Debes hacer dos cambios en esa línea:
CAMBIO 1 — Modo escritura
Cambia ro por rw
ro = read-only (solo lectura)
rw = read & write (lectura y escritura)
CAMBIO 2 — Shell directa
Añade al final de la línea:
init=/bin/bash
Sustituye el proceso init normal por bash
Línea del kernel — antes y después
ANTES:
  linux /boot/vmlinuz-... ro quiet splash ...

DESPUÉS:
  linux /boot/vmlinuz-... rw quiet splash ... init=/bin/bash
Editor GRUB con la línea del kernel modificada: rw e init=/bin/bash
Línea del kernel modificada con rw e init=/bin/bash al final
4
Ctrl+X para arrancar con los nuevos parámetros
Cuando tengas los cambios listos, pulsa Ctrl+X para guardar y arrancar el sistema con los parámetros modificados. El sistema iniciará directamente en una shell bash como root sin pedir contraseña.
Shell bash de root obtenida directamente tras el arranque modificado
Shell de superusuario obtenida — acceso root completo al sistema
✅ Resultado: Tienes una shell con acceso completo al sistema de archivos y permisos de root. Puedes leer, modificar o eliminar cualquier archivo del sistema.
5
Cambiar la contraseña del usuario con passwd
Con acceso root, puedes cambiar la contraseña de cualquier usuario del sistema. Usa el comando passwd seguido del nombre del usuario. El sistema pedirá la nueva contraseña dos veces para confirmarla.
passwd kali
Comando passwd kali ejecutado
Ejecutar passwd [usuario]
Solicitud de nueva contraseña
Introducir nueva contraseña
Confirmación de nueva contraseña
Confirmar contraseña
Contraseña actualizada correctamente
password updated successfully — contraseña cambiada con éxito
Confirmación final del cambio de contraseña
Confirmación del cambio de contraseña del usuario
6
Reiniciar con reboot -f
Una vez cambiada la contraseña, reinicia el sistema con reboot -f (forzado, necesario porque estamos en una shell mínima sin proceso init completo). El sistema arrancará normalmente y podrás iniciar sesión con la nueva contraseña.
reboot -f
Pantalla de login normal de Linux tras el reinicio
Pantalla de login normal — iniciar sesión con la nueva contraseña
🛡️ Defensa Proteger GRUB con contraseña cifrada PBKDF2

La solución estándar es añadir un usuario de GRUB (superuser) protegido por contraseña cifrada. Esto restringe la edición del menú de arranque solo a ese usuario, bloqueando el vector de ataque anterior.

1
Generar la contraseña cifrada — hash PBKDF2
GRUB no acepta contraseñas en texto plano. Debes generar un hash seguro PBKDF2 con SHA-512 usando la herramienta grub-mkpasswd-pbkdf2. El sistema pedirá la contraseña y su confirmación, y devolverá el hash.
grub-mkpasswd-pbkdf2
Ejemplo de salida — copia desde grub.pbkdf2
grub.pbkdf2.sha512.10000.A92A4B3E8F2C1D7A9E4F3B2C1A8D7E6F5C4B3A2E1D0C9B8A7F6E5D4C3B2A1F0E9D8C7B6A5F4E3D2C1B0A9F8E7D6C5B4A3F2E1D0C9B8A7…[más texto]
📋 Importante: Copia toda la línea de salida comenzando por grub.pbkdf2. La necesitarás completa en el paso siguiente. Es larga — no la trunces.
2
Editar /etc/grub.d/00_header
Abre el archivo de configuración principal de GRUB con privilegios de root. Desplázate hasta la línea que dice cat << EOF y justo antes de esa línea añade las dos líneas de configuración del superusuario.
sudo nano /etc/grub.d/00_header
📄 Añadir ANTES de la línea cat << EOF
# Añadir JUSTO ANTES de la línea: cat << EOF

set superusers="USUARIO_GRUB"
password_pbkdf2 USUARIO_GRUB [HASH COPIADO DEL PASO 1]

# Ejemplo práctico:
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.A92A...
set superusers
Define el nombre del usuario que tendrá autoridad para editar el menú de GRUB. Cámbialo por el nombre que prefieras.
password_pbkdf2
Asocia el hash PBKDF2 generado en el Paso 1 al usuario definido en superusers.
💾 Guardar en nano: Ctrl+O → Enter para guardar · Ctrl+X para salir.
3
Aplicar la configuración con update-grub
Regenera el archivo de configuración final de GRUB (/boot/grub/grub.cfg) procesando todos los archivos de /etc/grub.d/. Sin este paso, los cambios no tendrán efecto.
sudo update-grub
✅ Verás que el sistema procesa los archivos del directorio /etc/grub.d/ y regenera /boot/grub/grub.cfg. Sin errores = configuración aplicada.
4
Verificar la protección — reiniciar y probar
Reinicia el sistema y verifica que la protección funciona correctamente:
sudo reboot
✓ Comportamiento esperado tras la protección
▸ Al pulsar E en el menú GRUB → el sistema pedirá nombre de usuario y contraseña
✓ Los usuarios sin contraseña pueden arrancar el SO normalmente
✗ Los usuarios sin contraseña NO pueden modificar parámetros de arranque
🛡️ Protección activa: El vector de escalada de privilegios a través del menú GRUB queda mitigado. Solo el usuario con la contraseña PBKDF2 puede editar los parámetros de arranque.