Páginas

Mostrando entradas con la etiqueta Booting. Mostrar todas las entradas
Mostrando entradas con la etiqueta Booting. Mostrar todas las entradas

10 mayo, 2016

Restablecer la password de root (Bypass Login Linux): Conseguir una shell de root con Grub y como evitarlo

Me he dado cuenta de que no tenía ninguna publicación al respecto sobre esto. Se trata de un viejo trick ya conocido por la comunidad, hace un tiempo ya publicara algo similar, pero en esta ocasión lo comento en más detalle y el como protegerse de este tipo de técnica de bypass login en sistemas Linux.

Si tenemos acceso físico a la máquina o al hipervisor de una máquina virtual Linux, para poder restablecer la password de root, dejarla en blanco o cualquier otra acción privilegiada como acceder a los volúmenes del sistema para realizar un volcado o copia de los ficheros /etc/passwd y /etc/shadow con el fin de realizar un cracking de contraseñas por fuerza bruta a sus hashes, es aprovechar un pequeño hack -si se puede llamar así- usando el gestor de arranque múltiple GNU Grub (multiboot boot loader).

No se trata de ningún bug, explotación o vulnerabilidad (aunque pueda ser aprovechada de forma malintencionada). Simplemente es una funcionalidad estándar del kernel de Linux que permite a los administradores de sistemas entrar en un modo a una consola interactiva para poder recuperar un sistema de ficheros dañado o una contraseña olvidada. 

Más adelante veremos como se puede fortificar el acceso a la edición desde el menú del gestor de arranque Grub.

En sistemas Linux ya sea con interfaz gráfica como un entorno de terminal sin GUI, podemos invocar manualmente el menú de Grub presionando la tecla Shift en el momento del arranque del sistema.

Figura 1: Menú del gestor de arranque GNU Grub.

Presionando la tecla "e" podemos editar Grub. Localizamos un línea similar a "linux /boot/vmlinuz-VERSION-generic root=UUID=IDENTIFICADOR ro maybe-ubiquity" modificamos ro (solo lectura) por rw (lectura y escritura) y añadimos al final "init=/bin/bash", guardamos y salimos con "Ctrl-x". Esto reiniciará el sistema y nos levantará una shell privilegiada en un contexto de root.
linux /boot/vmlinuz-VERSION-generic root=UUID=IDENTIFICADOR ro maybe-ubiquity  quiet splash
linux /boot/vmlinuz-VERSION-generic root=UUID=IDENTIFICADOR rw maybe-ubiquity init=/bin/bash

quiet splash

  • quiet: Indica un modo detallado (más verbose), útil para ver todos los mensajes en el arranque del sistema, como los controladores y módulos, checks del sistema y errores.
  • splash: Simplemente muestra una imagen de carga (en movimiento) en el arranque del sistema.

init=/bin/bash: Indica al kernel de Linux que ejecute /bin/bash como init, en lugar de ejecutar init como sistema.

Figura 2: Modificación del Grub para iniciar un shell con privilegios de root.

Después de reiniciar se levantará una terminal en un contexto de root. Podremos restablecer la password y establecer una nueva con el comando passwd o realizar cualquier acción privilegiada.

Figura 3: Restablecer la password de root

Eliminar la password root dejando una contraseña en blanco. Para ello editamos el fichero /etc/shadow eliminando el asterisco (*) después de los primeros dos puntos (:) de forma que quede un espacio vacío, con esto eliminamos el uso de una contraseña para un usuario.
root::18305:0:99999:7:::
Figura 4: Password en blanco root editando /etc/shadow.

Como comenté al principio, podemos insertar una memoria USB externa, montarla y realizar una copia del fichero /etc/passwd y /etc/shadow con la finalidad de realizar ataques de fuerza bruta para la obtención de contraseñas de los usuarios del sistema. Debemos unir ambos ficheros en un único fichero con unshadow.
/usr/bin/unshadow <fichero-passwd> <fichero-shadow> > /tmp/crack.passwords

¿Cómo evitar y protegerse de esta técnica?

El hardening para evitar que cualquier persona que pueda tener acceso a la máquina de forma física o virtual desde el entorno del hipervisor y pueda realizar esta técnica.

1. Establecer password de arranque y BIOS/UEFI

Si se trata de un equipo físico. Establecer una password de arranque del sistema, algo que podemos configurar en la BIOS/UEFI. También establecer una password en el acceso al Setup de la BIOS/UEFI evitando así que no se pueda realizar un boot de otro sistema a través de Live CD/USB.

2. Cifrar el disco

Si existe la posibilidad es recomendable cifrar el volumen del sistema con LUKS.

