web-dev-qa-db-ja.com

ノートパソコンの改ざんとブートローダー

私は自分のラップトップを物理的なアクセスや改ざんの試みからどの程度保護できるかを調べようとしています。

セットアップ:Linuxインストール済みのThinkPad

これまでに行ったこと:

  • / boot以外のすべてに対してcryptsetupを使用したディスク暗号化
  • uEFIセットアップメニューに入るのはスーパーバイザーパスワードで保護されています
  • linuxがインストールされたプライマリSSDを除くすべての起動デバイスが無効になっています
  • 下部カバーの改ざん検出が有効になっています

ディスク暗号化のため、デバイスを改ざんしてパスワードを盗聴せずにデータにアクセスすることはできません。ハードウェアキーロガーの埋め込みは、Lenovoの底部カバーの改ざん検出により非常に困難なはずです。これは、カバーが取り外されたときに警告を発します。他のすべてのブートデバイスが無効になっているため、ライブシステムをブートして暗号化されていない/ bootパーティションを変更することはできません。スーパーバイザーパスワードのため、UEFIでそれぞれの設定を変更することはできません。

しかし、攻撃者はGRUBブートローダーが表示されるまでシステムを起動できます。 grubは暗号化されていない/ bootパーティションを改ざんする可能性を提供しますか?

1
firefexx

GRUBをロックダウンし、GRUBシェルへのアクセスを奪うことをお勧めします。

GRUBマニュアル: 認証と承認 (アーカイブ ここ 。)

デフォルトでは、コンソールに物理的にアクセスできる人なら誰でも、ブートローダーインターフェイスにアクセスできます。誰でも任意のメニューエントリを選択して編集でき、GRUBシェルプロンプトに直接アクセスできます。ほとんどの場合直接物理アクセスを持つ人はフルアクセスを取得するために他のさまざまな方法を持っているため、これは合理的です。また、ブートローダーレベルで認証を要求すると、壊れたシステムの回復が困難になります。

そうしないと、誰かがGRUBシェルにアクセスし、「chainloader」コマンドを使用して、別のパーティションのパーティションブートレコード(おそらくUSBドライブから)にブートする)を実行する可能性があります。

[〜#〜] grub [〜#〜] 上のArchWikiエントリ(アーカイブ ここ 。)

GRUBのコマンドシェル環境を使用して、オペレーティングシステムを起動できます。一般的なシナリオは、チェーンロードを介してドライブ/パーティションに保存されているWindows/Linuxを起動することです。

私はこれを試したことはありません。しかし、それは十分に危険に聞こえます。

2
StackzOfZtuff

GRUB自体では/ bootを変更できませんが、/ bootの暗号化されていないinitramfsでレスキューシェルを起動できます。

GRUB=自体は/bootを改ざんする機能はあまりありませんが、レスキューシェルを使用してシングルユーザーモードで起動できます。/bootにはブートローダーが含まれています、カーネル、およびinitramfs(initial RAM filesystem)です。initramfsには、起動に必要なその他のツールと、ビジーボックスなどのレスキュー環境で有用なツールが含まれており、軽量GNU coreutils、およびashなどのシェルの代わりに使用できます。攻撃者はGRUBを使用してinitramfsのレスキューシェルを起動しますが、通常はこれが可能です。 init=/bin/shをkernel/linuxオプションに追加します。これにより、デフォルトのinitスクリプト(/init)が上書きされ、代わりにinitramfsにインタラクティブなシェルを提供するように指示します。そこから/bootをマウントできます。必要なのは編集ツールだけなので、これは完全に可能です(initramfsにはすべての便利なcoreutilsと、edやviなどのテキストエディターが含まれています) 、およびツールはinitramfs(tarのようなcpio、およびxzまたはgzipのような圧縮ツール)を解凍して再パックする必要があります。

あなたのラップトップを攻撃したい場合、プロセスは次のようになります。

  1. GRUBシェルで起動し、手動でカーネルとinitramfsを設定し、init=/bin/shを追加します

  2. /mnt/bootを作成し、暗号化されていないブートパーティションをマウントします。

  3. Initramfsを復号化し、cpioを使用して一時ディレクトリに解凍します。

  4. 復号化した後でルートファイルシステムにバックドアを追加するなど、悪質なことを行うようにinitスクリプトを変更します。

  5. Initramfsをcpioで再パックし、再圧縮します。

  6. 古いinitramfsをトロイの木馬で上書きし、電源を切り、立ち去ります。

1
forest