ゼファーネットのロゴ

BlackLotus UEFI ブートキット: 神話が確認されました

日付:

完全に更新された UEFI システムで UEFI セキュア ブートをバイパスする最初の野生の UEFI ブートキットが現実のものになりました

近年発見された UEFI 脆弱性の数と、適切な時間枠内でのパッチの適用または脆弱なバイナリの取り消しの失敗は、攻撃者によって見過ごされていません。 その結果、重要なプラットフォーム セキュリティ機能をバイパスする最初の公に知られている UEFI ブートキットである UEFI セキュア ブートが現実のものとなりました。 このブログ投稿では、UEFI セキュア ブートが有効になっている完全に最新の Windows 11 システムでも実行できる、この UEFI ブートキットの最初の公開分析を紹介します。 ブートキットの機能とその個々の機能により、私たちは、 黒蓮, ハッキング フォーラムで販売されている UEFI ブートキット 少なくとも 5,000 年 2022 月以降は XNUMX ドル。

UEFI ブートキットは非常に強力な脅威であり、OS の起動プロセスを完全に制御できるため、さまざまな OS セキュリティ メカニズムを無効にし、OS の起動初期段階で独自のカーネル モードまたはユーザー モードのペイロードを展開できます。 これにより、彼らは非常に密かに、高い特権で操作することができます。 これまでのところ、実際に発見され、公に説明されているものはごくわずかです (たとえば、複数の 悪意のある EFI サンプル 2020 年に発見した、または昨年発見したようなフル機能の UEFI ブートキット – ESPector ブートキット - または FinSpy ブートキット Kaspersky の研究者によって発見されました)。

UEFI ブートキットは、次のようなファームウェア インプラントと比較すると、ステルス性が失われる可能性があります。 ロジャックス; ブートキットは簡単にアクセスできる FAT2018 ディスク パーティションに配置されているため、32 年に私たちのチームによって発見された、世界初の UEFI ファームウェア インプラントです。 ただし、ブートローダーとして実行すると、ファームウェア インプラントとほぼ同じ機能が得られますが、BWE、BLE、PRx 保護ビットなどのマルチレベル SPI フラッシュ防御や、ハードウェアによって提供される保護 (Intel Boot Guard など) を克服する必要はありません。 )。 確かに、UEFI セキュア ブートは UEFI ブートキットの邪魔をしますが、この重要なセキュリティ メカニズムをバイパスできる無視できない数の既知の脆弱性があります。 そして最悪なのは、BlackLotus によって悪用されたものを含め、この記事の執筆時点でも最新のシステムで簡単に悪用できるものがあることです。

私たちの調査は、2022 年後半のテレメトリーで、BlackLotus ユーザー モード コンポーネント (HTTP ダウンローダー) であることが判明したいくつかのヒットから始まりました。最初の評価の後、サンプルで見つかったコード パターンから、XNUMX つの BlackLotus が発見されました。インストーラー (VirusTotal と私たち自身のテレメトリーの両方)。 これにより、実行チェーン全体を調査し、ここで扱っていたのが単なる通常のマルウェアではないことに気付くことができました。

以下は、BlackLotus に関する重要なポイントと、それに関連する一連のイベントをまとめたタイムラインです。

  • UEFI セキュア ブートが有効になっている、完全にパッチが適用された最新の Windows 11 システムで実行できます。
  • XNUMX 年以上前の脆弱性 (CVE-2022-21894) UEFI セキュア ブートをバイパスし、ブートキットの永続性をセットアップします。 これは、この脆弱性が実際に悪用された最初の事例です。
  • この脆弱性は Microsoft の 2022 年 XNUMX 月の更新で修正されましたが、影響を受けるため、その悪用は依然として可能です。 有効に署名された バイナリはまだ UEFI失効リスト. BlackLotus はこれを利用して、脆弱性を悪用するために、正当ではあるが脆弱なバイナリの独自のコピーをシステムに持ち込みます。
  • BitLocker、HVCI、Windows Defender などの OS セキュリティ メカニズムを無効にすることができます。
  • インストール後のブートキットの主な目的は、カーネル ドライバー (特に、ブートキットが削除されないように保護する) と、C&C との通信を担当し、追加のユーザー モードまたはカーネル モードのペイロードをロードできる HTTP ダウンローダーを展開することです。 .
  • BlackLotus は、少なくとも 6 月 XNUMX 日以降、アンダーグラウンド フォーラムで宣伝および販売されています。th、2022 年。このブログ投稿では、ブートキットが本物であり、広告が単なる詐欺ではないという証拠を提示します。
  • 興味深いことに、私たちが分析した BlackLotus インストーラーの一部は、侵害されたホストが次のロケールのいずれかを使用している場合、ブートキットのインストールを続行しません。
    • ルーマニア語 (モルドバ)、ro-MD
    • ロシア語 (モルドバ)、ru-MD
    • ロシア語 (ロシア)、ru-RU
    • ウクライナ語 (ウクライナ) 、uk-UA
    • ベラルーシ語 (ベラルーシ)、be-BY
    • アルメニア語 (アルメニア)、hy-AM
    • カザフ語 (カザフスタン)、kk-KZ

BlackLotus に関連する個々のイベントのタイムラインを図 1 に示します。

図 1. BlackLotus UEFI ブートキットに関連する主要なイベントのタイムライン

すでに述べたように、ブートキットは少なくとも 6 月 XNUMX 日以降、アンダーグラウンド フォーラムで販売されています。th、2022年。現時点では、テレメトリから、ブートキットを被害者に展開するために使用された正確な配布チャネルを特定できていません。 公開情報源とテレメトリの両方から取得できた BlackLotus サンプルの数が少ないことから、BlackLotus の使用を開始した攻撃者はまだ多くはないと考えられます。 しかし、BlackLotus が依存している脆弱なブートローダーが取り消されるまで、このブートキットが有名なクライムウェア グループの手に渡った場合、ブートキットの簡単な展開とクライムウェア グループの拡散能力に基づいて、状況が急速に変化することが懸念されます。ボットネットを使用するマルウェア。

これは本当にBlackLotusですか?

BlackLotus に関する情報をまとめた記事や投稿がいくつかあります (こちら, こちら & こちら などなど…)、すべてブートキットの開発者が地下のハッキング フォーラムで提供した情報に基づいています。 これまでのところ、これらの主張を確認または反証した人はいません。

ブートキット サンプルのリバース エンジニアリング中に発見したものと比較した、利用可能な出版物からの主張の要約を以下に示します。

  • ハッキング フォーラムに関する BlackLotus の広告は、統合されたセキュア ブート バイパス機能を備えていると主張している. この脆弱性は現在も使用されている何百ものブートローダーに影響を与えるため、脆弱なドライバーを UEFI 失効リストに追加することは現在不可能です。 ✅
    • 真: 悪用する CVE-2022-21894 セキュア ブートを中断し、UEFI セキュア ブート対応システムで永続性を実現するため。 それが使用する脆弱なドライバーは、最新のバージョンではまだ取り消されていません dbxの、執筆時点。
  • ハッキング フォーラムに関する BlackLotus の広告では、ブートキットには削除に対する Ring0/Kernel 保護が組み込まれていると主張しています。 ✅
    • True: カーネル ドライバーは、EFI システム パーティション (ESP) 上のファイルに属するハンドルを閉じないように保護します。 保護の追加レイヤーとして、これらのハンドルは継続的に監視され、これらのハンドルのいずれかが閉じられるとブルー スクリーン オブ デス (BSOD) がトリガーされます。 ESP 上のブートキット ファイルを削除から保護する のセクションから無料でダウンロードできます。
  • ハッキング フォーラムに関する BlackLotus の広告では、アンチ仮想マシン (アンチ VM)、アンチデバッグ、およびマルウェア分析の試みをブロックするコード難読化機能が付属していると主張しています。 ✅
    • 真: VM 対策、デバッグ対策、難読化のさまざまな手法が含まれており、複製や分析を困難にしています。 ただし、ここではブレークスルーや高度な分析防止技術について話しているわけではありません。
  • ハッキング フォーラムに関する BlackLotus の広告は、その目的が HTTP ダウンローダーとして機能することであると主張しています。 ✅
  • ハッキング フォーラムに関する BlackLotus の広告では、HTTP ダウンローダーが 正規のプロセス内で SYSTEM アカウントで実行されます。 ✅
    • True: その HTTP ダウンローダーは、 winlogon.exeが プロセスコンテキスト.
  • ハッキング フォーラムに関する BlackLotus の広告は、 ディスク上のサイズがわずか 80 kB の小さなブートキットです。 ✅
    • True: 実際に取得できたサンプルは 80 kB 程度です。
  • ハッキング フォーラムに関する BlackLotus の広告では、ハッキングが可能であると主張しています。 HVCI、Bitlocker、Windows Defender などの組み込みの Windows セキュリティ保護を無効にし、ユーザー アカウント制御 (UAC) をバイパスします。 ✅

