Sector de arranque

Ajustar Compartir Imprimir Citar
Sector de un dispositivo de almacenamiento de datos persistente
Este ejemplo muestra varios componentes de GNU GRUB distribuidos sobre sectores de un disco duro. Cuando GRUB está instalado en un disco duro, boot.img está escrito en el sector de arranque de ese disco duro. boot.img tiene un tamaño de sólo 446 bytes.

Un sector de arranque es el sector de un dispositivo de almacenamiento de datos persistente (por ejemplo, disco duro, disquete, disco óptico, etc.) que contiene código de máquina para cargar en la memoria de acceso aleatorio (RAM) y luego ejecutado por el firmware integrado de un sistema informático (por ejemplo, el BIOS).

Por lo general, el primer sector del disco duro es el sector de arranque, independientemente del tamaño del sector (512 o 4096 bytes) y el tipo de partición (MBR o GPT).

El propósito de definir un sector en particular como el sector de arranque es la interoperabilidad entre el firmware y varios sistemas operativos.

El propósito de cargar en cadena primero un firmware (por ejemplo, el BIOS), luego algún código contenido en el sector de arranque y luego, por ejemplo, un sistema operativo, es la máxima flexibilidad.

La PC IBM y computadoras compatibles

En una máquina compatible con IBM PC, el BIOS selecciona un dispositivo de inicio, luego copia el primer sector del dispositivo (que puede ser un MBR, VBR o cualquier código ejecutable), en la memoria física en la dirección de memoria 0x7C00. En otros sistemas, el proceso puede ser bastante diferente.

Interfaz de firmware extensible unificada (UEFI)

La UEFI (no el arranque heredado a través de CSM) no depende de los sectores de arranque, el sistema UEFI carga el cargador de arranque (archivo de aplicación EFI en el disco USB o en el EFI partición del sistema) directamente. Además, la especificación UEFI también contiene "arranque seguro", que básicamente quiere que el código UEFI esté firmado digitalmente.

Daños en el sector del maletero

En caso de que un sector de arranque sufra daños físicos, el disco duro ya no podrá arrancar, a menos que se utilice con un BIOS personalizado que defina un sector no dañado como el sector de arranque. Sin embargo, dado que el primer sector también contiene datos sobre la partición del disco duro, el disco duro quedará completamente inutilizable, excepto cuando se use junto con un software personalizado.

Tablas de partición

Un disco se puede particionar en varias particiones y, en los sistemas convencionales, se espera que así sea. Hay dos definiciones sobre cómo almacenar la información relativa a la partición:

La presencia de un cargador de arranque compatible con IBM PC para CPU x86 en el sector de arranque se indica por convención mediante una secuencia hexadecimal de dos bytes 0x55 0xAA (llamada firma del sector de arranque) al final del sector de arranque (offsets 0x1FE y 0x1FF). Esta firma indica la presencia de al menos un cargador de arranque ficticio que es seguro de ejecutar, incluso si es posible que no pueda cargar un sistema operativo. No indica un sistema de archivos o sistema operativo en particular (ni siquiera la presencia de este), aunque algunas versiones antiguas de DOS 3 dependían de él en su proceso para detectar medios con formato FAT (las versiones más nuevas no lo hacen). El código de inicio para otras plataformas o CPU no debe usar esta firma, ya que esto puede provocar un bloqueo cuando el BIOS pasa la ejecución al sector de inicio, suponiendo que contiene un código ejecutable válido. Sin embargo, algunos medios para otras plataformas contienen erróneamente la firma, de todos modos, lo que hace que esta verificación no sea 100% confiable en la práctica.

