부트 섹터

Boot sector
이 예는 하드디스크 섹터에 분산되어 있는 GNU GRUB의 다양한 컴포넌트를 나타내고 있습니다.GRUB가 하드디스크에 설치되어 있는 경우 boot.img는 해당 하드디스크의 부트섹터에 기록됩니다.boot.img의 크기는 446바이트에 불과합니다.

부트 섹터는 랜덤 액세스 메모리(RAM)에 로드된 후 컴퓨터 시스템의 내장 펌웨어(BIOS)에 의해 실행되는 머신 코드를 포함하는 영구 데이터 스토리지 디바이스(하드 디스크, 플로피 디스크, 광 디스크 등)의 섹터입니다.

일반적으로 하드 디스크의 첫 번째 섹터는 섹터 크기(512바이트 또는 4096바이트)와 파티션 플레이버(MBR 또는 GPT)에 관계없이 부트 섹터입니다.

특정 섹터를 부트 섹터로 정의하는 목적은 펌웨어와 다양한 운영 체제 간의 상호 운용성입니다.

먼저 펌웨어(BIOS 등)를 체인로드하고 다음으로 부트 섹터에 포함된 코드, 다음으로 운영체제(예: 운영체제)를 로드하는 목적은 최대한의 유연성을 확보하는 것입니다.

IBM PC 및 호환 컴퓨터

IBM PC 호환 시스템에서 BIOS는 부팅 장치를 선택한 다음 장치의 첫 번째 섹터(MBR, VBR 또는 모든 실행 코드)를 메모리 주소 0x7C00의 물리적 메모리에 복사합니다.다른 시스템에서는 프로세스가 상당히 다를 수 있습니다.

Unified Extensible Firmware Interface(UEFI)

UEFI(CSM 경유 레거시 부트 아님)는 부트 섹터에 의존하지 않습니다.UEFI 시스템은 부트로더(EFI 애플리케이션 파일)를 USB 디스크 또는 EFI 시스템 파티션에 직접 [1]로드합니다.또한 UEFI 사양에는 기본적으로 UEFI 코드가 디지털 서명되기를 원하는 "보안 부팅"도 포함되어 있습니다.

부트 섹터 파손

부트 섹터가 물리적으로 파손되었을 경우, 파손되지 않은 섹터를 부트 섹터로 정의하는 커스텀 BIOS 를 사용하지 않는 한, 하드 디스크는 기동할 수 없게 됩니다.다만, 최초의 섹터에는 하드 디스크의 파티션에 관한 데이터가 추가되어 있기 때문에, 커스텀 소프트웨어와 함께 사용하는 경우를 제외하고, 하드 디스크는 완전하게 사용할 수 없게 됩니다.

파티션 테이블

디스크는 여러 파티션으로 분할할 수 있으며, 기존 시스템에서는 분할할 수 있습니다.파티션에 관한 정보를 저장하는 방법에는 다음 두 가지 정의가 있습니다.

  • MBR(마스터 부트 레코드)는 분할된 데이터 저장 장치의 첫 번째 섹터입니다.MBR 섹터에는 활성 파티션을 찾아 볼륨 부트 레코드를 호출하는 코드가 포함될 수 있습니다.
  • 볼륨 부트 레코드(VBR)는 분할되지 않은 데이터 스토리지 디바이스의 첫 번째 섹터 또는 분할된 데이터 스토리지 디바이스의 개별 파티션의 첫 번째 섹터입니다.디바이스 또는 파티션 내에 설치되어 있는 운영체제시스템(또는 다른 스탠드아론 프로그램)을 로드하기 위한 코드가 포함되어 있을 수 있습니다.