これらの事実に基づいて、私たちが実際に発見したブートキットは BlackLotus UEFI ブートキットであると確信しています。

攻撃の概要

BlackLotus 侵害チェーンの簡略化されたスキームを図 2 に示します。これは、次の XNUMX つの主要部分で構成されています。

  1. インストーラーの実行から始まります (図 1 のステップ 2)。このインストーラーは、ブートキットのファイルを EFI システム パーティションに展開し、HVCI と BitLocker を無効にして、マシンを再起動します。
  2. 最初の再起動後、CVE-2022-21894 のエクスプロイトとその後の攻撃者の登録 機械所有者キー (MOK) が発生し、UEFI セキュア ブートが有効になっているシステムでも持続性を実現します。 次に、マシンが再起動されます (図 2 の手順 4 ~ 2)。
  3. 以降のすべての起動で、自己署名付き UEFI ブートキットが実行され、カーネル ドライバーとユーザー モード ペイロード (HTTP ダウンローダー) の両方がデプロイされます。 これらのコンポーネントを組み合わせることで、C&C サーバーから追加のユーザー モード コンポーネントとドライバー コンポーネントをダウンロードして実行し、ブートキットが削除されないように保護できます (図 5 のステップ 9 ~ 2)。

図 2. BlackLotus の簡略化された実行の概要

興味深いアーティファクト

これは BlackLotus UEFI ブートキットであると考えられますが、分析したサンプルではこの名前への言及は見つかりませんでした。 代わりに、コードはへの参照でいっぱいです ひぐらしのなく頃に アニメシリーズ、たとえば個々のコンポーネント名で、 higurashi_installer_uac_module.dll & ひぐらし_カーネル.sys、およびブートキット バイナリの署名に使用される自己署名証明書にも含まれています (図 3 を参照)。

図 3. BlackLotus ブートキットで使用される自己署名証明書

さらに、コードは復号化しますが、BlackLotus 作成者からのメッセージを含むさまざまな文字列を使用することはありません (図 4 に示すように、 ハシェレザード 有名な研究者であり、さまざまなマルウェア分析ツールの作成者です)、またはさまざまな曲、ゲーム、またはシリーズからのランダムな引用です。

図 4. BlackLotus の作成者がコードに残したメッセージの例

インストールプロセス

BlackLotus インストーラーの分析から始めます。 ブートキットは、オフラインとオンラインの XNUMX つのバージョンがあるインストーラーの形で配布されているようです。 これら XNUMX つの違いは、正当な (ただし脆弱な) Windows バイナリを取得する方法にあり、後でセキュア ブートをバイパスするために使用されます。

  • オフライン バージョンでは、Windows バイナリがインストーラーに組み込まれています。
  • オンライン バージョンでは、Windows バイナリは Microsoft シンボル ストアから直接ダウンロードされます。 これまでのところ、次の Windows バイナリが BlackLotus ブートキットによって悪用されていることが確認されています。
    • https://msdl.microsoft.com/download/symbols/bootmgfw.efi/7144BCD31C0000/bootmgfw.efi
    • https://msdl.microsoft.com/download/symbols/bootmgr.efi/98B063A61BC000/bootmgr.efi
    • https://msdl.microsoft.com/download/symbols/hvloader.efi/559F396411D000/hvloader.efi

インストーラーの目的は明確です。BitLocker ディスク暗号化や HVCI などの Windows セキュリティ機能を無効にし、悪意のあるブートキットを含む複数のファイルを ESP に展開します。 完了すると、侵害されたマシンを再起動して、ドロップされたファイルが機能するようにします。これにより、UEFI セキュア ブート保護の状態に関係なく、システムが起動するたびに自己署名付き UEFI ブートキットがサイレント モードで実行されるようになります。

ステップ 0 – 初期化と (潜在的な) 昇格

インストーラーが実行されると、残りのファイルを ESP にデプロイし、HVCI のオフや BitLocker の無効化など、昇格されたプロセスを必要とする他のアクションを実行するのに十分な特権 (少なくとも管理者が必要) があるかどうかがチェックされます。 そうでない場合は、ここで詳しく説明されている UAC バイパス方法を使用して、インストーラーを再度実行して昇格を試みます。 プログラム互換性アシスタントによる UAC バイパス.

必要な権限を使用して、利用可能な Windows API 関数を使用して SecureBoot UEFI 変数の値を読み取ることで UEFI セキュア ブートの状態を確認し、直接アクセスして Windows のバージョンを特定します。 KUSER_SHARED_DATA 構造体フィールド Ntメジャーバージョン & Ntマイナーバージョン 記憶に。 これは、被害者のシステムにブートキットを展開するために UEFI セキュア ブートをバイパスする必要があるかどうかを判断するために行われます (セキュア ブートのサポートは Windows 8 で最初に追加され、特定のマシンでは有効になっていない可能性があるため)。

次の手順に進む前に、正規の Windows ブート マネージャー (bootmgfw.efi) にあるバイナリ ESP:EFIマイクロソフトブート へのディレクトリ winload.efi. これで改名 bootmgfw.efi バックアップは後でブートキットによって使用され、OS を起動したり、C&C サーバーから「アンインストール」コマンドを受信した場合は元のブート チェーンを復元したりします。 C&Cコミュニケーション のセクションから無料でダウンロードできます。

ステップ 1 – ファイルの展開

UEFI セキュア ブートが有効になっている場合、インストーラは複数のファイルを ESP:/EFI/マイクロソフト/ブート/ & ESP:/system32/ ディレクトリ。 前者は Windows で使用される標準のディレクトリですが、後者はインストーラーによって作成されるカスタム フォルダーです。

インストーラーによってドロップされるファイルのリストと、実行チェーンにおける各ファイルの役割の簡単な説明を表 1 に示します。実行チェーンがどのように機能するかについては、後で詳しく説明します。 いくつかの正当な Microsoft 署名付きファイルが、悪意のあるファイルと共に投下されることに注意してください。

表 1. UEFI セキュア ブートが有効になっているシステムで BlackLotus インストーラーによって展開されるファイル

フォルダ ファイル名 説明
ESP:EFIマイクロソフトブート grubx64.efi BlackLotus ブートキット、悪意のある自己署名 UEFI アプリケーション。
ブートロード.efi 正規の Microsoft 署名付き シム バイナリ (一時的な名前、後で置き換えます bootmgfw.efi After CVE-2022-21894 搾取)。
bootmgfw.efi 正当だが脆弱な (CVE-2022-21894) Windows ブート マネージャー バイナリ。インストーラーに埋め込まれているか、Microsoft シンボル ストアから直接ダウンロードされます。
BCD 攻撃者の習慣 ブート構成データ (BCD)で使用されるストア CVE-2022-21894 搾取チェーン。
BCDR 被害者の元の BCD ストアのバックアップ。
ESP:システム32 hvloader.efi 正当だが脆弱な (CVE-2022-21894) Windows ハイパーバイザー ローダー バイナリ。インストーラー内に埋め込まれているか、Microsoft シンボル ストアから直接ダウンロードされます。
ブートマネージャー.efi 正当だが脆弱な (CVE-2022-21894) Windows ブート マネージャー バイナリ。インストーラー内に埋め込まれているか、Microsoft シンボル ストアから直接ダウンロードされます。
mcupdate_AuthenticAMD.dll 悪意のある自己署名ネイティブ PE バイナリ。 このファイルは、 hvloader.efi CVE-2022-21894 の悪用に成功した後 (AMD CPU を使用するシステムで)。
mcupdate_本物のインテル.dll 悪意のある自己署名ネイティブ PE バイナリ。 このファイルは、 hvloader.efi 成功した後 CVE-2022-21894 エクスプロイト (Intel CPU を使用するシステム上)。
BCD で使用される攻撃者のカスタム BCD CVE-2022-21894 搾取チェーン。

