Sector de arranque

Sector de un dispositivo de almacenamiento de datos persistente
Este ejemplo muestra varios componentes de GNU GRUB distribuidos en sectores de un disco duro. Cuando se instala GRUB en un disco duro, boot.img se escribe en el sector de arranque de ese disco duro. boot.img tiene un tamaño de solo 446 bytes.

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

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

El propósito de definir un sector particular como 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 lograr la máxima flexibilidad.

El IBM PC y los ordenadores compatibles

En una máquina compatible con IBM PC , el BIOS selecciona un dispositivo de arranque y 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 sectores de arranque, el sistema UEFI carga el cargador de arranque ( archivo de aplicación EFI en el disco USB o en la partición del sistema EFI ) directamente. [1] 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 sector de arranque. Sin embargo, dado que el primer sector también contiene datos sobre la partición del disco duro, este quedará totalmente inutilizable, a menos que se utilice junto con un software personalizado.

Tablas de particiones

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

  • Un registro de arranque maestro (MBR) es el primer sector de un dispositivo de almacenamiento de datos que ha sido particionado . El sector MBR puede contener código para localizar la partición activa e invocar su registro de arranque de volumen.
  • Un registro de arranque de volumen (VBR) es el primer sector de un dispositivo de almacenamiento de datos que no se ha particionado, o el primer sector de una partición individual en un dispositivo de almacenamiento de datos que se ha particionado. Puede contener código para cargar un sistema operativo (u otro programa independiente) instalado en ese dispositivo o dentro de esa 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 (desplazamientos 0x1FEy 0x1FF). Esta firma indica la presencia de al menos un cargador de arranque ficticio que es seguro ejecutar, incluso si no puede cargar realmente un sistema operativo. No indica un sistema de archivos o un sistema operativo en particular (ni siquiera la presencia de uno), aunque algunas versiones antiguas de DOS 3 dependían de ella en su proceso para detectar medios formateados en FAT (las versiones más nuevas no lo hacen). El código de arranque para otras plataformas o CPU no debería utilizar esta firma, ya que puede provocar un fallo cuando el BIOS pasa la ejecución al sector de arranque asumiendo que contiene 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 comprobación no sea 100% fiable en la práctica.

La mayoría de los BIOS de sistemas, desde (al menos) el IBM PC/AT (pero no el IBM PC original y algunas otras máquinas), comprueban la firma . Más aún, también la comprueban la mayoría de los cargadores de arranque MBR antes de pasar el control al sector de arranque. Algunos BIOS (como el IBM PC/AT) realizan la comprobación sólo para discos fijos/unidades extraíbles, mientras que para disquetes y superfloppies, es suficiente empezar con un byte mayor o igual a 06hy que las primeras nueve palabras 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, 0xAAen disquetes. Dado que los sectores de arranque antiguos (por ejemplo, los medios CP/M-86 y DOS muy antiguos) a veces no presentan esta firma a pesar del hecho de que se pueden arrancar correctamente, la comprobación se puede desactivar en algunos entornos. Si el BIOS o el código 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á la INT 18h. Esto iniciará el software residente opcional en la ROM ( ROM BASIC ), reiniciará el sistema mediante 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:

  • Los CD-ROM suelen tener su propia estructura de sectores de arranque; para los sistemas compatibles con IBM PC esto está sujeto a las especificaciones de El Torito .
  • Software C128 o C64 en discos Commodore DOS donde los datos en la Pista 1, Sector 0 comenzaban con un número mágico correspondiente a la cadena "CBM". [2]
  • Las computadoras mainframe de IBM colocan una pequeña cantidad de código de arranque en la primera y segunda pista del primer cilindro del disco, y el directorio raíz, llamado Tabla de contenido del volumen , también se ubica en la ubicación fija de la tercera pista del primer cilindro del disco.
  • Es posible que otros sistemas de PC (no compatibles con IBM) tengan diferentes formatos de sector de arranque en sus dispositivos de disco.

Operación

En las máquinas compatibles con IBM PC , el BIOS ignora la distinción entre VBR y MBR, y la partición. El firmware simplemente carga y ejecuta el primer sector del dispositivo de almacenamiento. [3] 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 entiende 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 se almacena en el primer sector de un disquete, dispositivo USB, disco duro o cualquier otro dispositivo de almacenamiento de arranque no necesita cargar inmediatamente ningún código de arranque para un sistema operativo, si es que lo hace alguna vez. La BIOS simplemente pasa el control a lo que exista allí, siempre que el sector cumpla con la simple calificación de tener la firma de registro de arranque de 0x55, 0xAA en sus dos últimos bytes. Por eso es fácil reemplazar el código de arranque habitual que se encuentra en un MBR con cargadores más complejos, incluso grandes administradores 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 sobre 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, los sectores de arranque han sido históricamente un vector de ataque común para los virus informáticos .