부트 섹터에 x86-CPU용 IBM PC 호환 부트 로더가 존재하는 것은 부트 섹터(오프셋 및 )의 끝에 2바이트의 16진수 시퀀스(부트 섹터 시그니처라고 불립니다)로 나타납니다.이 시그니처는 운영시스템을 실제로 로드할 수 없는 경우에도 실행해도 안전한 더미 부트로더가 존재함을 나타냅니다.DOS 3의 일부 이전 버전은 FAT 형식의 미디어를 검출하기 위해 DOS 3에 의존했지만, 특정 파일 시스템 또는 운영 체제의 존재를 나타내는 것은 아닙니다(새로운 버전은 그렇지 않습니다.다른 플랫폼 또는 CPU의 부트 코드에서는 이 시그니처를 사용하지 마십시오.BIOS가 유효한 실행 가능 코드를 포함하고 있다고 가정하면 부트 섹터에 실행이 전달될 때 크래시가 발생할 수 있기 때문입니다.그러나 다른 플랫폼용 일부 미디어에는 시그니처가 잘못 포함되어 있기 때문에 실제로는 이 체크의 신뢰성이 100%가 되지 않습니다.

서명은 IBM PC/AT 이후(최소한) 대부분의 시스템 BIOS에서 확인합니다(원래 IBM PC 및 일부 다른 컴퓨터에서는 확인되지 않음).게다가 대부분의 MBR 부트 로더에 의해서도 부트 섹터에 제어를 넘기기 전에 체크됩니다.IBM PC/AT와 같은 일부 BIOS에서는 고정 디스크/이동식 드라이브에 대해서만 검사를 수행하지만, 플로피 및 슈퍼플로피의 경우 부트 섹터가 유효한 것으로 받아들여지기 전에 동일한 값을 포함하지 않는 첫 번째 9개의 단어로 시작하면 충분하므로 플로피에 대한 명시적 테스트를 피할 수 있습니다.오래된 부트 섹터(예: 매우 오래된 CP/M-86 및 DOS 미디어)는 정상적으로 부트해도 이 시그니처를 지원하지 않을 수 있으므로 일부 환경에서는 체크가 비활성화될 수 있습니다.BIOS 또는 MBR 코드가 유효한 부트 섹터를 검출하지 못해 부트 섹터 코드로 실행을 전달할 수 없는 경우, 행의 다음 부트 디바이스를 시도합니다.모두 실패하면 일반적으로 오류 메시지가 표시되고 INT 18h가 호출됩니다.이것에 의해, 옵션의 상주 소프트웨어가 ROM(ROM BASIC)으로 기동하거나, 유저 확인 후에 INT 19h 를 개입시켜 시스템을 재기동하거나, 다음에 기동할 때까지 시스템이 부트 스트랩 프로세스를 정지합니다.

상기 설계에 따르지 않는 시스템은 다음과 같습니다.

  • CD-ROM은 일반적으로 자체 부트 섹터 구조를 가지고 있으며, IBM PC 호환 시스템의 경우 El Torito 사양에 따릅니다.
  • 트랙 1, 섹터 0의 데이터가 문자열 "CBM"[2]에 대응하는 매직 번호로 시작된 Commodore DOS 디스크의 C128 또는 C64 소프트웨어.
  • IBM 메인프레임 컴퓨터는 디스크의 첫 번째 실린더의 첫 번째 트랙과 두 번째 트랙에 소량의 부트 코드를 배치하고, 볼륨 목차라고 하는 루트 디렉토리도 디스크의 첫 번째 실린더의 세 번째 트랙의 고정 위치에 있습니다.
  • 다른 (IBM과 호환되지 않는) PC 시스템의 디스크 장치에는 다른 부트 섹터 형식이 있을 수 있습니다.

작동

IBM PC 호환 시스템에서 BIOS는 VBR과 MBR의 구별 및 파티션 분할을 인식하지 못합니다.펌웨어는 단순히 [3]스토리지 디바이스의 첫 번째 섹터를 로드하고 실행합니다.디바이스가 플로피 드라이브 또는 USB 플래시 드라이브인 경우 VBR이 됩니다.디바이스가 하드디스크일 경우 MBR이 됩니다.일반적으로 디스크 파티셔닝을 이해하고 부트하도록 설정된 프라이머리 파티션(액티브 파티션)의 VBR 로드 및 실행을 담당하는 MBR의 코드입니다.다음으로 VBR은 디스크상의 다른 위치에서2단계 부트로더를 로드합니다.

게다가 플로피 디스켓, USB 디바이스, 하드 디스크, 또는 그 의 부트 가능한 스토리지 디바이스의 제1 섹터에 격납되어 있는 것은, OS용의 부트 스트랩 코드를 곧바로 로드할 필요는 없습니다.섹터가 마지막 2바이트에 0x55, 0xAA의 부트 레코드 시그니처를 갖는 매우 단순한 조건을 만족하는 한 BIOS는 거기에 존재하는 모든 것에 제어를 넘길 뿐입니다.따라서 MBR에서 볼 수 있는 일반적인 부트스트랩 코드를 보다 복잡한 로더로 쉽게 대체할 수 있습니다.또한 대규모 다기능 부트 매니저(운영체제 없이 실행할 수 있는 디바이스상의 다른 곳에 저장되어 있는 프로그램)로 대체할 수 있기 때문에 사용자는 다음에 일어날 일에 대해 많은 선택을 할 수 있습니다.이러한 자유로움으로 인해 부트 섹터 바이러스의 형태로 악용되는 경우가 많습니다.

부트 섹터 바이러스

부트 섹터의 코드는 자동적으로 실행되기 때문에 부트 섹터는 지금까지 컴퓨터 바이러스의 일반적인 공격 벡터였습니다.

이 동작에 대처하기 위해 시스템 BIOS에는 소프트웨어가 연결된 하드 드라이브의 첫 번째 섹터에 쓰는 것을 방지하는 옵션이 포함되어 있는 경우가 많습니다.따라서 파티션 테이블포함한 마스터 부트 레코드가 실수로 덮어쓰지는 않도록 할 수 있지만 부트 [4]가능한 파티션의 볼륨 부트 레코드는 덮어쓰지 않습니다.BIOS에 따라서는, 유저의 조작에 관계없이, 보호되고 있는 섹터에의 기입이 블록 되는 일이 있습니다.그러나 대부분의 BIOS에서는 팝업메시지가 표시되어 설정을 덮어쓸 수 있습니다.BIOS 옵션은 디폴트로는 비활성화되어 있습니다.이는 메시지가 그래픽 모드에서 올바르게 표시되지 않을 수 있기 때문입니다.MBR로의 접근을 차단하면 운영체제 셋업 프로그램이나 FDISK 의 디스크 액세스, 암호화 또는 파티션 툴에 문제가 발생할 수 있기 때문입니다.이러한 툴은, 이러한 가능성을 인식하도록 써져 있지 않을 가능성이 있기 때문입니다.디스크 파티셔닝이 일관되지 않은 [nb 1]상태로 남아 있을 수 있습니다.

예를 들어 악성 프로그램 NotPetya는 운영 체제에서 관리 권한을 얻은 다음 시스템의 부트 [5][6]섹터를 덮어쓰려고 시도합니다.CIA는 다른 [7]멀웨어에서 사용할 추가 드라이버를 로드하기 위해 부트 섹터를 수정하려는 멀웨어도 개발했습니다.

「 」를 참조해 주세요.

메모들

  1. ^ BIOS 부트 섹터 보호 기능을 인식하도록 작성된 FDISK 유틸리티 중 하나는 DR-DOS의 FDISK R2.31(이후)입니다.이러한 경우, 이 시나리오를 검출해, 그 외의 인터랙티브한 메세지를 표시해, 유저가 그 상황을 이해할 수 있도록 합니다.다른 FDISK 유틸리티와 달리 DR-DOS FDISK는 파티셔닝 도구일 뿐만 아니라 새로 만든 파티션을 FAT12, FAT16 또는 FAT32로 포맷할 수도 있습니다.따라서 잘못된 볼륨을 실수로 포맷할 위험이 줄어듭니다.

레퍼런스

  1. ^ "UEFI - OSDev Wiki". wiki.osdev.org. Retrieved 2020-09-26.
  2. ^ Commodore 128 Programmer's Reference Guide. Bantam Books. 1986. pp. 446–667. ISBN 0-553-34292-4.
  3. ^ Roderick W. Smith, Consultant and author (2010-04-14). "Migrate to GRUB 2". Ibm.com. Retrieved 2013-03-05. {{cite web}}: author=범용명(도움말)이 있습니다.
  4. ^ "Intel Desktop Boards BIOS Settings Dictionary" (PDF). Intel. Retrieved 2013-09-01.
  5. ^ "New Ransomware Variant "Nyetya" Compromises Systems Worldwide". blog.talosintelligence.com. Retrieved 2018-05-28.
  6. ^ "In an era of global malware attacks, what happens if there's no kill switch?". CIO Dive. Retrieved 2018-05-28.
  7. ^ "CIA Developed Windows Malware That Alters Boot Sector to Load More Malware". Information Security Newspaper. 2017-09-01. Retrieved 2018-05-28.

외부 링크