被害者が UEFI セキュア ブートをサポートしていないバージョンの Windows を実行している場合、またはそれが無効になっている場合、展開は非常に簡単です。 悪意のあるブートキットを展開するために必要なのは、既存の Windows ブート マネージャー (bootmgfw.efi) のバイナリ ESP:EFIマイクロソフトブート ディレクトリに、攻撃者自身の自己署名された悪意のある UEFI アプリケーションが含まれています。 UEFI セキュア ブートが無効になっている (つまり、起動中に整合性検証が実行されない) ため、悪用は必要なく、UEFI ファームウェアは、セキュリティ違反を引き起こすことなく、悪意のあるブート マネージャーを実行するだけです。

ステップ 2 – ハイパーバイザーで保護されたコードの整合性 (HVCI) を無効にする

カスタムの署名されていないカーネル コードを後で実行できるようにするには、インストーラーは次のことを確認する必要があります。 HVCI システムで無効になっています。 ESET の同僚の 2022 人が、XNUMX 年にこのトピックに関する非常に有益なブログ投稿を書きました (署名されたカーネルドライバー–Windowsのコアへの保護されていないゲートウェイ):

仮想化ベースのセキュリティ (VBS) はいくつかの保護機能を提供します。最も顕著なものは、スタンドアロン機能として提供されるハイパーバイザー保護コード整合性 (HVCI) です。 HVCI は、カーネル内のコードの整合性を強化し、署名されたコードのみを実行できるようにします。 脆弱なドライバーが悪用されて、署名されていないカーネル コードを実行したり、悪意のあるドライバーをロードしたりすることを効果的に防ぎます (使用される悪用方法に関係なく)。 この機能を実装するMicrosoftの背後にある主な動機.

図 5 に示すように、この機能を無効にするために、インストーラーは Enabled レジストリ値を ハイパーバイザー強制コード整合性 レジストリ キーをゼロにします。

図 5. HVCI を無効にする BlackLotus インストーラ関数の Hex-Rays 逆コンパイル コード

ステップ 3 – BitLocker を無効にする

インストーラーによって非アクティブ化される次の機能は BitLockerドライブ暗号化. この理由は、BitLocker を組み合わせて使用​​できるためです。 トラステッドプラットフォームモジュール(TPM) BitLocker ドライブ暗号化がシステムで構成されてから、セキュア ブートを含むさまざまなブート ファイルと構成が改ざんされていないことを確認します。 侵害されたマシンでインストーラーが Windows ブート チェーンを変更することを考慮すると、TPM をサポートするシステムで BitLocker をオンのままにしておくと、次回の起動時に BitLocker 回復画面が表示され、システムが侵害されたことを被害者に知らしめる可能性があります。

この保護を無効にするために、BlackLotus インストーラーは次のことを行います。

  • の下のすべてのボリュームをウォークスルーします。 RootCIMV2セキュリティMicrosoftボリューム暗号化 WMI 名前空間を呼び出して、保護ステータスを確認します。 保護ステータスの取得 の方法 Win32_EncryptableVolume WMIクラス
  • BitLocker によって保護されているものについては、 キープロテクターを無効にする メソッドと 無効化カウント パラメータがゼロに設定されているため、手動で有効にするまで保護が一時停止されます

必要な保護を無効にし、すべてのファイルをデプロイすると、インストーラーは次回のシステム再起動時に削除されるように自身を登録し、マシンを再起動して CVE-2022-21894 の悪用に進みます。

セキュア ブートのバイパスと永続性の確立

このパートでは、BlackLotus が UEFI セキュア ブートが有効になっているシステムで永続性を実現する方法を詳しく見ていきます。 これから説明する実行チェーンは非常に複雑であるため、最初に基本原則を説明し、次に技術的な詳細を掘り下げます。

簡単に言えば、このプロセスは XNUMX つの重要なステップで構成されています。

  1. CVE-2022-21894 を悪用して、セキュア ブート機能をバイパスし、ブートキットをインストールします。 これにより、プラットフォームがまだファームウェアによって所有されており、UEFI ブート サービス機能が引き続き利用可能な初期のブート フェーズで任意のコードが実行される可能性があります。 これにより、攻撃者は、Boot サービスのみの NVRAM 変数の変更など、物理的なアクセスなしでは UEFI セキュア ブートが有効になっているマシンでは実行できない多くのことを実行できるようになります。 これは、攻撃者が次のステップでブートキットの永続性を設定するために利用するものです。 搾取に関する詳細については、 CVE-2022-21894 の悪用 のセクションから無料でダウンロードできます。
  2. 独自の MOK を モクリスト、ブート サービス専用の NVRAM 変数。 これにより、正当な Microsoft 署名付きの シム 自己署名 (に書き込まれた鍵に属する秘密鍵によって署名された) をロードするため モクリスト) ブートごとに脆弱性を悪用する代わりに、UEFI ブートキットを使用します。 詳細については、 ブートキットの永続性 のセクションから無料でダウンロードできます。

次の 6 つのセクションでの詳細な分析を容易にするために、実行図 (図 XNUMX) に示されている手順に従います。

図 6. セキュア ブートをバイパスし、MOK を使用して永続性を設定する

CVE-2022-21894 の悪用

セキュア ブートをバイパスするために、BlackLotus は バトン ドロップ (CVE-2022-21894): セキュア ブート セキュリティ機能バイパスの脆弱性. システムのセキュリティに多大な影響を与えたにもかかわらず、この脆弱性は当然のことながら世間の注目を集めることはありませんでした。 この脆弱性は Microsoft の 2022 年 XNUMX 月の更新で修正されましたが、影響を受けるバイナリがまだ UEFI失効リスト. その結果、攻撃者は脆弱なバイナリの独自のコピーを被害者のマシンに持ち込んで、この脆弱性を悪用し、最新の UEFI システムでセキュア ブートをバイパスできます。

さらに、この脆弱性の概念実証 (PoC) エクスプロイトが 2022 年 1 月から公開されています。BlackLotus VirusTotal が最初に提出された日付 (図 XNUMX を参照) を考慮すると、マルウェア開発者は、利用可能な PoC を自分たちのニーズに適合させただけである可能性があります。このエクスプロイトがどのように機能するかを深く理解する必要があります。

脆弱性の簡単な紹介から始めましょう。ほとんどの場合、公開された記事から重要なポイントを要約します。 GitHub での PoC:

  • 影響を受ける Windows ブート アプリケーション ( ブートマネージャー.efi, hvloader.efi, winload.efi…) アプリケーションによって読み込まれる前に、シリアル化されたセキュア ブート ポリシーをメモリから削除できるようにするには、 メモリを切り捨てる BCD ブート オプション。
  • これにより、攻撃者は次のような他の危険な BCD オプションを使用できます。 ブートデバッグ, テスト署名または nointegritychecks、したがってセキュアブートを壊します。
  • この脆弱性を悪用するさまざまな方法があり、そのうちの XNUMX つが PoC リポジトリで公開されています。
  • 例として、PoC の XNUMX つは、それを悪用して正当なものにする方法を示しています。 hvloader.efi 任意の自己署名をロードする mcupdate_ .dll バイナリ(どこで することができます 純正インテル or 本物のAMD、マシンの CPU に基づきます)。

