Bootkitの脅威 ～ BlackLotus（UEFIブートキット）の脅威 ～

## 概要
Bootkitは、コンピュータのブートプロセスをターゲットとしたマルウェアの一種です。
具体的にはブートローダやUEFI（Unified Extensible Firmware Interface）に感染し、OSが完全にロードされる前に実行されます。これにより高いステルス性と持続性を持ち、特に危険で強力なマルウェアとしてカテゴライズされています。

### 特徴
- 持続性
Bootkitはブートローダやファームウェアに感染するため、ディスクのクリーンアップやOSの再インストールによって除去することができません。
除去するためにはファームウェアの焼き直しや、ハードウェアの交換が必要となります。

- ステルス性
Bootkitはコンピュータの起動時に実行され、ファイルシステム外で活動するため、OS内で実行されるセキュリティソフトウェアでは検知が困難です。
そのため、一度感染すると長期間に渡り感染が持続する可能性があります。

- 特権
Bootkitは管理者権限により実行されます。
それにより、後続のマルウェアの感染を容易にし、システム全体に対して甚大な影響をもたらします。

### 感染シナリオ
Bootkitの感染経路には主に以下の2通りがあります。
- リモートからの感染
悪意あるリンクや、添付ファイルを含むフィッシングメールを開くことでBootkitのインストールが行われる懸念があります。

- 物理的なUSBデバイスを介した感染
感染したUSBデバイスをシステムに接続することで、感染する懸念があります。


## 実際に悪用されたBootkit ~BlackLotus~

BlackLotusはWindows向けに設計された、UEFIブートキットとして知られるマルウェアです。
このマルウェアはインストールされると、コマンド＆コントロール（C&C）サーバと通信し、リモートからシステムに対して管理者権限でのアクセスを可能とします。高いステルス性を備え、多くのセキュリティ機構を回避することができ、最新のパッチが適用されたシステムでも動作可能です。
そのため、2022年10月頃から、ダークウェブで約5000ドルと高額で販売されていました。

通常Bootkitは、UEFIセキュアブートを有効化することで防ぐことが可能です。
しかし、このマルウェアではUEFIセキュアブートバイパスの脆弱性であるCVE-2022-21894（通称 : Baton Drop）を利用することで、UEFIセキュアブートが有効化されている環境でも悪用することができます。
この脆弱性は2022年1月のパッチで修正されていますが、対策が不十分であると指摘されており現在も悪用が可能です。
参考 : [セキュアブートのセキュリティ機能のバイパスの脆弱性](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-21894)

