
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 máquina que se carga en la memoria de acceso aleatorio (RAM) y luego es ejecutado por el firmware integrado de un sistema informático (por ejemplo, la 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 del tipo de partición ( MBR o GPT ).
El objetivo de definir un sector en particular como sector de arranque es garantizar la interoperabilidad entre el firmware y los distintos sistemas operativos.
El objetivo de la carga en cadena, primero el firmware (por ejemplo, la BIOS), luego el código en el sector de arranque y, posteriormente, por ejemplo, un sistema operativo, es lograr la máxima flexibilidad.
El IBM PC y los ordenadores compatibles.
En un ordenador compatible con IBM PC , la BIOS selecciona un dispositivo de arranque y, a continuación, copia el primer sector de dicho dispositivo (que puede ser un MBR , un 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)
UEFI no depende de sectores de arranque, sino que carga el cargador de arranque directamente desde un archivo de aplicación EFI en la partición del sistema EFI . [ 1 ] Además, la especificación UEFI contiene Arranque seguro, que requiere que el código UEFI esté firmado digitalmente .
Daños en el sector de la bota
En caso de que un sector de arranque sufra daños físicos, el disco duro dejará de ser arrancable, a menos que se utilice con una BIOS personalizada que defina un sector intacto como sector de arranque. Sin embargo, dado que el primer sector también contiene datos sobre el particionamiento del disco duro, este quedará completamente inutilizable, salvo que se utilice con software personalizado.
Tablas de partición
Un disco puede dividirse en múltiples particiones y, en los sistemas convencionales, se espera que así sea. Existen dos definiciones sobre cómo almacenar la información relativa al particionamiento:
- 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 ha sido particionado, o el primer sector de una partición individual en un dispositivo de almacenamiento de datos que sí ha sido 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(denominada firma del sector de arranque) al final del sector (desplazamientos 0x1FEy 0x1FF). Esta firma indica la presencia de al menos un cargador de arranque ficticio que se puede ejecutar de forma segura, aunque no sea capaz de cargar un sistema operativo. No indica un sistema de archivos o sistema operativo en particular (ni siquiera su presencia), si bien algunas versiones antiguas de DOS 3 dependían de ella para detectar medios con formato FAT (las versiones más recientes no). El código de arranque para otras plataformas o CPU no debería usar esta firma, ya que podría provocar un fallo cuando la BIOS cede la ejecución al sector de arranque asumiendo que contiene código ejecutable válido. No obstante, algunos medios para otras plataformas contienen erróneamente la firma, lo que hace que esta comprobación no sea 100% fiable en la práctica.
La firma es verificada por la mayoría de las BIOS de sistema desde (al menos) el IBM PC/AT (pero no por el IBM PC original y algunas otras máquinas). Más aún, también es verificada por la mayoría de los cargadores de arranque MBR antes de pasar el control al sector de arranque. Algunas BIOS (como la del IBM PC/AT) realizan la verificación solo para discos fijos/unidades extraíbles, mientras que para disquetes y superdisquetes, es suficiente con que comience con un byte mayor o igual a 06hy que las primeras nueve palabras no contengan el mismo valor, para que el sector de arranque se acepte como válido, evitando así la prueba explícita para 0x55, 0xAAen disquetes. Dado que los sectores de arranque antiguos (por ejemplo, medios CP/M-86 y DOS muy antiguos) a veces no presentan esta firma a pesar de que pueden arrancar correctamente, la verificación puede estar deshabilitada en algunos entornos. Si el código de la 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 en la fila. Si todos fallan, normalmente mostrará un mensaje de error e invocará INT 18h. Esto iniciará el software residente opcional en la 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:
- 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 Commodore 128 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 ]
- Los ordenadores centrales 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 Contenidos del Volumen , también se encuentra en la ubicación fija de la tercera pista del primer cilindro del disco.
- Otros sistemas de PC (no compatibles con IBM) pueden tener formatos de sector de arranque diferentes en sus dispositivos de disco.
Operación
En las máquinas compatibles con IBM PC , la 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. [ 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 el particionamiento del disco y, a su vez, es responsable de cargar y ejecutar el VBR de la partición primaria que esté configurada para arrancar (la partición activa ). El VBR luego 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 requiere cargar inmediatamente ningún código de arranque para un sistema operativo, si es que alguna vez lo hace. La BIOS simplemente transfiere el control a lo que se encuentre allí, siempre que el sector cumpla con el requisito básico de tener la firma del registro de arranque 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 con grandes gestores de arranque multifuncionales (programas almacenados en otras partes del dispositivo que pueden ejecutarse sin un sistema operativo), lo que permite a los usuarios diversas opciones sobre lo que sucede a continuación. Con este tipo de libertad, a menudo se producen abusos 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, la BIOS del sistema suele incluir una opción para impedir 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 de la BIOS, los intentos de escritura en el sector protegido pueden bloquearse con o sin interacción del usuario. Sin embargo, la mayoría de las BIOS mostrarán un mensaje emergente que le dará al usuario la oportunidad de anular la configuración. La opción de la 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 el acceso al disco, el cifrado o las herramientas de particionamiento como FDISK , que pueden no haber sido programadas para tener en cuenta esa posibilidad, lo que provocaría que se abortaran de forma abrupta y posiblemente dejaran el particionamiento del disco en un estado inconsistente. [ nb 1 ]
Como ejemplo, el malware NotPetya intenta obtener privilegios de administrador 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 que serán utilizados por otro malware. [ 7 ] Otro malware que sobrescribe el sector de arranque es MEMZ .
Véase también
Notas
- ↑ Una utilidad FDISK diseñada para tener en cuenta las funciones de protección del sector de arranque de la BIOS es DR-DOS FDISK R2.31 (y versiones posteriores), que detecta este escenario y muestra mensajes interactivos adicionales para guiar al usuario. A diferencia de otras utilidades FDISK , DR-DOS FDISK no solo es 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 accidentalmente volúmenes incorrectos.
Referencias
- ↑ "UEFI - OSDev Wiki" . wiki.osdev.org . Consultado el 26 de septiembre de 2020 .
- ↑ Guía de referencia del programador de Commodore 128. Bantam Books. 1986. págs. 446–667 . ISBN 0-553-34292-4.
- ↑ Smith, Roderick W. (14 de abril de 2010). "Migrar a GRUB 2" . Ibm.com . Consultado el 5 de marzo de 2013 .
- ↑ "Diccionario de configuración del BIOS de placas base Intel" (PDF) . Intel . Consultado el 1 de septiembre de 2013 .
- ↑ "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 .
- ↑ "¿En una era de ataques de malware globales, qué sucede si no hay un interruptor de apagado?" . CIO Dive . Consultado el 28 de mayo de 2018 .
- ↑ "La CIA desarrolló malware para Windows que altera el sector de arranque para cargar más malware" . Periódico Information Security . 1 de septiembre de 2017. Consultado el 28 de mayo de 2018 .
Enlaces externos
- Mary Landesman. "Virus del sector de arranque" . Archivado del 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" . Base de conocimientos .
- Denny Lin (15 de junio de 1994). "Técnicas económicas para la 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 del original el 22 de agosto de 2007. Consultado el 5 de junio de 2006 .
- Arman Catacutan. "Glosario de términos de virus" . Virus de arranque . Archivado del original el 11 de diciembre de 2006. Consultado el 7 de noviembre de 2006 .
- Greg O'Keefe. "Ejemplo para crear un programa de arranque en modo real x86" .
- Susam Pal. "Escribiendo código para el sector de arranque usando el ensamblador GNU" .
- Pierre Ancelot. "Código ensamblador del sector de arranque con explicación detallada" .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
- Sistemas de archivos informáticos
- BIOS
- Arranque