続いて、BlackLotus がこの脆弱性を悪用する方法について説明します (以下のリストの番号は、図 6 の対応する手順を示しています)。

  1. インストーラーがマシンを再起動した後、UEFI ファームウェアは最初の起動オプションの読み込みに進みます。 Windows システムの場合、最初の起動オプションはデフォルトで bootmgfw.efi に位置する ESP:/EFI/マイクロソフト/ブート ESP のフォルダー。 今回は、元の被害者の bootmgfw.efi (以前に改名された winload.efi インストーラーによって)、ファームウェアは、インストーラーによって展開された脆弱なものを実行します。
  2. bootmgfw.efi が実行されると、以前にインストーラーによって変更された BCD ブート オプションが読み込まれます。 図 7 は、正規の BCD と変更された BCD の比較を示しています。
  3. 図 7 (緑の下線が引かれたパス) でわかるように、正規の Windows ブート マネージャーは通常、Windows OS ローダー (WINDOWSsystem32winload.efi) をデフォルトの起動アプリケーションとして使用します。 しかし今回は、修正された BCD を使用して、脆弱性のロードを続行します。 ESP:system32bootmgr.efi、 とともに メモリ不足を避ける 値に設定された BCD 要素 0x10000000カスタム:22000023 格納されている別の攻撃者の BCD を指す BCD 要素 ESP:システム32bcd. これらの要素の使用に関する説明は、公開されている PoC:

攻撃者は、シリアル化されたセキュア ブート ポリシーが既知の物理アドレスの上に割り当てられていることを確認する必要があります。
[...]
  メモリ不足を避ける 要素を使用して、物理メモリのすべての割り当てが指定された物理アドレスの上にあることを確認できます。
 • Windows 10 以降、VBS が有効になっている場合、この要素は許可されませんが、シリアル化されたセキュア ブート ポリシーがメモリから読み込まれる前に、ブート アプリケーションの初期化中に使用されるため、 BOOTMGR カスタム BCD パスを指定する (を使用して bcdファイルパス 要素別名 カスタム:22000023) を使用して、これをバイパスできます。

図 7. 正当な BCD ストア (BEFORE) と BlackLotus インストーラーによって使用されるもの (AFTER)

  1. 次のステップでは、実行された ESP:system32bootmgr.efi にある追加の BCD を読み込みます ESP:システム32bcd. この追加の BCD の解析済みコンテンツを図 8 に示します。

図 8. BlackLotus インストーラーによって投下された 2022 番目の BCD – CVE-21894-XNUMX の悪用に使用

  1. 図 8 に示す BCD ファイルから読み込まれたオプションにより、 ブートマネージャー.efi インストーラーによって展開された別の脆弱な Windows ブート アプリケーションの読み込みを続行します – ESP:system32hvloader.efi – これは Windows ハイパーバイザー ローダーです。 さらに重要なことは、追加の BCD オプションが同じ BCD ファイルで指定されていることです (図 8 を参照)。
    1. メモリを切り捨てる 値をに設定 0x10000000
    2. nointegritychecks はいに設定
    3. & テスト署名、これも「はい」に設定

そして、ここで魔法が起こります。 シリアル化されたセキュア ブート ポリシーは上記の物理アドレスにロードする必要があるため 0x10000000 (のため メモリ不足を避ける 前の手順で使用)、 メモリを切り捨てる 要素はそれを効果的に削除します – したがって、セキュア ブートを中断し、次のような危険な BCD オプションの使用を許可します nointegritychecks or テスト署名. これらのオプションを使用することで、攻撃者は hvloader.efi 独自の自己署名コードを実行します。 

  1. これを行うには、 PoC が使用されます: その実行中、正当な hvloader.efi をロードして実行する mcupdate_{純正インテル| AuthenticAMD}.dll からのネイティブ バイナリ : システム32 ディレクトリ。 からの関数のコメント化された Hex-Rays 逆コンパイル コード hvloader.efi この mcupdate*.dll バイナリをロードする役割は、図 9 に示されています。 hvloader.efi 通常、この正当なものをロードします mcupdate*.dll からのバイナリ:Windowsシステム32、しかし今回は悪意のある攻撃者の自己署名 mcupdate*.dll インストーラーによって以前に作成されたカスタム ESP ディレクトリから実行されます (ESP:システム32)。 BCDオプションが原因です デバイス & システムルート 図 8 の BCD で使用され、現在のデバイスを次のように指定します。 ブート – ESP を意味します – また、SystemRoot をルートとして指定します () このデバイス上のディレクトリ。

図 9. Hex-Rays による逆コンパイル BtLoadUpdateDll 正当な機能 hvloader.efi、読み込みを担当 mcupdate_*.dll

  1. さて、攻撃者自身の自己署名として mcupdate*.dll がロードされて実行されると、このチェーンの最後のコンポーネントである組み込み MokInstaller (UEFI アプリケーション) の実行が続行されます。実行方法の詳細については、図 10 を参照してください。

図 10. Hex-Rays が逆コンパイルした悪意のある自己署名のコード mcupdate*.dll バイナリ

ブートキットの永続性

これで、MokInstaller は、攻撃者の MOK を NVRAM 変数に登録し、正規の Microsoft 署名済み シム デフォルトのブートローダーとしてのバイナリ。 詳細に進む前に、ちょっとした理論 シム とMOK。

シム は、さまざまな Linux ディストリビューションを UEFI セキュア ブートで動作させるために、Linux 開発者によって開発された第 XNUMX 段階の UEFI ブートローダーです。 これは単純なアプリケーションであり、その目的は別のアプリケーションをロード、検証、および実行することです。Linux システムの場合、通常は GRUB ブートローダーです。 これは、Microsoft が署名のみを行う方法で機能します。 シム、 そしてその シム のキーを使用して、第 XNUMX 段階のブートローダーの整合性を検証できます。 db また、「許可」または「取り消された」キーまたはハッシュの独自のリストを埋め込み、プラットフォームと shim 開発者 (Canonical、RedHat など) の両方によって信頼されているコンポーネントの実行が許可されるようにします。 これらのリストに加えて、 シム MOK リストと呼ばれる、ユーザーが管理する外部キー データベースを使用することもできます。 図 11 は、MOK を使用した UEFI セキュア ブートがどのように機能するかをうまく示しています。

この MOK データベースは、次の名前のブート専用 NVRAM 変数に保存されます。 モクリスト. 上記のような脆弱性を悪用することなく、UEFI セキュア ブートが有効になっているシステムでそれを変更するには、物理​​アクセスが必要です (OS ローダーが UEFI ブート サービス機能を呼び出す前のブート中にのみ利用可能です)。 ブートサービスの終了)。 ただし、この脆弱性を悪用することで、攻撃者は UEFI セキュア ブートをバイパスし、呼び出しの前に独自の自己署名コードを実行できます。 ブートサービスの終了であるため、ユーザーは自分のキーを簡単に登録できます ( モクリスト NVRAM 変数) を使用して、セキュリティ違反を引き起こすことなく、その登録キーによって署名された任意のアプリケーションを shim に実行させます。

図 11. MOK ブート プロセスの概要 (画像ソース)

  1. 図 6 のフローの説明を続ける – ステップ 8… MokInstaller UEFI アプリケーションは、BlackLotus UEFI ブートキットの永続性を設定し、次のような悪用の痕跡をカバーします。
    1. インストーラーによって作成されたバックアップから被害者の元の BCD ストアを復元し、efi を正規の Microsoft 署名付き shim に置き換えます。 ESP:system32bootload.efi インストーラーによって。
    2. aを作成する モクリスト 攻撃者の自己署名公開鍵証明書を含む NVRAM 変数。 この変数は、他の UEFI シグニチャ データベース変数 (db や dbx など) と同じようにフォーマットされ、XNUMX 個以上のタイプのシグニチャ リストで構成できることに注意してください。 EFI_SIGNATURE_LIST – UEFI 仕様で定義されているとおり。
    3. 悪用に関与したすべてのファイルを攻撃者の ESP:システム32 フォルダにコピーします。
  2. 最後に、マシンを再起動して、展開された shim にドロップされた自己署名付きブートキットを実行させます。 EFIMicrosoftBootgrubx64.efi インストーラーによる (grubx64.efi 通常、デフォルトで実行される第 XNUMX 段階のブートローダー シム x86-64 システム上)。

最後の 12 つの手順で説明したアクションを実行するコードを図 XNUMX に示します。

図 12. Hex-Rays の逆コンパイル コード – BlackLotus ブートキットの永続性を設定する MokInstaller UEFI アプリ