La firma es verificada por la mayoría de los BIOS del sistema desde (al menos) la IBM PC/AT (pero no por la IBM PC original y algunas otras máquinas). Más aún, la mayoría de los cargadores de arranque MBR también lo verifican antes de pasar el control al sector de arranque. Algunas BIOS (como IBM PC/AT) realizan la verificación solo para unidades de disco fijo/removible, mientras que para disquetes y superdisquetes, es suficiente comenzar con un byte mayor o igual a 06h y el primero nueve palabras que no contengan el mismo valor, antes de que el sector de arranque se acepte como válido, evitando así la prueba explícita de 0x55, 0xAA en disquetes. Dado que los sectores de arranque antiguos (p. ej., medios CP/M-86 y DOS muy antiguos) a veces no cuentan con esta firma a pesar de que pueden arrancarse correctamente, la comprobación se puede desactivar en algunos entornos. Si el código BIOS o MBR no detecta un sector de arranque válido y, por lo tanto, no puede pasar la ejecución al código del sector de arranque, intentará con el siguiente dispositivo de arranque de la fila. Si todos fallan, normalmente mostrará un mensaje de error e invocará INT 18h. Esto iniciará el software residente opcional en ROM (ROM BASIC), reiniciará el sistema a través de INT 19h después de la confirmación del usuario o hará que el sistema detenga el proceso de arranque hasta el próximo encendido.

Los sistemas que no siguen el diseño descrito anteriormente son:

Operación

En las máquinas compatibles con IBM PC, el BIOS ignora la distinción entre VBR y MBR, y el particionamiento. El firmware simplemente carga y ejecuta el primer sector del dispositivo de almacenamiento. Si el dispositivo es un disquete o una unidad flash USB, será un VBR. Si el dispositivo es un disco duro, será un MBR. Es el código en el MBR el que generalmente comprende la partición del disco y, a su vez, es responsable de cargar y ejecutar el VBR de cualquier partición primaria que esté configurada para arrancar (la partición activa). Luego, el VBR carga un cargador de arranque de segunda etapa desde otra ubicación en el disco.

Además, lo que sea que esté almacenado en el primer sector de un disquete, dispositivo USB, disco duro o cualquier otro dispositivo de almacenamiento arrancable, no es necesario para cargar inmediatamente ningún código de arranque para un sistema operativo, si alguna vez. El BIOS simplemente pasa el control a lo que sea que exista allí, siempre que el sector cumpla con la calificación muy simple de tener la firma de registro de arranque de 0x55, 0xAA en sus últimos dos bytes. Esta es la razón por la que es fácil reemplazar el código de arranque habitual que se encuentra en un MBR con cargadores más complejos, incluso grandes gestores de arranque multifuncionales (programas almacenados en otra parte del dispositivo que pueden ejecutarse sin un sistema operativo), lo que permite a los usuarios una serie de opciones. en lo que ocurre a continuación. Con este tipo de libertad, el abuso a menudo ocurre en forma de virus del sector de arranque.

Virus del sector de arranque

Dado que el código en el sector de arranque se ejecuta automáticamente, históricamente los sectores de arranque han sido un vector de ataque común para los virus informáticos.

Para combatir este comportamiento, el BIOS del sistema suele incluir una opción para evitar que el software escriba en el primer sector de los discos duros conectados; por lo tanto, podría proteger el registro de inicio maestro que contiene la tabla de particiones para que no se sobrescriba accidentalmente, pero no los registros de inicio de volumen en las particiones de inicio. Según el BIOS, los intentos de escribir en el sector protegido pueden bloquearse con o sin interacción del usuario. Sin embargo, la mayoría de los BIOS mostrarán un mensaje emergente que le dará al usuario la oportunidad de anular la configuración. La opción del BIOS está deshabilitada de forma predeterminada porque es posible que el mensaje no se muestre correctamente en el modo de gráficos y el bloqueo del acceso al MBR puede causar problemas con los programas de configuración del sistema operativo o el acceso al disco, el cifrado o las herramientas de partición como FDISK, que pueden no haber sido escritos en tenga en cuenta esa posibilidad, lo que hace que se cancelen sin gracia y posiblemente deje la partición del disco en un estado inconsistente.

Como ejemplo, el malware NotPetya intenta obtener privilegios administrativos en un sistema operativo y luego intenta sobrescribir el sector de arranque de una computadora. La CIA también ha desarrollado malware que intenta modificar el sector de arranque para cargar controladores adicionales para que los utilice otro malware.