3. Establecer una password de acceso a Grub

Establecer una password en el Grub es la opción más sencilla y segura. Creamos una password tipo PBKDF2 (Password-Based Key Derivation Function 2) que caracteriza por reducir ataques de fuerza bruta. Se nos genera un hash pbkdf2 el cual copiaremos.
grub-mkpasswd-pbkdf2
Figura 5: Establecer password al gestor de arranque Grub.

Editamos el siguiente fichero.
sudo nano /etc/grub.d/00_header
Al final del fichero pegamos lo siguiente.
cat << EOF
set superusers="admin"
password_pbkdf2 admin HASH
EOF
Donde "admin" será el nombre del usuario que queremos que valide para el acceso al menú del gestor de arranque Grub y HASH lo sustituimos por el generado anteriormente.

Actualizamos el Grub para aplicar los cambios.
sudo update-grub
Reiniciamos y pulsamos la tecla Shift para forzar que se muestre el menú de Grub. Se nos mostrará un login para su acceso donde introduciremos el usuario y contraseña establecidos anteriormente.

Figura 6: User y password para acceder al gestor de arranque Grub.

Saludos!

03 febrero, 2014

Recuperación de arranque en Windows 7 [BCD Rebuild, BOOTMGR, BOOT, NTLDR]

Hoy comentaré algunas de las formas más eficaces de poder recuperar una secuencia de inicio y carga de arranque corrupto o dañado de Windows 7.

Es decir cuando se nos presentan fallos por estar corruptos algunos ficheros de arranque ya sean, MBR, NTLDR, Bootmgr, etc. al encender nuestro equipo nos encontraremos con mensajes del tipo: BOOTMGR is missing..., Falta NTLDR o mensajes similares.

Tanto NTLDR para Windows XP, como BOOTMGR para Windows Vista en adelante son gestores de inicio o cargadores de sistemas Windows.

Para intentar solucionar este problema:

Podremos usar la forma sencilla y automática de Windows 7 que sería: Iniciar el medio extraíble tipo USB extraíble de instalación de Windows 7, una vez se nos arranque y se nos muestre la primera ventana del asistente de instalación le daríamos en la opción "Reparar equipo" (situada generalmente en la parte inferior-izquierda). Y a partir de ahí, usar la opción de "Reparación de inicio".

Esta opción nos solucionará principalmente fallos cuando se daña el fichero NTLDR (NTLoaDeR).

Otra opción sería hacerlo de forma manual y que restaurar los propios ficheros en cuestión corruptos cogiendo una copia del usb extraíble bootstrapping de instalación de Windows 7 un Windows PE (Entorno de preinstalación).

Ahora explicaré varias posibles soluciones, aunque esto depende también de cada caso que tengamos.

En un Windows RE (Entorno de recuperación), ejecutamos el comando diskpart (Administrador de discos en Windows "diskmgr.msc").

Tendremos que seleccionar el disco en el que tenemos nuestro arranque de OS de Windows 7, esto dependerá de cada uno y de las particiones y/o discos que se tengas instalados en el equipo, pondré un ejemplo típico y común, (cuyo caso sería un solo disco duro y una sola partición).

En esta zona por defecto en un mismo disco en estos casos las letras asignadas a cada partición o unidad suelen distribuirse de la siguiente forma:
  • X: Unidad creada para el sistema de restauración de imágenes de lo anterior seleccionado, esta contienen principalmente los binarios que lanzan los asistentes para la restauración del sistema así como otros para las reparaciones automáticas de arranque que nos ofrece Microsoft en un WindowsRE, entre otras tareas.
  • C: La partición "reservada para el sistema" de unos aprox. 100/200 MB, la cual contiene el boot de arranque y otros ficheros relacionados.
  • D: La partición donde está instalado Windows y los datos, esta es la que estaría montada como C:\ cuando corremos un sistema operativo Windows.
  • E: Unidad asignada al DVD o USB de instalación de Windows (Windows PE y Windows RE).
  • Bootrec será la utilidad principal para poder restablecer el arranque de Windows. Tiene varios modificadores de los cuales son (según su ayuda):
  • /fixmbr: Escribe el registro de arranque maestro de la partición del sistema con el registro de arranque maestro compatible con Windows 7. Esta operación no sobrescribe la tabla de particiones existente.
  • /fixboot: Escribe un nuevo sector de arranque en la partición del sistema con el sector de arranque comptible con Windows 7.
  • /rebuildbcd y /scanos: Examina todos los discos en busca de instalaciones compatibles con Windows 7 permite al usuario elegir la que desee agregar al almacén de configuración de arranque.