BlackLotus UEFI ブートキット

永続性が構成されると、BlackLotus ブートキットがシステムの起動ごとに実行されます。 ブートキットの目的は、カーネル ドライバーと最終的なユーザー モード コンポーネント (HTTP ダウンローダー) を展開することです。 実行中、追加の Windows セキュリティ機能 (仮想化ベースのセキュリティ (VBS) と Windows Defender) を無効にして、展開の成功とステルス操作の可能性を高めようとします。 それがどのように行われるかについての詳細にジャンプする前に、カーネル ドライバーと HTTP ダウンローダーに関する基本を要約しましょう。

  • カーネルドライバーは、
    • チェーンの次のコンポーネントである HTTP ダウンローダーを展開します。
    • 終了の場合にローダーを存続させます。
    • ブートキット ファイルが ESP から削除されないように保護します。
    • HTTP ダウンローダーによって指示された場合、追加のカーネル ペイロードを実行します。
    • HTTP ダウンローダーによって指示された場合、ブートキットをアンインストールします。
  • HTTP ダウンローダーは、次のことを担当します。
    • その C&C との通信。
    • C&C から受け取ったコマンドを実行します。
    • C&C から受信したペイロードをダウンロードして実行します (カーネル ペイロードとユーザーモード ペイロードの両方をサポートします)。

インストーラーから HTTP ダウンローダーまでの完全な実行フロー (簡略化) を図 13 に示します。これらの個々のステップについては、次のセクションで詳しく説明します。

図 13. BlackLotus UEFI ブートキットの実行を示す図

BlackLotus 実行フロー

実行手順は次のとおりです (これらの手順は図 13 に示されています)。

  1. 最初のステップとして、UEFI ファームウェアはデフォルトの Windows ブート オプションを実行します。 EFIMicrosoftBootbootmgfw.efi. 以前に説明したように (ブートキット永続性セクション、8 .a)、MokInstaller バイナリはこのファイルを正当な署名済みの シム.
  2. シム が実行されると、 モクリスト NVRAM 変数に格納され、攻撃者が以前に内部に保存した証明書を使用して、第 XNUMX 段階のブートローダー (自己署名された BlackLotus UEFI ブートキットは次の場所にあります) を検証します。 EFIMicrosoftBootgrubx64.efi.
  3. 確認すると、 シム ブートキットを実行します。
  4. ブートキットは、ブートのみの作成から始まります Vbsポリシー無効化 NVRAM 変数。 説明どおり こちら、この変数は起動時に Windows OS ローダーによって評価され、定義されている場合、HVCI や Credential Guard などのコア VBS 機能は初期化されません。
  5. 次の手順 (5. a–e) では、ブートキットは UEFI ブートキットで使用される一般的なパターンで続行します。 Windows ブート マネージャー、Windows OS ローダー、Windows OS カーネルなど、一般的な Windows ブート フローに含まれるコンポーネントの実行を傍受し、それらの機能の一部をメモリにフックします。 おまけとして、一部のドライバーにパッチを適用して Windows Defender を無効にしようとします。 これはすべて、OS 起動プロセスの初期段階でペイロードを実行し、検出を回避するためです。 次の関数がフックまたはパッチされています。
    1. ImgArchStartBootApplication in bootmgfw.efi or ブートマネージャー.efi:
      この関数は、通常、ブートキットによってフックされ、Windows OS ローダー (winload.efi) はメモリにロードされていますが、まだ実行されていません。これは、インメモリ パッチをさらに実行する適切なタイミングです。
    2. BlImgAllocateImageBuffer in winload.efi:
      悪意のあるカーネル ドライバに追加のメモリ バッファを割り当てるために使用されます。
    3. OslArchTransferToKernel in winload.efi:
      OS カーネルと一部のシステム ドライバーが既にメモリにロードされているが、まだ実行されていない瞬間をキャッチするためにフックされます。これは、より多くのインメモリ パッチを実行するのに最適な瞬間です。 以下で説明するドライバーは、このフックでパッチされます。 メモリ内で適切なドライバーを見つける役割を担うこのフックのコードを図 14 に示します。
    4. WdBoot.sys & WdFilter.sys:
      BlackLotus は、次のエントリ ポイントにパッチを適用します。 WdBoot.sys & WdFilter.sys – Windows Defender ELAM ドライバーと Windows Defender ファイル システム フィルター ドライバーをそれぞれ – すぐに返します。
    5. ディスク.sys:
      ブートキットは、 ディスク.sys システム初期化の初期段階で BlackLotus カーネル ドライバーを実行するためのドライバー。

図 14. Hex-Rays の逆コンパイルされたコード OslArchTransferToKernel フック – Windows Defender ドライバーにパッチを適用し、 ディスク.sys

  1. 次に、OS カーネルが ディスク.sys インストールされたフックは、悪意のあるカーネル ドライバーのエントリ ポイントにジャンプします。 悪意のあるコードは、元のコードを復元します。 ディスク.sys システムが正常に機能できるようにし、 winlogon.exeが プロセスが開始されます。
  2. 悪意のあるドライバーがそれを検出すると、 winlogon.exeが プロセスが開始されると、最終的なユーザー モード コンポーネント (HTTP ダウンローダー) を挿入して実行します。

カーネルドライバー

カーネル ドライバーは、次の XNUMX つの主要なタスクを担当します。

  • HTTP ダウンローダーをインジェクトする winlogon.exeが スレッドが終了した場合に再注入します。
  • ESP にデプロイされたブートキット ファイルが削除されないように保護します。
  • ユーザーモードの Windows Defender プロセスの武装解除 MpEngine.exe.
  • HTTP ダウンローダーと通信し、必要に応じてコマンドを実行します。

それらを一つずつ見ていきましょう。

HTTP ダウンローダーの永続性

カーネル ドライバーは、HTTP ダウンローダーの展開を担当します。 ドライバーが起動すると、次の名前のプロセスが実行されるまで待機します。 winlogon.exeが 他のアクションを実行する前に開始します。 プロセスが開始されると、ドライバーは HTTP ダウンローダー バイナリを復号化し、それを winlogon.exeがのアドレス空間に移動し、新しいスレッドで実行します。 次に、ドライバーはスレッドがまだ実行されているかどうかを定期的にチェックし続け、必要に応じて注入を繰り返します。 カーネル デバッガーがドライバーによって検出された場合、HTTP ダウンローダーは展開されません。

ESP 上のブートキット ファイルを削除から保護する

ESP にあるブートキットのファイルを保護するために、カーネル ドライバーは単純なトリックを使用します。 保護したいすべてのファイルを開き、それらのハンドルを複製して保存し、 ObSetHandle属性 を指定するカーネル関数 閉じるから守る 内部の旗 ハンドルフラグ (OBJECT_HANDLE_FLAG_INFORMATION) パラメータを 1 に設定します。これにより、ハンドルが他のプロセスによって閉じられるのを防ぐことができます。 これにより、保護されたファイルを削除または変更しようとする試みが阻止されます。 次のファイルが保護されています。

  • ESP:EFIMicrosoftBootwinload.efi
  • ESP:EFIMicrosoftBootbootmgfw.efi
  • ESP:EFIMicrosoftBootgrubx64.efi

ユーザーがこれらの保護されたファイルを削除しようとすると、図 15 に示すようなことが起こります。

図 15. BlackLotus ドライバーによって保護されたファイルを削除しようとする試み

別の保護層として、ユーザーまたはセキュリティ ソフトウェアが保護フラグを設定解除してハンドルを閉じることができる場合、カーネル ドライバーはそれらを継続的に監視し、呼び出して BSOD を引き起こします。 KeBugCheck(INVALID_KERNEL_HANDLE) いずれかのハンドルが存在しなくなった場合に機能します。

メインの Windows Defender プロセスの武装解除

カーネル ドライバーは、メインの Windows Defender プロセスの武装解除も試みます – MsMpEng.exe. を設定して、すべてのプロセスのトークン特権を削除することでこれを行います。 SE_PRIVILEGE_REMOVED それらのそれぞれに属します。 その結果、Defender プロセスは、ファイルのスキャンなどのジョブを適切に実行できなくなります。 ただし、この機能は十分に実装されていないため、再起動すると無効になる可能性があります。 MsMpEng.exe プロセス。

