
ブートセクタは、ランダム アクセス メモリ(RAM)にロードされ、コンピュータ システムの組み込みファームウェア ( BIOSなど) によって実行されるマシン コードを含む永続的なデータ ストレージ デバイス(ハードディスク、フロッピーディスク、光ディスクなど)のセクタです。
通常、セクター サイズ (512 バイトまたは 4096 バイト) やパーティションの種類 ( MBRまたはGPT ) に関係なく、ハード ディスクの最初のセクターはブート セクターです。
特定のセクターをブート セクターとして定義する目的は、ファームウェアとさまざまなオペレーティング システム間の相互運用性を確保することです。
最初にファームウェア (BIOS など) をロードし、次にブート セクターに含まれるコード、最後にオペレーティング システムなどをチェーン ロードする目的は、柔軟性を最大限に高めることです。
IBM PCおよび互換機
IBM PC 互換機では、BIOS がブート デバイスを選択し、デバイスの最初のセクター ( MBR、VBR、または任意の実行可能コード) をメモリ アドレス0x7C00の物理メモリにコピーします。他のシステムでは、プロセスがまったく異なる場合があります。
統合拡張ファームウェア インターフェース (UEFI)
UEFI ( CSM経由のレガシーブートではない)はブートセクターに依存せず、UEFIシステムはブートローダー(USBディスクまたはEFIシステムパーティション内のEFIアプリケーションファイル)を直接ロードします。[1]さらに、UEFI仕様には「セキュアブート」も含まれており、基本的にUEFIコードにデジタル署名が必要です。
ブートセクタの損傷
ブート セクターが物理的に損傷した場合、損傷していないセクターをブート セクターとして定義するカスタム BIOS を使用しない限り、ハード ディスクは起動できなくなります。ただし、最初のセクターにはハード ディスクのパーティションに関するデータも含まれているため、カスタム ソフトウェアと組み合わせて使用しない限り、ハード ディスクは完全に使用できなくなります。
パーティションテーブル
ディスクは複数のパーティションに分割することができ、従来のシステムではそれが想定されています。パーティション分割に関する情報を保存する方法には、次の 2 つの定義があります。
- マスターブート レコード(MBR) は、パーティション化されたデータ ストレージ デバイスの最初のセクターです。MBR セクターには、アクティブなパーティションを見つけてそのボリューム ブート レコードを呼び出すコードが含まれている場合があります。
- ボリュームブート レコード(VBR) は、パーティション化されていないデータ ストレージ デバイスの最初のセクター、またはパーティション化されたデータ ストレージ デバイス上の個々のパーティションの最初のセクターです。このレコードには、そのデバイスまたはそのパーティション内にインストールされているオペレーティング システム (またはその他のスタンドアロン プログラム) をロードするためのコードが含まれている場合があります。
ブート セクタに x86-CPU 用の IBM PC 互換ブート ローダが存在するかどうかは、慣例により、0x55 0xAAブート セクタの末尾 (オフセット0x1FEと0x1FF) にある 2 バイトの 16 進シーケンス (ブート セクタ シグネチャと呼ばれる) で示されます。このシグネチャは、実際にはオペレーティング システムをロードできない場合でも、実行しても安全なダミー ブート ローダが少なくとも 1 つは存在することを示します。これは特定のファイル システムやオペレーティング システム (またはそれらの存在) を示すものではありませんが、DOS 3 の古いバージョンの中には、 FAT形式のメディアを検出するプロセスでこのシグネチャに依存しているものがありました(新しいバージョンではそうではありません)。他のプラットフォームや CPU のブート コードではこのシグネチャを使用しないでください。これは、BIOS がブート セクタに有効な実行可能コードが含まれていると想定して実行を渡すと、クラッシュする可能性があるためです。ただし、他のプラットフォームの一部のメディアには誤ってこのシグネチャが含まれているため、実際にはこのチェックは 100% 信頼できるものではありません。
署名は、(少なくとも) IBM PC/AT以降のほとんどのシステム BIOS でチェックされます(ただし、オリジナルの IBM PC および他の一部のマシンではチェックされません)。さらに、ほとんどの MBR ブートローダーでも、ブートセクターに制御を渡す前に署名がチェックされます。一部の BIOS (IBM PC/AT など) は、固定ディスク/リムーバブルドライブに対してのみチェックを実行しますが、フロッピーおよびスーパーフロッピーの場合は、1 バイトが より大きいか等しく06h、最初の 9 ワードに同じ値が含まれないようにするだけで、ブートセクターが有効として受け入れられるため、フロッピーでの の明示的なテストを回避できます。古いブートセクター (非常に古い CP/M-86 および DOS メディアなど) は0x55、0xAA正常にブートできるにもかかわらず、この署名が含まれていないことがあるため、環境によってはチェックを無効にできます。BIOS または MBR コードが有効なブートセクターを検出せず、ブートセクターコードに実行を渡すことができない場合は、次のブートデバイスを試します。これらすべてが失敗した場合、通常はエラー メッセージが表示され、INT 18h が呼び出されます。これにより、ROM 内のオプションの常駐ソフトウェア ( ROM BASIC ) が起動され、ユーザーの確認後に INT 19h によってシステムが再起動されるか、またはシステムが次回の電源投入まで ブートストラッププロセスを停止します。
上記の設計に従わないシステムは次のとおりです。
- CD-ROM は通常、独自のブート セクター構造を持ちます。IBM PC 互換システムの場合、これはEl Torito 仕様に従います。
- Commodore DOSディスク上のC128またはC64ソフトウェアでは、トラック1、セクター0のデータは、文字列「CBM」に対応するマジックナンバーで始まっていました。 [2]
- IBM メインフレーム コンピュータは、ディスクの最初のシリンダーの 1 番目と 2 番目のトラックに少量のブート コードを配置し、ボリューム テーブル オブ コンテンツと呼ばれるルート ディレクトリも、ディスクの最初のシリンダーの 3 番目のトラックの固定位置に配置されます。
- その他の (IBM 互換ではない) PC システムでは、ディスク デバイスのブート セクター形式が異なる場合があります。
手術
IBM PC互換機では、 BIOSはVBRとMBRの違いやパーティション分割を認識しません。ファームウェアは単にストレージデバイスの最初のセクターを読み込んで実行します。[3]デバイスがフロッピーまたはUSBフラッシュドライブの場合、それはVBRになります。デバイスがハードディスクの場合、それはMBRになります。一般的にディスクパーティション分割を理解し、ブートするように設定されているプライマリパーティション(アクティブパーティション)のVBRを読み込んで実行する責任があるのはMBRのコードです。次に、VBRはディスク上の別の場所から第2段階のブートローダを読み込みます。
さらに、フロッピー ディスク、USB デバイス、ハード ディスク、またはその他の起動可能なストレージ デバイスの最初のセクターに保存されているものは、OS のブートストラップ コードをすぐにロードする必要はありません (ロードする必要があったとしても)。セクターが、最後の 2 バイトに 0x55、0xAA のブート レコード署名があるという非常に単純な条件を満たしている限り、BIOS はそこに存在するものに制御を渡すだけです。このため、MBR にある通常のブートストラップ コードを、より複雑なローダー、さらには大規模な多機能ブート マネージャー(デバイスの他の場所に保存され、オペレーティング システムなしで実行できるプログラム) に簡単に置き換えることができ、次に何が起こるかについてユーザーがいくつかの選択肢を持つことができます。このような自由度があるため、ブート セクター ウイルスの形で悪用されることがよくあります。
ブートセクターウイルス
ブートセクター内のコードは自動的に実行されるため、ブートセクターは歴史的にコンピューターウイルスの一般的な攻撃ベクトルとなってきました。
この動作に対処するため、システム BIOS には、ソフトウェアが接続されたハード ドライブの最初のセクターに書き込むことを防ぐオプションが含まれていることがよくあります。これにより、パーティション テーブルを含むマスター ブート レコードが誤って上書きされることを防止できますが、ブート可能なパーティション内のボリューム ブート レコードは保護されません。 [4] BIOS によっては、保護されたセクターへの書き込み試行が、ユーザーの操作の有無にかかわらずブロックされる場合があります。ただし、ほとんどの BIOS では、ユーザーが設定を上書きできるポップアップ メッセージを表示します。BIOS オプションは既定で無効になっています。これは、メッセージがグラフィック モードでは正しく表示されない可能性があり、MBR へのアクセスをブロックすると、オペレーティング システムのセットアップ プログラムやディスク アクセス、暗号化、またはFDISKなどのパーティション ツールで問題が発生する可能性があるためです。これらのツールは、その可能性を認識するように作成されていない可能性があり、異常終了してディスク パーティションが不整合な状態になることがあります。[nb 1]
例えば、マルウェアNotPetyaはオペレーティングシステムの管理者権限を取得し、コンピュータのブートセクターを上書きしようとします。[5] [6] CIAは、他のマルウェアが使用する追加のドライバーをロードするためにブートセクターを変更しようとするマルウェアも開発しました。[7] ブートセクターを上書きする別のマルウェアはMEMZです。
参照
- マスターブートレコード(MBR)
- ボリューム ブート レコード(VBR)
注記
- ^ BIOS ブート セクター保護機能を認識するように作成された FDISK ユーティリティの 1 つに、DR-DOS の FDISK R2.31 (およびそれ以降) があります。このユーティリティは、このシナリオを検出し、追加の対話型メッセージを表示して、ユーザーをガイドします。他のFDISKユーティリティとは異なり、DR-DOS FDISK はパーティション ツールであるだけでなく、新しく作成されたパーティションを FAT12、FAT16、または FAT32 としてフォーマットすることもできます。これにより、間違ったボリュームを誤ってフォーマットするリスクが軽減されます。
参考文献
- ^ 「UEFI - OSDev Wiki」. wiki.osdev.org . 2020年9月26日閲覧。
- ^ Commodore 128 プログラマーズリファレンスガイド。バンタムブックス。1986年。446~667ページ。ISBN 0-553-34292-4。
- ^ Smith, Roderick W. (2010-04-14). 「GRUB 2 への移行」. Ibm.com . 2013-03-05閲覧。
- ^ 「Intel デスクトップ ボード BIOS 設定辞書」(PDF) . Intel . 2013 年 9 月 1 日閲覧。
- ^ 「新しいランサムウェアの亜種「Nyetya」が世界中のシステムを侵害」。blog.talosintelligence.com。2017年6月27日。 2018年5月28日閲覧。
- ^ 「世界規模のマルウェア攻撃の時代に、キルスイッチがないと何が起こるのか?」CIO Dive 。2018年5月28日閲覧。
- ^ 「CIA、ブートセクターを変更してマルウェアをさらにロードするWindowsマルウェアを開発」。情報セキュリティ新聞。2017年9月1日。 2018年5月28日閲覧。
外部リンク
- Mary Landesman. 「ブート セクタ ウイルス」。2011 年 7 月 7 日にオリジナルからアーカイブ。2006年 8 月 18 日に取得。
- Microsoft。「Windows でブート セクターをウイルスから保護する方法」。ナレッジベース。
- デニー・リン (1994 年 6 月 15 日)。「安価なブート セクター ウイルス検出および予防技術」 。2015年8 月 13 日閲覧。
- Kaspersky Lab. 「ブート セクタ ウイルス」。ウイルス百科事典 / マルウェアの説明 / クラシック ウイルス。2007 年 8 月 22 日にオリジナルからアーカイブ。2006年 6 月 5 日に取得。
- Arman Catacutan. 「ウイルス用語集」。ブートウイルス。2006 年 12 月 11 日にオリジナルからアーカイブ。2006年 11 月 7 日に取得。
- Greg O'Keefe。「x86 リアル モードでブート プログラムを作成するサンプル」。
- Susam Pal. 「GNU アセンブラを使用したブート セクター コードの記述」。
- Pierre Ancelot. 「詳細な説明付きのブートセクターアセンブリコード」。2013 年 1 月 29 日にオリジナルからアーカイブされました。