En que partición se tienen que realizar las acciones para recuperar el arranque de Windows?

Lógicamente en la partición en la que tengamos dichos ficheros dañados, que obviamente será la partición reservada por el sistema operativo para su arranque, en este caso y por defecto como ya se mencionó anteriormente C:.
c:
diskpart
list disk
select disk=0
list partition
select partition=1
active
exit
Con esto listamos, seleccionamos el disco donde se albergue Windows 7, listamos las particiones y seleccionamos la partición donde esté instalada Windows7, la marcamos como activa y salimos.

A continuación ejecutamos la siguiente secuencia de comandos:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
exit
Esto nos reparará el MBR (Master Boot Record), la secuencia de inicio boot y nos reconstruirá la base de datos de arranque BCD (Boot Configuration Data).

Reiniciamos y probamos si con esto conseguimos solucionar el problema de arranque y Windows nos arranque correctamente.

Si el error persiste y no se hubiese solucionado nuestro problema habría que reconstruir de nuevo el BCD pero de otra forma, hacerlo "desde cero" sin que sobrescriba ningún fichero ya existente.
Para ello, en la consola de recuperación escribimos:
bcdedit /export c:\bcd_backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.bak
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
exit
Con esto lo que haremos es hacer un respaldo de la base de datos boot exportándola a C:. Después simplemente entramos en la carpeta "Boot" que está situada en la raíz del sistema y borramos los atributos (de archivo del Sistema, Oculto y Solo lectura) del fichero bcd en cuestión.

Por último reconstruimos de nuevo la BCD, en este caso desde cero sin que tome referencia de ninguna otra y reparamos el MBR y el BOOT como los pasos anteriores y reiniciamos a ver si ya se corrigió el problema de arranque.

Si seguimos sin poder repararlo tendríamos que sobrescribir el fichero BOOTMGR situado en la raíz del sistema C:.

Situados en la consola de recuperación, buscaremos y entraremos a la letra de unidad asignada a la lectora DVD o la unidad asignada al dispositivo donde tengamos la instalación de Windows 7. En mi caso, fue la la letra E: pero podría a ver sido otra, es cuestión de ir probando en un orden alfabético (D:, E:, F:, etc.).
e:
copy bootmgr c:\
c:
attrib bootmgr +s +h +r
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
exit
Como vemos, copiamos el bootmgr del DVD (en este caso) al disco raíz, nos vamos a nuestro disco raíz, por defecto C: y establecemos los atributos (de archivo de Sistema, Oculto y Solo lectura) al fichero bootmgr que copiáramos anteriormente.

Seleccionar la partición correcta y marcarla como activa. Después de eso ya podremos reconstruir sin problemas la BCD y seguir con la reparación de fixmbr y fixboot.

Ahora salimos de la consola y reiniciamos y con estos todos casos anteriores y planteados en este artículo deberíamos solucionar gran parte de errores relacionados con fallos de arranque o carga de un sistema operativo Windows 7.

Saludos!

13 septiembre, 2010

Eliminar la password de la BIOS

Si queremos acceder a un equipo y dicho equipo tiene una contraseña en la BIOS, no vamos poder entrar a ella y su configuración.

Para ello podemos utilizar determinados métodos, para borrar dicha password de la BIOS:

[1] - Una de las tantas utilidades de las que dispone Hiren’s BOOT CD. (Actualizo este post a fecha de Enero de 2016 con la nueva versión de Hiren's BOOTCD).
Esto es ideal para cuando podemos bottear un LiveCD a través del "Menú BOOT" y que este no nos solicite credenciales para poder hacer bootstrap a dispositivos externos.


Dentro de las opciones "BIOS/CMOS Tools" tendremos un conjunto de herramientas, entre ellas: BIOS Cracker y Kill CMOS.


Figura 1: BIOS Cracker

Figura 2: Kill CMOS

Figura 3: Eliminado con éxito de la password de BIOS.

[2] - En el caso de que no podamos bootear ningún LiveCD, tendremos que hacerlo desde el propio sistema operativo.

CMOS De-animator (alternativa de descarga) es una utilidad gratuita que funciona en todas las versiones de Windows. Y que en principio no requiere elevar privilegios para acceder a la CMOS. Nos permitirá eliminar la password de la BIOS invalidando el checksum de la CMOS, una vez realice el proceso habrá "limpiado" la password de la BIOS y dejarla con su configuración por defecto.

Figura 4: CMOS De-animator para Windows.

Actualmente está disponible en su versión 3.0, la cual incluye ciertas mejoras sobre todo por su nueva interfaz de uso.

Saludos!

Entradas Populares