HTTPダウンローダーとの通信

カーネル ドライバーは、名前付きのイベントとセクションを使用して、HTTP ダウンローダーと通信できます。 使用される名前付きオブジェクトの名前は、被害者のネットワーク アダプタの MAC アドレス (イーサネット) に基づいて生成されます。 オクテットの値が 16 より小さい場合、16 が加算されます。 生成されたオブジェクト名の形式は、サンプルごとに異なる場合があります。 例として、分析したサンプルの XNUMX つで、MAC アドレスについて 00-1c-0b-cd-ef-34の場合、生成される名前は次のようになります。

  • BaseNamedObjects101c1b: 名前付きセクション用 (MAC の最初の XNUMX オクテットのみが使用されます)
  • BaseNamedObjectZ01c1b: 名前付きイベントの場合 – セクションと同じですが、MAC アドレスの最初の桁が次のように置き換えられます Z

HTTP ダウンローダが何らかのコマンドをカーネル ドライバに渡したい場合は、名前付きセクションを作成し、内部に関連データを含むコマンドを書き込み、名前付きイベントを作成してドライバがコマンドを処理するのを待ちます。ドライバーはそれをトリガー (または信号) します。

ドライバーは、次の自明のコマンドをサポートしています。

  • カーネルドライバーをインストールする
  • BlackLotus をアンインストールする

注意深い読者は、ここで BlackLotus の弱点に気付くかもしれません。ブートキットはそのコンポーネントを削除から保護しますが、カーネル ドライバーは、上記の名前付きオブジェクトを作成し、アンインストール コマンドを送信することで、ブートキットを完全にアンインストールするようにだまされる可能性があります。

HTTP ダウンローダー

最後のコンポーネントは、C&C サーバーとの通信と、そこから受信した C&C コマンドの実行を担当します。 発見できたすべてのペイロードには、XNUMX つのコマンドが含まれていました。 これらのコマンドは非常に簡単で、セクション名が示すように、さまざまな手法を使用して追加のペイロードをダウンロードして実行することがほとんどです。

C&Cコミュニケーション

C&C と通信するために、HTTP ローダーは HTTPS プロトコルを使用します。 通信に必要なすべての情報は、C&C ドメインや使用される HTTP リソース パスなど、ダウンローダ バイナリに直接埋め込まれます。 C&C サーバーとの通信のデフォルトの間隔は XNUMX 分に設定されていますが、C&C からのデータに基づいて変更できます。 C&C との各通信セッションは、ビーコン HTTP POST メッセージを送信することから始まります。 分析したサンプルでは、​​次の HTTP リソース パスを HTTP POST ヘッダーで指定できます。

  • /network/API/hpb_gate[.]php
  • /API/hpb_gate[.]php
  • /gate[.]php
  • /hpb_gate[.]php

ビーコン メッセージ データの前に チェックイン= 文字列。侵害されたマシンに関する基本情報を含みます – カスタム マシン識別子 ( ハードウェア)、UEFI セキュア ブート ステータス、さまざまなハードウェア情報、および BlackLotus ビルド番号と思われる値。 ハードウェア マシンの MAC アドレス (イーサネット) とシステム ボリュームのシリアル番号から生成されます。 暗号化前のメッセージのフォーマットは、図 16 に示すとおりです。

図 16. ビーコン メッセージのフォーマット

メッセージを C&C に送信する前に、データは最初に埋め込まれた RSA キーを使用して暗号化され、次に URL セーフな base64 でエンコードされます。 分析中に、サンプルで使用されている 17 つの異なる RSA キーが見つかりました。 このような HTTP ビーコン リクエストの例を図 XNUMX に示します。

図 17. ビーコン HTTP POST メッセージの例 (実際の C&C アドレスの代わりにローカル IP を持つ VirusTotal のサンプルによって生成されたもの)

ビーコン メッセージへの応答として C&C から受信したデータは、256 バイトのマジック値 HP で始まる必要があります。 それ以外の場合、応答はそれ以上処理されません。 マジック値が正しい場合、マジック値に続くデータは、キーとして使用される上記の HWID 文字列を使用して、CBC モードで XNUMX ビット AES を使用して復号化されます。

復号化後のメッセージは、JSON 形式の文字列であるビーコンに似ており、コマンド識別子 (と呼ばれる) を指定します。 タイプ) および次のようなさまざまな追加パラメータ:

  • C&C通信間隔
  • 使用する実行方法
  • ペイロードのファイル名
  • ファイル拡張子に基づくペイロード タイプ(.sys, .exeファイルまたは のDLL サポートされている)
  • ペイロード データのダウンロードを要求するために使用されることになっている認証トークン
  • ペイロード データの復号化に使用される AES キー

サポートされているすべてのコマンドとその説明を表 2 に示します。

表 2. C&C コマンド

コマンドタイプ コマンドの説明
1 カーネル ドライバー、DLL、または通常の実行可能ファイルをダウンロードして実行する
2 ペイロードをダウンロードし、ブートキットをアンインストールして、ペイロードを実行します。ブートキットの更新に使用される可能性があります
3 ブートキットをアンインストールして終了

これらのコマンドで、C&C はペイロードを実行する前にディスクにドロップするか、メモリ内で直接実行するかを指定できます。 ファイルをディスクにドロップする場合、 ProgramData OS ボリューム上のフォルダーが宛先フォルダーとして使用され、ファイル名と拡張子は C&C サーバーによって指定されます。 メモリ内でファイルを直接実行する場合、 Svchost.exeの 注射のターゲットとして使用されます。 C&C がカーネル ドライバーの協力を必要とするコマンドを送信した場合、またはオペレーターがカーネル モードでコードを実行したい場合、 HTTPダウンローダーとの通信 セクションが使用されます。

アンチ分析のトリック

このマルウェアの検出と分析をより困難にするために、作成者は、テキスト文字列、インポート、またはその他の暗号化されていない埋め込みデータなどの標準ファイル アーティファクトの可視性を最小限に制限しようとしました。 以下に使用したテクニックをまとめます。

  • 文字列とデータの暗号化
    • サンプル内で使用されるすべての文字列は、単純な暗号を使用して暗号化されています。
    • すべての埋め込みファイルは、CBC モードで 256 ビット AES を使用して暗号化されます。
    • 個々のファイルの暗号化キーは、サンプルごとに異なる場合があります。
    • AES 暗号化に加えて、一部のファイルは LZMS を使用して圧縮されます。
  • ランタイムのみの API 解決
    • すべてのサンプル (該当する場合) では、Windows API は常に実行時に排他的に解決され、関数名の代わりに関数ハッシュを使用してメモリ内の目的の API 関数アドレスが検索されます。
    • 場合によっては、直接 シスコール 命令呼び出しは、目的のシステム機能を呼び出すために使用されます。
  • ネットワーク通信
    • HTTPS を使用して通信します。
    • HTTP ダウンローダーによって C&C に送信されるすべてのメッセージは、埋め込まれた RSA 公開鍵を使用して暗号化されます。
    • C&C から HTTP ダウンローダーに送信されるすべてのメッセージは、被害者のマシン環境から派生したキー、または C&C によって提供される AES キーを使用して暗号化されます。
  • アンチデバッグおよびアンチ VM トリック – 使用する場合、通常はエントリ ポイントの先頭に配置します。 カジュアルなサンドボックスまたはデバッガー検出トリックのみが使用されます。