Para combatir este comportamiento, el BIOS del sistema a menudo incluye una opción para evitar que el software escriba en el primer sector de cualquier disco duro conectado; de este modo, podría proteger el registro de arranque maestro que contiene la tabla de particiones de ser sobrescrito accidentalmente, pero no los registros de arranque de volumen en las particiones de arranque. [4] Dependiendo del 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 el mensaje puede no mostrarse correctamente en modo gráfico y bloquear el acceso al MBR puede causar problemas con los programas de configuración del sistema operativo o con herramientas de acceso al disco, cifrado o particionamiento como FDISK , que pueden no haber sido escritas para tener en cuenta esa posibilidad, lo que hace que se cancelen sin gracia y posiblemente dejen la partición del disco en un estado inconsistente. [nb 1]

Como ejemplo, el malware NotPetya intenta obtener privilegios administrativos en un sistema operativo y luego intentaría sobrescribir el sector de arranque de una computadora. [5] [6] La CIA también ha desarrollado malware que intenta modificar el sector de arranque para cargar controladores adicionales para que los use otro malware. [7] Otro malware que sobrescribe el sector de arranque es MEMZ.

Véase también

Notas

  1. ^ Una utilidad FDISK diseñada para tener en cuenta las características de protección del sector de arranque del BIOS es FDISK R2.31 (y superior) de DR-DOS, que detectará este escenario y mostrará mensajes interactivos adicionales para guiar al usuario a través de él. A diferencia de otras utilidades FDISK , FDISK de DR-DOS no es solo una herramienta de particionamiento, sino que también puede formatear particiones recién creadas como FAT12, FAT16 o FAT32. Esto reduce el riesgo de formatear volúmenes incorrectos por accidente.

Referencias

  1. ^ "UEFI - Wiki OSDev" . wiki.osdev.org . Consultado el 26 de septiembre de 2020 .
  2. ^ Guía de referencia del programador de Commodore 128. Bantam Books. 1986. págs. 446–667. ISBN 0-553-34292-4.
  3. ^ Smith, Roderick W. (14 de abril de 2010). "Migrar a GRUB 2". Ibm.com . Consultado el 5 de marzo de 2013 .
  4. ^ "Diccionario de configuración de BIOS de placas base Intel para equipos de escritorio" (PDF) . Intel . Consultado el 1 de septiembre de 2013 .
  5. ^ "La nueva variante de ransomware "Nyetya" compromete sistemas en todo el mundo". blog.talosintelligence.com . 27 de junio de 2017 . Consultado el 28 de mayo de 2018 .
  6. ^ "En una era de ataques globales de malware, ¿qué sucede si no hay un interruptor de seguridad?". CIO Dive . Consultado el 28 de mayo de 2018 .
  7. ^ "CIA desarrolló malware para Windows que altera el sector de arranque para cargar más malware". Periódico de Seguridad de la Información . 2017-09-01 . Consultado el 2018-05-28 .
  • Mary Landesman. «Virus del sector de arranque». Archivado desde el original el 7 de julio de 2011. Consultado el 18 de agosto de 2006 .
  • Microsoft. "Cómo proteger el sector de arranque de virus en Windows". KnowledgeBase .
  • Denny Lin (15 de junio de 1994). «Técnicas económicas de detección y prevención de virus en el sector de arranque» . Consultado el 13 de agosto de 2015 .
  • Kaspersky Lab. «Virus del sector de arranque». Enciclopedia de virus / Descripciones de malware / Virus clásicos . Archivado desde el original el 22 de agosto de 2007. Consultado el 5 de junio de 2006 .
  • Arman Catacutan. "Glosario de términos sobre virus". Virus de arranque . Archivado desde el original el 2006-12-11 . Consultado el 2006-11-07 .
  • Greg O'Keefe. "Ejemplo para crear un programa de arranque en modo real x86".
  • Susam Pal. "Escribiendo código del sector de arranque usando GNU Assembler".
  • Pierre Ancelot. "Código ensamblador del sector de arranque con explicación detallada". Archivado desde el original el 29 de enero de 2013.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Sector_de_arranque&oldid=1222251579"