それを踏まえ、2023年4月11日にMicrosoftはCVE-2022-21894を悪用したBlackLotusが使用されていないかを調査するためのガイダンスを発表しました。
参考 : [Guidance for investigating attacks using CVE-2022-21894: The BlackLotus campaign](https://www.microsoft.com/en-us/security/blog/2023/04/11/guidance-for-investigating-attacks-using-cve-2022-21894-the-blacklotus-campaign/)

また2023年5月9日には、新たに変更されたBlackLotusで利用されているUEFIセキュアブートバイパスの脆弱性であるCVE-2023-24932の修正方法に関するガイダンスを発表しています。
参考 : [Guidance related to Secure Boot Manager changes associated with CVE-2023-24932](https://msrc.microsoft.com/blog/2023/05/guidance-related-to-secure-boot-manager-changes-associated-with-cve-2023-24932/)

しかし2023年7月に、オリジナルのBlackLotusに変更を加えたソースコードが公開されました。
これより、このコードを基に新たなコードを組み合わせた亜種のマルウェアが多く生み出される恐れがあります。
参考 : [迫りくる新たな脅威、「BlackLotus」UEFIブートキット](https://eset-info.canon-its.jp/malware_info/special/detail/230502.html)

## 技術検証
本検証ではBootkitが読み込まれた後、認証を必要とせずにプロセスを実行するフローに焦点を当てました。

### 起動シーケンス
コンピュータでは電源がOnになると、ファームウェアが実行されます。
ブートローダはファームウェアによって一番最初に呼び出されるコンポーネントであり、OSをディスクからメモリにロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801825/0c679648-666f-94c1-4b68-a34e59090630.png)
引用 : [Mickey Shkatov Jesse Michael - One Bootloader to Load Them All.pdf](https://media.defcon.org/DEF%20CON%2030/DEF%20CON%2030%20presentations/Mickey%20Shkatov%20%20%20Jesse%20Michael%20-%20One%20Bootloader%20to%20Load%20Them%20All.pdf)

Bootkitではこのプロセスに介入し、正規のブートローダが呼び出される前に自身（悪意あるブートローダ）を呼び出させることで、OS起動前に制御を取得します。

### WPBTの脆弱性
本検証BootkitではWindows Platform Binary Table（WPBT）の脆弱性を利用し、ファームウェアによってブートローダが呼び出された際に、任意のバイナリをインストールしました。

WPBTとは、主にPC製造時にOEM（メーカー）が自社製のソフトウェアをインストールするのに使われる機能です。この機能により、特定のアプリケーションやドライバをPC起動時に自動的にロードしています。

今回利用した脆弱性は、MicrosoftがWPBTバイナリに対して署名を要求しているにも関わらず、期限切れまたは失効した証明書を受け入れてしまうことに起因します。
これにより、任意のバイナリをWPBTにインストールすることが可能です。
参考 :
[Microsoft Intuneのデバイスファームウェア構成インターフェイス (DFCI) プロファイル設定](https://learn.microsoft.com/ja-jp/mem/intune/configuration/device-firmware-configuration-interface-windows-settings#security-features)
[EVERYONE GETS A ROOTKIT](https://eclypsium.com/blog/everyone-gets-a-rootkit/)

バイナリをインストール後は、通常のWindowsのブートローダをロード/実行し、Windows OSを起動します。

### 実行バイナリ
WindowsではOSが実行された際に、認証UIを画面に出力するためにLogonUI.exeが実行されます。
このLogonUI.exeを他のプログラムに差し替えることで、認証前に他のプログラムを実行することができます。

WindowsのレジストリにはImage File Execution Optionsという、開発中のプログラムのデバッグによく用いられる機能が存在します。
指定される値名”Debugger”は、実行ファイルが開始されるたびに特定の動作を行うよう設定することが可能です。
これを用いて、LogonUI.exeのレジストリキーにcmd.exeを実行させる値を設定することで、認証前にコマンドプロンプトにアクセスできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801825/cac87244-78e5-120c-e4b8-5b5d3a73498e.png)
参考 : [Image File Execution Options](https://learn.microsoft.com/ja-jp/previous-versions/windows/desktop/xperf/image-file-execution-options)

またレジストリ"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”の値を書き換えることで、BitLockerが設定されていた場合でも、認証後任意のプログラムが自動で実行されるようにすることが可能です（起動前認証は行う必要がある）。

### 実行
作成したUEFIを仕込み、システムを起動することで認証を必要とせずにcmd.exeを実行することが出来ました。
![IMG_6075.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801825/2679f9ce-2d4d-0910-6c38-71865a6e90ab.jpeg)


### WPBTの脆弱性対策
WPBTの脆弱性は、レジストリからDisableWpbtExecutionを有効にすることで対策可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801825/7f1e02ab-bc70-2634-3883-fe63fd0d96d6.png)

また、MicrosoftはWDAC（Windows Defender Application Control）ポリシーを用いて実行可能なファイルを制限することを推奨しています。
WDACを使用すると、許可されたアプリケーションのみを実行するポリシーを設定できます。
これにより、不正なコードの実行を防ぎ、システムのセキュリティを強化することができます。
参考 : [Windows Defenderアプリケーション制御とAppLockerの概要](https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/windows-defender-application-control/wdac-and-applocker-overview)

## リスクシナリオ
Bootkitに感染すると、攻撃者はシステムに対して完全なアクセス権を取得できます。
これにより次のようなリスクが考えられます。

- ネットワークの侵害
BootkitはC&Cサーバと通信する機能を持つため、感染させた端末を足場に内部ネットワークへアクセスすることが可能です。
そのため内部ネットワークの侵害を行い、最終的にランサムウェアの実行などを行う懸念があります。

- 情報搾取
Bootkitは管理者権限により実行され、ステルス性が高いため、感染した端末から機密性の高い情報を継続的に抜き取ることが可能です。
そのためスパイ活動に使用されるだけでなく、窃取した情報の公開と引き換えに対価を要求するノーウェアランサムの手口にも用いられる恐れがあります。

- さらなるマルウェアのインストール
Bootkitはシステムへの完全なアクセス権を得るため、内部のアンチウイルスソフトを無効化することが可能です。
これにより、アンチウイルスソフトを無効化し、キーロガーなどのスパイウェアをインストールして情報を搾取する懸念があります。

## Bootkit対策

Bootkitの総合的な対策として以下のようなポイントがあげられます。

- セキュアブートの有効化
セキュアブートを有効にすることで、信頼できるソフトウェアのみが起動されるようにします。
これにより、未署名のブートローダやファームウェアの実行を防ぎます。

- ソフトウェアやファームウェアの定期的な更新
定期的にパッチやアップデートを適用することで、既知の脆弱性を修正し、システムを最新の状態に保ちます。
これによりセキュアブートバイパスの脆弱性を防ぎます。

また物理的な端末への接触を想定した対策も重要です。

- スーパーバイザーパスワードの設定
BIOSメニューに入る際に、パスワードロックをかけることでBIOS設定を保護します。
これにより物理的に端末に接触された際に、セキュアブートを無効にされることを防ぎます。

- 物理的なアクセス管理
物理的に端末にアクセスされUSBデバイス経由などで感染させられることのないよう、厳重に管理します。

しかし一度感染してしまったら、Bootkitの検出は非常に困難です。
検知するためには、端末の外側から通信を解析することを推奨します。
- IDSやNDRの利用
侵入検知システム（IDS）やネットワーク検出および応答（NDR）を導入し、異常なネットワーク活動を早期に検知します。
これにより、感染時の早期発見につながり迅速な対応が可能になります。


## 最後に
これまで記載してきたように、Bootkitは、高いステルス性と持続性を持つ非常に危険なマルウェアです。
特に、BlackLotusのようなUEFIブートキットは最新のセキュリティ対策をも回避する能力を持っています。
これを防ぐためには、セキュアブートの有効化やソフトウェアの定期的な更新などの対策が必要です。また、物理的に接触され感染させられるのを防ぐために物理的なアクセス管理が重要な点もBootkitの特筆すべき点と言えるでしょう。総合的なセキュリティ対策を講じることで、Bootkitの脅威からシステムを守ることが可能です。


## 弊社について
弊社「ストーンビートセキュリティ株式会社」は情報セキュリティの専門企業（技術者集団）です！脆弱性診断やペネトレーションテスト、レッドチーム、フォレンジックから緊急対応支援などのサービスを展開しています。

:::note info
情報セキュリティの専門企業である「ストーンビートセキュリティ株式会社」は、安心して利用できる情報社会を実現するため、情報セキュリティ人材の育成や対策支援サービスなど、人や組織に根ざした幅広いセキュリティ対策を提供しています。
:::
弊社ホームページ : https://www.stonebeat.co.jp/