緩和と修復

  • もちろん、まず第一に、システムとそのセキュリティ製品を最新の状態に保つことは必須です。これは、脅威が OS の前の永続性を達成する前に、最初から阻止される可能性を高めるためです。
  • 次に、既知の脆弱な UEFI バイナリが UEFI セキュア ブートをバイパスするために使用されるのを防ぐために必要な重要な手順は、UEFI 失効データベースでの失効です (dbxの) – Windows システムでは、 dbxの 更新は、Windows Update を使用して配布する必要があります。
  • 問題は、広く使用されている Windows UEFI バイナリを失効させると、何千もの古いシステム、回復イメージ、またはバックアップが起動できなくなる可能性があることです。そのため、失効に時間がかかりすぎることがよくあります。
  • BlackLotus が使用する Windows アプリケーションを失効させると、ブートキットのインストールが妨げられることに注意してください。ただし、インストーラーが被害者のブートローダーを失効したものに置き換えるため、システムが起動できなくなる可能性があります。 この場合に回復するには、OS の再インストールまたは ESP 回復だけで問題が解決します。
  • BlackLotus 永続性が設定された後に失効が発生した場合、ブートキットは永続性のためにカスタム MOK キーを持つ正当な shim を使用するため、引き続き機能します。 この場合、最も安全な緩和策は、Windows を再インストールし、攻撃者が登録した MOK キーを削除することです。 モクティル ユーティリティ (ブート中にユーザーが MOK Manager と対話する必要があるため、この操作を実行するには物理的な存在が必要です)。

まとめ

ここ数年で、UEFI システムのセキュリティに影響を与える多くの重大な脆弱性が発見されました。 残念ながら、UEFI エコシステム全体の複雑さと関連するサプライ チェーンの問題により、これらの脆弱性の多くは、脆弱性が修正されてから、または少なくとも修正されたと伝えられた後でも、多くのシステムを脆弱なままにしています。 より良いイメージを得るために、昨年の UEFI セキュア ブートのバイパスを許可するパッチまたは失効の失敗の例をいくつか示します。

  • まず第一に、もちろん、CVE-2022-21894 – BlackLotus によって悪用された脆弱性です。 脆弱性が修正されてから XNUMX 年が経過しましたが、脆弱な UEFI バイナリはまだ取り消されておらず、UEFI セキュア ブートが有効になっているシステムで BlackLotus などの脅威が密かに動作し、被害者に誤った安心感を与えています。
  • 2022 年の初めに、UEFI セキュア ブートの無効化などを可能にするいくつかの UEFI 脆弱性を公開しました。 影響を受ける多くのデバイスは OEM によってサポートされていないため、修正されていません (これらのデバイスは、脆弱性が公開された時点で 3 ~ 5 年ほど古いものではありませんでしたが)。 詳細については、ブログ投稿をご覧ください。 「安全」がまったく安全でない場合:Lenovoの消費者向けラップトップで発見された影響の大きいUEFIの脆弱性
  • 2022 年後半に、 その他のいくつかの UEFI 脆弱性を悪用すると、攻撃者は UEFI セキュア ブートを非常に簡単に無効にすることもできます。 からの仲間の研究者によって指摘されたように 隔年、にリストされているいくつかのデバイス アドバイザリー アドバイザリから数か月後でも、パッチが適用されていないか、正しくパッチが適用されていないため、デバイスは脆弱なままです。 言うまでもなく、前のケースと同様に、一部のデバイスはサポート終了日に達しているため、永久に脆弱なままです。

誰かがこれらの障害を利用して、UEFI セキュア ブートが有効になっているシステムで動作する UEFI ブートキットを作成するようになるのは時間の問題でした。 昨年提案したように RSA プレゼンテーション、これらすべてにより、ESP への移行が攻撃者にとってより実行可能になり、UEFI の脅威が前進する可能性があります。BlackLotus の存在がこれを裏付けています。

ESET Research は、非公開の APT インテリジェンス レポートとデータ フィードを提供します。 本サービスに関するお問い合わせは、 ESET脅威インテリジェンス ページで見やすくするために変数を解析したりすることができます。

IoC

SHA-1 ファイル名 検出 説明
05846D5B1D37EE2D716140DE4F4F984CF1E631D1 無し Win64/BlackLotus.A BlackLotus インストーラー。
A5A530A91100ED5F07A5D74698B15C646DD44E16 無し Win64/BlackLotus.A BlackLotus インストーラー。
D82539BFC2CC7CB504BE74AC74DF696B13DB486A 無し Win64/BlackLotus.A BlackLotus インストーラー。
16B12CEA54360AA42E1120E82C1E9BC0371CB635 無し Win64/BlackLotus.A BlackLotus インストーラー。
DAE7E7C4EEC2AC0DC7963C44A5A4F47D930C5508 無し Win64/BlackLotus.A BlackLotus インストーラー。
45701A83DEC1DC71A48268C9D6D205F31D9E7FFB 無し Win64/BlackLotus.A BlackLotus インストーラー。
2CE056AE323B0380B0E87225EA0AE087A33CD316 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
5A0074203ABD5DEB464BA0A79E14B7541A033216 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
5DC9CBD75ABD830E83641A0265BFFDDD2F602815 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
97AEC21042DF47D39AC212761729C6BE484D064D 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
ADCEEC18FF009BED635D168E0B116E72096F18D2 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
DBC064F757C69EC43517EFF496146B43CBA949D1 無し EFI/ブラックロータス.B BlackLotus UEFI ブートキット。
06AF3016ACCDB3DFE1C23657BF1BF91C13BAA757 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
0C0E78BF97116E781DDE0E00A1CD0C29E68D623D 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
6D8CEE28DA8BCF25A4D232FEB0810452ACADA11D 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
74FF58FCE8F19083D16DF0109DC91D78C94342FA 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
ACC74217CBE3F2E727A826B34BDE482DCAE15BE6 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
111C4998F3264617A7A9D9BF662D4B1577445B20 無し Win64/BlackLotus.B BlackLotus HTTP ダウンローダー。
17FA047C1F979B180644906FE9265F21AF5B0509 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
1F3799FED3CF43254FE30DCDFDB8DC02D82E662B 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
4B882748FAF2C6C360884C6812DD5BCBCE75EBFF 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
91F832F46E4C38ECC9335460D46F6F71352CFFED 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
994DC79255AEB662A672A1814280DE73D405617A 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
FFF4F28287677CAABC60C8AB36786C370226588D 無し Win64/BlackLotus.C BlackLotus カーネル ドライバー。
71559C3E2F3950D4EE016F24CA54DA17D28B9D82 無し EFI/ブラックロータス.C BlackLotus インストーラーによって削除された BlackLotus Boot Configuration Data (BCD) ストア。
D6D3F3151B188A9DA62DEB95EA1D1ABEFF257914 無し EFI/ブラックロータス.C BlackLotus インストーラーによって削除された BlackLotus Boot Configuration Data (BCD) ストア。
547FAA2D64B85BF883955B723B07635C0A09326B 無し EFI/ブラックロータス.A BlackLotus CVE-2022-21894 エクスプロイト ペイロード ローダー。
D1BBAA3D408E944C70B3815471EED7FA9AEE6425 無し EFI/ブラックロータス.A BlackLotus CVE-2022-21894 エクスプロイト ペイロード ローダー。
0E6DD7110C38464ECAA55EE4E2FA303ADA0EDEFB 無し EFI/ブラックロータス.A BlackLotus CVE-2022-21894 エクスプロイト ペイロード – MokInstaller EFI アプリ。
D6BB89D8734B3E49725362DAE9A868AE681E8BD6 無し EFI/ブラックロータス.A BlackLotus CVE-2022-21894 エクスプロイト ペイロード – MokInstaller EFI アプリ。
164BB587109CFB20824303AD1609A65ABB36C3E9 無し Win64/BlackLotus.D BlackLotus インストーラー UAC バイパス モジュール。

鑑定書

シリアルナンバー 570B5D22B723B4A442CC6EEEBC2580E8
拇印 C8E6BF8B6FDA161BBFA5470BCC262B1BDC92A359
対象CN ホエン ゼイ クライ CA
被験者O 無し
被験者L 無し
科目 無し
被験者C 無し
から有効 2022-08-13 17:48:44
有効 2032-08-13 17:58:44

ネットワーク

IP ドメイン ホスティングプロバイダー 最初に見た 詳細
無し xrepositoryx[.]名前 無し 2022-10-17 ブラックロータス C&C. https://xrepositoryx[.]name/network/API/hpb_gate.php
無し myrepositoryx[.]com 無し 2022-10-16 ブラックロータス C&C.
https://myrepositoryx[.]com/network/API/hpb_gate.php
104.21.22[。]185 erdjknfweklsgwfmewfgref[.]com 株式会社クラウドフレア 2022-10-06 ブラックロータス C&C.
https://erdjknfweklsgwfmewfgref[.]com/API/hpb_gate.php
164.90.172[。]211 ハリーサックスディック[.]com デジタルオーシャン、LLC 2022-10-09 ブラックロータス C&C.
https://harrysucksdick[.]com/API/hpb_gate.php
185.145.245[。]123 heikickn[.]com
frassirishiproc[.]com
SIA ヴィースプ 2022-10-12 ブラックロータス C&C.
https://heikickgn[.]com/API/hpb_gate.php
https://frassirishiproc[.]com/API/hpb_gate.php
185.150.24[。]114 私のリポジトリ[.]名前 SkyLink データセンター BV 2022-10-14 ブラックロータス C&C.
myrepository[.]名前/ネットワーク/API/hpb_gate.php
190.147.189[。]122 egscorp[.]ネット Telmex コロンビア SA 2022-08-24 ブラックロータス C&C.
https://egscorp[.]net/API/hpb_gate.php

MITER ATT&CKテクニック

このテーブルは バージョン12 MITER ATT&CKフレームワークの.

戦術 ID 名前 説明
資源開発 T1587.002 機能の開発: コード署名証明書 一部の BlackLotus サンプルは、自己署名証明書で署名されています。
T1588.005 機能の取得:エクスプロイト BlackLotus は、公に知られているエクスプロイトを使用して、UEFI セキュア ブートをバイパスしました。
実行 T1203 クライアント実行のための悪用 BlackLotus インストーラーは、CVE-2022-21894 を悪用して、UEFI セキュア ブートが有効になっているシステムで任意のコードを実行できます。
T1559 プロセス間通信 BlackLotus HTTP ダウンローダーは、名前付きセクションを使用してコマンドをカーネルモード コンポーネントに渡します。
T1106 ネイティブAPI BlackLotus HTTP ダウンローダは、さまざまなネイティブ Windows API を使用して、侵入先のマシンでコードを実行します。
T1129 共有モジュール BlackLotus HTTP ダウンローダーは、C&C サーバーから受信した DLL を読み込んで実行できます。
固執 T1542.003 OS 起動前: ブートキット BlackLotus ブートキットは EFI システム パーティションに展開され、起動中に実行されます。
権限昇格 T1548.002 昇格制御メカニズムの悪用: ユーザー アカウント制御のバイパス BlackLotus インストーラーは、ユーザー アカウント制御をバイパスして権限をエスカレートしようとします。
T1134.002 アクセストークンの操作:トークンを使用してプロセスを作成する BlackLotus HTTP ダウンローダーは、WTSQueryUserToken と CreateProcessAsUserW を使用して、ローカル システム権限を持つ新しいプロセス内でダウンロードされたペイロードを実行できます。
防衛回避    T1622 デバッガ回避 BlackLotus コンポーネントは、さまざまな手法を使用して、カーネル モードまたはユーザー モードのデバッガーが被害者で実行されているかどうかを検出します。
T1574 ハイジャック実行の流れ BlackLotus ブートキットは、初期の Windows ブート プロセス段階に含まれるさまざまなコンポーネント (Windows ブート マネージャー、Windows OS ローダー、Windows カーネル、および特定のドライバー) をハイジャックして、さまざまな Windows セキュリティ機能 (VBS、Windows Defender) を非アクティブ化することで検出を回避し、カーネル モードを密かに実行します。およびユーザー モード コンポーネント
T1562 防御を弱める BlackLotus コンポーネントは、検出を回避するために BitLocker と Windows Defender を無効にすることができます。
T1070.004 インジケータの削除: ファイルの削除 BlackLotus インストーラーは、ファイルを EFI システム パーティションに正常に展開した後、自分自身を削除します。 また、CVE-2022-21894 のエクスプロイトが成功した後、BlackLotus はエクスプロイト チェーンに含まれるすべてのファイルを EFI システム パーティションから削除することにより、エクスプロイトの痕跡を取り除きます。
T1070.009 インジケーターの削除: 明確な持続性 BlackLotus は、ESP からすべてのブートキット ファイルを削除し、元の被害者の Windows ブート マネージャーを復元することで、自分自身をアンインストールできます。
T1036.005 マスカレード:正当な名前または場所と一致する BlackLotus は、grubx64.efi (侵害されたマシンで UEFI セキュア ブートが有効になっている場合) や bootmgfw.efi (侵害されたマシンで UEFI セキュア ブートが無効になっている場合) などの正当なファイル名を使用して、ESP にデプロイされたファイルを隠そうとします。
T1112 レジストリを変更する BlackLotus インストーラーは Windows レジストリを変更して、Windows HVCI セキュリティ機能を無効にします。
T1027 難読化されたファイルまたは情報 BlackLotus コンポーネントに埋め込まれたほとんどすべての文字列は、カスタム結合暗号を使用して暗号化され、必要な場合にのみ復号化されます。
T1027.007 難読化されたファイルまたは情報: 動的 API 解決 BlackLotus コンポーネントは、名前の代わりに API 名のハッシュを使用しながら動的 API 解決を使用します。
T1027.009 難読化されたファイルまたは情報: 埋め込まれたペイロード BlackLotus コンポーネントのほとんどすべての埋め込みファイルは、AES を使用して暗号化されています。
T1542.003 OS 起動前: ブートキット BlackLotus ブートキットは EFI システム パーティションに展開され、OS ブートの初期段階で実行されるため、OS ブート プロセスを制御し、検出を回避することができます。
T1055.012 プロセスインジェクション:ダイナミックリンクライブラリインジェクション BlackLotus HTTP ダウンローダーは、DLL を新しく作成された Svchost.exeの プロセスホローイングによる加工。
T1055.002 プロセス インジェクション: ポータブル実行可能インジェクション BlackLotus ドライバーは、HTTP ダウンローダーのポータブル実行可能ファイルを winlogon.exeが プロセス。
T1014 ルートキット BlackLotus カーネル ドライバーは、ESP 上のブートキット ファイルが削除されないように保護します。
T1497.001 仮想化/サンドボックス回避: システム チェック BlackLotus は、サンドボックス固有のレジストリ値のチェックを含むさまざまなシステム チェックを採用して、仮想化および分析環境を検出して回避します。
Discovery T1622 デバッガ回避 BlackLotus コンポーネントは、さまざまな手法を使用して、カーネル モードまたはユーザー モードのデバッガーが被害者で実行されているかどうかを検出します。
T1082 システム情報の発見 BlackLotus は、侵害されたホストのシステム情報 (IP、GPU、CPU、メモリ、OS バージョン) を収集します。
T1614 システムロケーション検出 侵害されたホストで次のシステム ロケールのいずれかが特定された場合、BlackLotus は終了する可能性があります。 ro-MD、ru-MD、ru-RU、uk-UA、be-BY、hy-AM、kk-KZ.
T1016 システムネットワーク構成の検出 BlackLotus HTTP ダウンローダは、要求することで侵害されたホストのパブリック IP を特定できます api.ipify[.]org サービス。
T1016.001 システムネットワーク構成の検出:インターネット接続の検出 BlackLotus HTTP ダウンローダは、Microsoft の www.msftncsi[.]com/ncsi[.]txt
T1497.001 仮想化/サンドボックス回避: システム チェック BlackLotus は、サンドボックス固有のレジストリ値のチェックを含むさまざまなシステム チェックを採用して、仮想化および分析環境を検出して回避します。
コマンドおよび制御 T1071.001 アプリケーション層プロトコル:Webプロトコル BlackLotus は、C&C との通信に HTTPS を使用します。
T1132.001 データエンコーディング:標準エンコーディング BlackLotus は、C&C 通信で暗号化されたデータを URL セーフな base64 でエンコードします。
T1573.001 暗号化されたチャネル:対称暗号化 BlackLotus は、CBC モードで 256 ビット AES を使用して、C&C から受信したメッセージを復号化します。
T1573.002 暗号化されたチャネル:非対称暗号化 BlackLotus は、埋め込まれた RSA 公開鍵を使用して、C&C に送信されるメッセージを暗号化します。

スポット画像

最新のインテリジェンス

スポット画像