キヤノンMJ/サイバーセキュリティ情報局
「BlackLotus」UEFIブートキットの危険性と攻撃の概要
本記事はキヤノンマーケティングジャパンが提供する「サイバーセキュリティ情報局」に掲載された「迫りくる新たな脅威、「BlackLotus」UEFIブートキット」を再編集したものです。
近年では多くのUEFIの脆弱性が発見されていますが、パッチが適用されていない、あるいは、脆弱なバイナリを失効できない状況が長期間にわたっており、サイバー攻撃者は虎視眈々と攻撃の機会を狙ってきました。そして、プラットフォームの中核的なセキュリティ機能であるUEFIセキュアブートをバイパスするUEFIブートキットが今回初めて検出されました。脅威がいま現実の危機となったのです。このブログでは、このUEFIブートキットの分析結果を初めて公開します。このブートキットは、UEFIセキュアブートが有効な最新の状態のWindows 11システムでも実行可能です。ESET社は、このブートキットはその機能と特性から、少なくとも2022年10月以降、ハッキングフォーラムにおいて5,000ドルで販売されているUEFIブートキットである「BlackLotus」であると考えています。
UEFIブートキットは最も警戒すべき脅威です。OSの起動プロセスを完全に制御できることから、OSの各種のセキュリティ機構を無効化でき、OSの起動段階で攻撃者が用意したカーネルモードやユーザーモードのペイロードを展開できます。つまり、高い権限でマシンを秘密裏に操ることが可能になります。これまで、実環境で検出されたUEFIブートキットはわずかしかありません。例えば、2020年にESET社が発見したいくつかの悪意のあるEFIブートローダーの検体、ESET社が昨年発見したESPecterブートキットなどの詳細な機能を実装するUEFIブートキット、そして、Kasperskyのリサーチャーが発見したFinSpyブートキットなどがあるだけです。
UEFIブートキットは、2018年にESET社のチームによって実環境で発見された初のUEFIファームウェアインプラントであるLoJaxのようなファームウェアインプラントと比較すると、簡単にアクセスできるFAT32ディスクパーティションにブートキットがあることから、ファームウェアインプラントと比較するとステルス性は低くなっています。しかし、ブートローダーとして実行することで、ファームウェアインプラントと同等の機能を実行でき、ファームウェアへの書き込みを保護するBWE(BIOS Write Enable)、BLE(BIOS Lock Enable)、PRx(SPI Protected Range Registers)ビットなどのマルチレベルのSPIフラッシュ保護や、Intel Boot Guardなどのハードウェア保護を解除する必要がありません。確かに、UEFIセキュアブートはUEFIブートキットをブロックすることができますが、この基本的なセキュリティメカニズムをバイパスできる既知の脆弱性が多く存在します。本記事の執筆時点で最新のシステムを利用している場合でも、BlackLotusによって悪用されている脆弱性など、簡単に攻撃できる脆弱性が存在していることが、状況を悪化させています。
ESET社の調査は、2022年末にテレメトリ(監視データ)でBlackLotusのユーザーモードコンポーネント(HTTPダウンローダー)と考えられる脅威が数件見つかったことから始まっています。最初の調査によって、検体で特定されたコードパターンから、6つのBlackLotusインストーラーを発見できました(VirusTotalおよびESETのテレメトリの両方)。これにより、実行チェーン全体を探索することが可能になり、通常のマルウェアとは異なっていることが明らかになりました。
BlackLotusの特徴と、関連イベントをまとめたタイムラインを以下に示します。
・UEFIセキュアブートを有効にしている、すべてのパッチが適用された最新のWindows 11システムでも実行が可能です。
・1年以上前の脆弱性(CVE-2022-21894)を悪用し、UEFIセキュアブートをバイパスしてブートキットを常駐させます。今回初めて、この脆弱性が実環境で悪用されたことが特定された事例となりました。
・この脆弱性は、マイクロソフト社の2022年1月のアップデートで修正されていますが、影響を受ける有効な署名付きのバイナリがまだUEFI失効リストに追加されていないため、現在も悪用が可能になっています。
BlackLotusは、この状況に付け入り、この脆弱性を悪用するために、正規で脆弱なバイナリのコピーをシステムに持ち込んでいます。
・BitLocker、HVCI、Windows Defenderなど、OSに実装されているセキュリティ機能を無効にできます。
・インストールされたこのブートキットの主な目的は、ブートキットが削除されないように保護するカーネルドライバーを展開し、C&Cと通信し、追加のユーザーモードまたはカーネルモードのペイロードをロードするHTTPダウンローダーを展開することです。
・BlackLotusは、少なくとも2022年10月6日からアンダーグラウンドのフォーラムで販売されています。このブログでは、このブートキットが本物であり、広告が詐欺ではないことを示す証拠についても提示します。
・興味深いことに、ESET社が分析したBlackLotusのインストーラーには、感染したホストが以下の言語を使用している場合、ブートキットのインストールを続行しないものがありました。
ルーマニア語(モルドバ)、ro-MD
ロシア語(モルドバ)、ru-MD
ロシア語(ロシア)、ru-RU
ウクライナ語(ウクライナ)、uk-UA
ベラルーシ語(ベラルーシ)、be-BY
アルメニア語(アルメニア)、hy-AM
カザフ語(カザフスタン)、kk-KZ
BlackLotusに関連する各イベントのタイムラインを、図1に示します。
先に述べたように、このブートキットは少なくとも2022年10月6日からアンダーグラウンドのファーラムで販売されています。ESETのテレメトリからは、このブートキットを標的ユーザーに展開するために使用された正確な配信チャネルはこれまで特定できていません。ESET社が一般に公開されているソースやESETのテレメトリから取得できたBlackLotusの検体数は少ないことから、多くのサイバー攻撃者はこのブートキットをまだ使い始めていない可能性があります。しかし、このブートキットは簡単に展開できることや、サイバー犯罪集団が運用しているボットネットのマルウェア拡散能力を考えると、BlackLotusが悪用している脆弱なブートローダーが失効されるまでは、活発に活動している犯罪組織にこのブートキットが渡った場合、事態が急変する恐れがあります。
本当にBLACKLOTUSなのか?
BlackLotusに関する情報をまとめた記事やブログはいくつか存在しており(The Registerの記事、LinkedInへのScott Scheferman氏の投稿、BleepingComputerの記事など)、これらの記事の情報はいずれもこのブートキットの開発者がアンダーグラウンドのハッキングフォーラムに提供した情報に基づいています。今のところ、これらの主張は肯定も否定もされていません。
これまでに公開されている記事や投稿の内容と、ESET社がこのブートキットの検体をリバースエンジニアリングして得た情報を比較した結果を以下に示します。
ハッキングフォーラムでのBlackLotusの広告では、セキュアブートをバイパスする機能が実装されていると主張している。バイパスを可能にする脆弱性は、現在使用されている数百のブートローダーに影響することから、脆弱なドライバーをUEFIの失効リストに追加することは不可能である。
この主張はESET社の解析結果と一致します。このブートキットは、CVE-2022-21894を攻撃して、UEFIセキュアブートが有効なシステムでこのセキュリティ機能を解除し、常駐します。この記事の執筆時点では、使用されている脆弱なドライバーは最新のdbxで失効していません。
ハッキングフォーラムでのBlackLotusの広告では、リングプロテクションのリング0/カーネルによる削除防止機能が実装されていると主張している。
この主張はESET社の解析結果と一致します。このカーネルドライバーは、EFIシステムパーティション(ESP)上のファイルに関連するハンドルが終了しないように保護します。削除されないように保護するための追加の仕組みとして、これらのハンドルを常に監視しており、いずれかのハンドルが終了される場合に、「ESPにあるブートキットファイルが削除されないように保護する仕組み」のセクションで説明しているように、BSOD(ブルースクリーン)がトリガーされます。
ハッキングフォーラムでのBlackLotusの広告では、マルウェア解析をブロックするために、仮想マシン検出機能、デバッグ対策機能、コード難読化機能が実装されていると主張している。
この主張はESET社の解析結果と一致します。このブートキットには、さまざまな仮想マシン検出機能、デバッグ対策機能、難読化手法が取り入れられており、複製や解析が困難になっています。しかし、簡単に解析でき、画期的な手法や高度な解析対策が実装されているわけではありません。
ハッキングフォーラムでのBlackLotusの広告では、このブートキットの目的がHTTPダウンローダーとして機能することであると主張している。
この主張はESET社の解析結果と一致します。このブートキットの最後のコンポーネントは、「HTTPダウンローダー」のセクションで説明しているように、HTTPダウンローダーとして機能します。
ハッキングフォーラムでのBlackLotusの広告では、このHTTPダウンローダーは正規のプロセスとしてSYSTEMアカウントで実行されると主張している。
この主張はESET社の解析結果と一致します。このHTTPダウンローダーは、winlogon.exeプロセスのコンテキストで実行されます。
ハッキングフォーラムでのBlackLotusの広告では、ディスク上のサイズがわずか80KBという軽量なブートキットであると主張している。
この主張はESET社の解析結果と一致します。ESET社が実際に取得した検体のサイズは80KB程度でした。
ハッキングフォーラムでのBlackLotusの広告では、HVCI、Bitlocker、Windows DefenderなどのWindows内蔵のセキュリティ保護を無効化し、ユーザーアカウント制御(UAC)をバイパスできると主張している。
この主張はESET社の解析結果と一致します。このブートキットは、HVCI、Windows Defender、BitLockerを無効化でき、UACをバイパスできます。
これらの解析結果から、今回実環境で検出されたブートキットは、本物のBlackLotus UEFIブートキットであるとESET社は確信しています。
攻撃の概要
BlackLotusによるセキュリティ侵害のチェーンを簡略化した図を図2に示します。攻撃は、以下の3つの部分から構成されています。
1.インストーラーの実行(図2のステップ1)から攻撃が始まります。このステップでは、ブートキットのファイルをEFIシステムパーティションに展開し、HVCIとBitLockerを無効にして、マシンを再起動します。
2.最初に再起動した後に、CVE-2022-21894の脆弱性が攻撃され、攻撃者のマシン所有者キー(MOK)が登録され、UEFIセキュアブートが有効なシステムでも常駐化されます。その後、再度、マシンを再起動します(図2のステップ2-4)。
3.この後は、起動するたびに、自己署名されたUEFIブートキットが実行され、カーネルドライバーとユーザーモードのペイロードであるHTTPダウンローダーの両方が展開されます。これらのコンポーネントを組み合わせることで、C&Cサーバーから追加のユーザーモードおよびドライバーコンポーネントをダウンロードして実行し、ブートキットが削除されないように保護します(図2のステップ 5-9)。
注意すべきアーティファクト
ESET社は、これがBlackLotus UEFIブートキットだと考えていますが、分析した検体ではBlackLotusを示す直接的な情報は見つかっていません。しかし、higurashi_installer_uac_module.dllやhigurashi_kernel.sysといった各コンポーネントの名前や、ブートキットバイナリに署名する自己署名証明書(図3を参照)には、アニメシリーズ『ひぐらしのなく頃に』からの引用がコードに多く含まれています。
また、このコードには、BlackLotusの作者からのメッセージ(図4を参照。hasherezadeは、有名な研究者であり、さまざまなマルウェア解析ツールの作者)や、さまざまな楽曲、ゲーム、シリーズからのランダムな引用を含むさまざまな文字列が含まれています。
インストールプロセス
まず、BlackLotusのインストーラーを解析した結果を説明します。このブートキットは、オフラインとオンラインの2つのバージョンのインストーラーから配布されている可能性があります。両者の違いは、セキュアブートをバイパスするために後で使用される正規で脆弱なWindowsバイナリを入手する方法にあります。
・オフラインバージョンでは、Windowsバイナリがインストーラーに埋め込まれています。
・オンラインバージョンでは、Windowsバイナリがマイクロソフト社のシンボルストアから直接ダウンロードされます。以下の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関数を使用してUEFI変数のSecureBootの値を読み取り、UEFIセキュアブートの状態をチェックし、メモリーのKUSER_SHARED_DATA構造のフィールドNtMajorVersionとNtMinorVersionに直接アクセスしてWindowsのバージョンを判断します。Windowsのバージョンを確認するのは、標的のシステムにブートキットを展開するために、UEFIセキュアブートをバイパスする必要があるかどうかを判断するためです(セキュアブートのサポートはWindows 8で初めて追加されており、標的のマシンで有効になっていない場合もあります)。
次のステップに進む前に、ESP:EFIMicrosoftBootディレクトリにある正規のWindowsブートマネージャー(bootmgfw.efi)バイナリの名前をwinload.efiに変更します。名前が変更されたこのbootmgfw.efiバックアップは、後でブートキットによってOSを起動するために使用され、C&Cサーバーからアンインストールのためのコマンドを受け取った場合に元のブートチェーンを回復するために使用されます。詳細は、「C&Cとの通信」のセクションを参照してください。
ステップ1 - ファイルの展開
UEFIセキュアブートが有効な場合、インストーラーは複数のファイルをESP:/EFI/Microsoft/Boot/およびESP:/system32/ディレクトリに展開して処理を続行します。前者はWindowsが使用する標準的なディレクトリであり、後者はインストーラーが作成する独自のフォルダーです。
インストーラーがドロップするファイルのリストと、実行チェーンにおける各ファイルの役割に関する簡単な説明を、表 1に記載します。実行チェーンの仕組みについては後ほど詳しく説明します。ここでは、悪意のあるファイルとともに、マイクロソフト社によって署名された正規のいくつかのファイルが展開されていることに注目してください。
表1. UEFIセキュアブートが有効なシステムでBlackLotusインストーラが展開するファイル
フォルダー | ファイル名 | 説明 |
ESP:\EFI\Microsoft\Boot | grubx64.efi | BlackLotusブートキット、自己署名された悪意のあるUEFIアプリケーション |
ESP:\EFI\Microsoft\Boot | bootload.efi | マイクロソフト社が署名した正規のshimバイナリ(これは一時的な名前であり、CVE-2022-21894の脆弱性が攻撃されて、bootmgfw.efiに変更されます) |
ESP:\EFI\Microsoft\Boot | bootmgfw.efi | 脆弱性がある(CVE-2022-21894)正規のWindowsブートマネージャーのバイナリ。インストーラーに組み込まれているか、Microsoftシンボルストアから直接ダウンロードされます |
ESP:\EFI\Microsoft\Boot | BCD | CVE-2022-21894の攻撃チェーンで使用される攻撃者独自のブート構成データ(BCD)ストア |
ESP:\EFI\Microsoft\Boot | BCDR | 標的ユーザーの元のBCDストアのバックアップ |
ESP:\system32 | hvloader.efi | 脆弱性がある(CVE-2022-21894)正規のWindowsハイパーバイザーロードのバイナリ。インストーラーに組み込まれているか、Microsoftシンボルストアから直接ダウンロードされます |
ESP:\system32 | bootmgr.efi | 脆弱性がある(CVE-2022-21894)正規のWindowsブートマネージャーのバイナリ。インストーラーに組み込まれているか、Microsoftシンボルストアから直接ダウンロードされます |
ESP:\system32 | mcupdate_AuthenticAMD.dll | 自己署名された悪意のあるネイティブPEバイナリ。このファイルは、AMD CPUを使用するシステムでCVE-2022-21894を攻撃した後で、hvloader.efiによって実行されます |
ESP:\system32 | mcupdate_GenuineIntel.dll | Mustang Pandaの既知のKorplugローダー |
ESP:\system32 | BCD | Mustang Pandaの既知のKorplugローダー |
標的ユーザーがUEFIセキュアブートをサポートしていないWindowsバージョンを使用している場合や、セキュアブートが無効になっている場合、展開のプロセスは非常にシンプルになります。悪意のあるブートキットを展開するために必要なのは、ESP:EFIMicrosoft\Boot\ディレクトリにある既存のWindowsブートマネージャー(bootmgfw.efi)バイナリを、攻撃者が署名した悪意のあるUEFIアプリケーションに置換することだけです。UEFIセキュアブートは無効にされており、起動時に整合性が検証されないため、UEFIファームウェアはセキュリティ違反を認識することなく悪意のあるブートマネージャーを実行します。
ステップ2 - ハイパーバイザーで保護されたコードの整合性(HVCI)の無効化
署名のない独自のカーネルコードを後で実行できるようにするために、インストーラーはシステムでHVCIが無効になっていることを確認する必要があります。ESET社のリサーチャーの一人が、2022年にこのトピックについてのブログ(署名されたカーネルドライバー - 保護されていないWindowsコアへのゲートウェイ)を書いていますので、その一部を以下に紹介します。
仮想化ベースのセキュリティ(VBS)は、いくつかの保護機能を提供しますが、最も重要な保護機能はハイパーバイザーによるコードの整合性の強制(HVCI)であり、これはスタンドアロンの機能としても提供されています。HVCIはカーネルのコードの整合性をチェックして、署名されたコードのみを実行できるようにします。この機能により、使用される攻撃手法に関わらず、脆弱なドライバーを悪用して署名のないカーネルコードを実行し、悪意のあるドライバーをロードすることを効果的に防止できます。脆弱なドライバーを悪用して悪意のあるコードをロードするマルウェアが存在していることが、マイクロソフト社がこの機能を実装した主な理由の1つだと考えられます。
図5に示すように、この機能を無効にするために、インストーラーはHypervisorEnforcedCodeIntegrityレジストリキーにあるレジストリEnabledの値をゼロに設定します。
ステップ3 - BitLockerの無効化
インストーラーによって無効にされる次の機能は、BitLockerドライブ暗号化です。BitLockerをTPM(トラステッドプラットフォームモジュール)と組み合わせて使用すれば、BitLockerドライブ暗号化を構成してから、セキュアブートを含む各ブートファイルや構成が改ざんされていないことを確認できるため、このインストーラーはこの機能を無効化します。このインストーラーは侵害したマシンのWindowsブートチェーンを変更するため、TPMをサポートするシステムでBitLockerが有効になっていると、次の起動時にBitLockerの回復画面が表示され、システムが侵害されていることが被害者に通知されます。
この保護を無効にするために、BlackLotusのインストーラーは以下の処理を行います。
・WMIクラスWin32_EncryptableVolumeのGetProtectionStatusメソッドを呼び出して、WMIの名前空間Root\CIMV2\Security\MicrosoftVolumeEncryptionにあるすべてのボリュームを調べて保護の状態をチェックします。
・BitLockerでボリュームが保護されている場合、DisableCountパラメータをゼロに設定してDisableKeyProtectorsメソッドを呼び出します。これにより、手動で有効にするまで保護が中断されます。
攻撃を実行するための障害となる保護機能を無効にし、すべてのファイルを展開したら、システムを次回に再起動するときにインストーラー自身を削除するように設定し、マシンを再起動してCVE-2022-21894を攻撃します。
セキュアブートのバイパスと常駐化
このセクションでは、UEFIセキュアブートが有効なシステムで、BlackLotusがどのように常駐するかを詳しく説明します。これから説明する実行チェーンは非常に複雑です。最初に基本的な原理を説明してから、技術的な詳細を説明します。
このプロセスは、2つの重要なステップから構成されています。
1.CVE-2022-21894を攻撃して、セキュアブート機能をバイパスし、ブートキットをインストールします。これにより、プラットフォームがまだファームウェアによって管理されており、UEFIブートサービスが利用可能な初期のブートフェーズで任意のコードを実行できるようになります。これにより、攻撃者は、UEFIセキュアブートが有効なマシンで、ブートサービス専用のNVRAM変数を変更するなど、本来マシンに物理的にアクセスできなければ実行できない多くの操作が可能になります。次に、この状況を利用して攻撃者は次のステップでブートキットを常駐させます。この攻撃の詳細については、「CVE-2022-21894の攻撃」のセクションを参照してください。
2.攻撃者のMOKをブートサービス専用のNVRAM変数MokListに書き込み、常駐化します。この操作により、起動のたびに脆弱性を攻撃するのではなく、マイクロソフト社が署名した正規のshimを使用して自己署名されたUEFIブートキットをロードできるようになります。このUEFIブートキットは、MokListに書き込まれた鍵に関連する秘密鍵で署名されています。これについては、ブートキットの常駐化のセクションで詳しく説明しています。
詳細な分析内容を以下の2つのセクションで分かりやすく説明するため、次の実行フローの図(図6)のステップに従って説明します。
CVE-2022-21894の攻撃
セキュアブートをバイパスするために、BlackLotusはCVE-2022-21894(別名Baton Drop)を使用します。これは、セキュリティ機能であるセキュアブートをバイパスする脆弱性です。この脆弱性は、システムのセキュリティに重大な影響を与えるにもかかわらず、あまり注目されてきませんでした。この脆弱性は、マイクロソフト社の2022年1月のアップデートで修正されましたが、影響を受けるバイナリがまだUEFI失効リストに追加されていないため、悪用が可能になっています。そのため、攻撃者は、脆弱なバイナリのコピーを標的ユーザーのマシンに持ち込み、この脆弱性を攻撃し、最新のUEFIシステムであってもセキュアブートをバイパスできます。
さらに、この脆弱性のPoC(概念実証)のエクスプロイトが2022年8月から公開されています。BlackLotusがVirusTotalに初めて送信された日付(図1)を考慮すると、このマルウェアの開発者は、このエクスプロイトの仕組みを深く理解せずに、公開されていたPoCを適応した可能性があります。
最初に、GitHubのPoCと一緒に公開されている説明を中心に、この脆弱性について簡単に紹介します。
・影響を受けるWindowsブートアプリケーション(bootmgr.efi、hvloader.efi、winload.efiなど)では、BCDブートオプションtruncatememoryを使用して、アプリケーションによりロードされる前に、シリアライズされたセキュアブートポリシーをメモリーから削除できます。
・これにより、攻撃者はbootdebug、testigning、nointegritychecksなどの他の危険なBCDオプションを使用できるようになり、セキュアブートを回避します。
・この脆弱性を攻撃する方法はいくつかありますが、そのうちの3つの方法がPoCリポジトリで公開されています。
・例えば、正規のhvloader.efiを悪用して、任意の自己署名されたmcupdate_
以下、BlackLotusがこの脆弱性を悪用する方法について説明します(以下のリストの数字は図6にあるステップ番号と対応しています)。
1.インストーラーがマシンを再起動すると、UEFIファームウェアは最初のブートオプションをロードします。
Windowsシステムの場合、最初のブートオプションはデフォルトでESPのESP:/EFI/Microsoft/Bootフォルダーにあるbootmgfw.efiに設定されています。ここでは、ファームウェアは、標的ユーザーの元のbootmgfw.efi(インストーラーによってwinload.efiに名前が変更されます)を実行せず、インストーラーによって展開された脆弱なWindowsブートマネージャーバイナリを実行します。
2.bootmgfw.efiが実行されると、インストーラーによって変更されたBCDブートオプションがロードされます。図7は、正規のBCDと変更後のBCDとの比較を示しています。
3.図7に示しているように(緑色の下線が引かれたパス)、正規のWindowsブートマネージャーは通常、デフォルトのブートアプリケーションとしてWindows OSローダー(\WINDOWS\system32\winload.efi)をロードします。しかし、ここでは変更されたBCDを使用し、BCDのエレメントavoidlowmemoryに値0x10000000を設定し、ESP:\system32\bcdに保存されている攻撃者が準備した別のBCDを、エレメントcustom:22000023が指定するように設定し、脆弱なESP:\system32\bootmgr.efiをロードして処理を続けます。これらのエレメントの使用に関する説明は、公開されているPoCに記載されています。
攻撃者は、シリアライズされたセキュアブートポリシーが既知の物理アドレス以上に割り当てられていることを確認する必要があります。
[…]
avoidlowmemoryエレメントを使用すると、物理メモリーのすべてが指定された物理アドレス以上に割り当てられることを保証できます。
・Windows 10以降では、VBSが有効になっていると、このエレメントは許可されませんが、シリアライズされたセキュアブートポリシーがメモリーから読み込まれる前に、ブートアプリケーションを初期化するときに時に使用されるため、bootmgrをロードし、攻撃者のBCDのパス(bcdfilepathエレメント(別名:custom:22000023)使用)を指定すれば、この制約を回避できます。
4.次のステップでは、実行されたESP:\system32\bootmgr.efiがESP:\system32\bcdにある別のBCDをロードします。この別のBCDを解析した内容を、図8に示します。
5.図8に示すBCDファイルから読み込まれたオプションによって、bootmgr.efiは、インストーラーによって展開された別の脆弱なWindowsブートアプリケーションであるESP:\system32\hvloader.efi(Windowsハイパーバイザーローダー)をロードして処理を続けます。さらに重要なのは、次の別のBCDオプションが同じBCDファイルで指定されることです(図8を参照)。
a. Truncatememoryを0x10000000に設定
b. NointegritychecksをYesに設定
c. TestsigningをYesに設定
ここからが重要なポイントです。シリアライズされたセキュアブートポリシーは、0x10000000以上の物理アドレスにロードする必要があるため(前のステップで使用したavoidlowmemoryのため)、truncatememoryエレメントを指定すれば効果的にポリシーを削除でき、セキュアブートが解除され、nointgritychecksやtestsigningなどのリスクのあるBCDオプションを使用できるようになります。攻撃者は、これらのオプションを使用して、hvloader.efiに自己署名したコードを実行させることができます。
6.この処理では、PoCで説明されているのと同じ手法が使用されます。正規のhvloader.efiは、実行中に<divice>
7.これで、攻撃者が署名したmcupdate*.dllがロードされ実行され、このチェーンの最後のコンポーネントである組み込みのMokInstaller(UEFIアプリケーション)が実行されます。この詳細については、図10を参照してください。
ブートキットの常駐化
これでMokInstallerは、攻撃者のMOKをNVRAM変数に登録し、マイクロソフト社が署名した正規のshimバイナリをデフォルトのブートローダーとして設定することで、常駐することが可能になりました。このプロセスの詳細を説明する前に、shimとMOKについて説明します。
shimは、さまざまなLinuxディストリビューションをUEFIセキュアブートで動作させるために、Linux開発者が開発したファーストステージのUEFIブートローダーです。これは単純なアプリケーションであり、別のアプリケーションをロード、検証、実行することが目的です。Linuxシステムの場合、通常、GRUBブートローダーをロード、検証、実行します。また、マイクロソフト社はshimのみに署名し、shimがその他のアプリケーションを管理する仕組みになっており、UEFI変数dbのキーを使用することにより、セカンドステージのブートローダーの整合性を検証できます。また、プラットフォームとshimの開発者(Canonical、RedHatなど)の両方が信頼するコンポーネントの実行を許可するために、独自の「許可」または「取り消し」キーやハッシュのリストを埋め込んでいます。shimは、これらのリストに加え、MOKリストと呼ばれるユーザーが管理する外部の鍵データベースを利用することもできます。図11は、MOKによるUEFIセキュアブートの仕組みを分かりやすく説明しています。
このMOKデータベースは、MokListという名前のブート専用のNVRAM変数に格納されています。上記のような脆弱性を悪用できなければ、UEFIセキュアブートが有効なシステムでこの変数を変更するにはマシンに物理的にアクセスしなければなりません(この変数は、起動時にOSローダーがUEFIブートサービス関数ExitBootServicesを呼び出す前にのみ利用できます)。しかし、この脆弱性を利用することで、攻撃者はUEFIセキュアブートをバイパスし、ExitBootServicesを呼び出す前に自己署名したコードを実行できるため(NVRAM変数MokListを修正することで)、簡単に自分の鍵を登録し、セキュリティ違反を発生させることなく、登録したその鍵で署名した任意のアプリケーションをshimに実行させることができます。
8.図6 - ステップ8のフローの説明を続けます。MokInstaller UEFIアプリケーションは、BlackLotus UEFIブートキットを常駐化し、以下の操作を行い、攻撃の痕跡を隠ぺいします。
a. インストーラーが作成したバックアップから元のBCDストアを復元し、bootmgfw.efiを、インストーラーによってESP:\system32\bootload.efiに前に展開されたマイクロソフト社が署名した正規のshimに置き換えます。
b. NVRAM変数のMokListを作成します。これには、攻撃者が自己署名した公開鍵証明書が含まれます。この変数は他のUEFI署名データベース変数(dbやdbxなど)と同じ方法でフォーマットされ、UEFIの仕様で定義されているEFI_SIGNATURE_LISTタイプの署名リストから構成されていることに注意してください。
c. 攻撃者のESP:\system32\フォルダーから攻撃に関するすべてのファイルを削除します。
9.最終的にマシンを再起動し、展開したshimが、インストーラーによって\EFI\Microsoft\Boot\grubx64.efiに展開された自己署名付きのブートキットを実行するようにします。grubx64.efiは、通常、x86-64システムでshimによって実行されるデフォルトのセカンドステージのブートローダーです。
最後の2つのステップで説明した操作を実行するコードを図12に示します。
BLACKLOTUS UEFIブートキット
常駐化の設定が完了すると、システムを起動するときにBlackLotusブートキットが毎回実行されます。このブートキットの目的は、カーネルドライバーと最終的なユーザーモードのコンポーネントであるHTTPダウンローダーを展開することです。ブートキットを実行するときには、Windowsの別のセキュリティ機能である仮想化ベースのセキュリティ(VBS)とWindows Defenderを無効化し、このブートキットを展開し秘密裏に動作させる可能性を高めようとします。このプロセスの詳細を説明する前に、カーネルドライバーとHTTPダウンローダーについての基本情報について説明します。
・カーネルドライバーの機能:
攻撃チェーンの次のコンポーネントであるHTTPダウンローダーを展開する。
マシンが終了してもローダーを存続させる。
ブートキットのファイルがESPから削除されないように保護する。
HTTPダウンローダーから指示された場合、追加のカーネルペイロードを実行する。
HTTPダウンローダーから指示された場合、ブートキットをアンインストールする。
・HTTPダウンローダーの機能:
C&Cと通信する。
C&Cから受信したコマンドを実行する。
C&Cから受信したペイロードをダウンロードして実行する(カーネルペイロードとユーザーモードペイロードの両方に対応)。
インストーラーからHTTPダウンローダーまでの実行フローを簡略化した図を、図13に示します。これらの各ステップについては、次のセクションで詳しく説明します。
BlackLotusの実行フロー
実行フローを以下に説明します(これらのステップは図13を参照してください)。
1.最初のステップとして、UEFIファームウェアはデフォルトのWindowsブートオプションを実行します。これは、通常、\EFI\Microsoft\Boot\bootmgfw.efiに格納されているファイルです。先に説明したように(「ブートキットの常駐化」セクションの、8.aを参照)、MokInstallerバイナリはこのファイルを署名されている正規のshimに置き換えています。
2.shimが実行されると、NVRAM変数MokListを読み出し、攻撃者が前に保存した証明書を使用して、\EFI\Microsoft\Boot\grubx64.efiにある攻撃者が署名したセカンドステージブートローダー(BlackLotus UEFIブートキット)を検証します。
3.検証が完了すると、shimはブートキットを実行します。
4.ブートキットは、ブート専用のNVRAM変数であるVbsPolicyDisableを最初に作成します。こちらで説明しているように、この変数は起動時にWindows OSローダーによって評価されます。この変数が定義されていると、HVCIやCredential GuardなどのVBSのコア機能が初期化されません。
5.次のステップ(5. a-e)では、このブートキットはUEFIブートキットに共通するパターンを使用して処理を続けます。Windows Boot Manager、Windows OSローダー、Windows OSカーネルなど、Windowsを起動するときの一般的なフローで実行されるコンポーネントを妨害し、一部の関数をメモリーにフックします。また、Windows Defenderのいくつかのドライバーにパッチを適用して、Windows Defenderを無効化しようとします。これらはすべて、OSの起動プロセスの初期段階でペイロードを実行し、検出を回避するために行われています。フックされる関数とパッチが適用されるドライバーは以下の通りです。
1.bootmgfw.efiまたはbootmgr.efiのImgArchStartBootApplication:
この関数は、ブートキットで一般にフックされ、Windows OSローダー(winload.efi)がメモリーにロードされたものの、実行されていないタイミング、つまりメモリー内でさらにパッチを適用する適切なタイミングを特定するために使用されます。
2.winload.efiのBlImgAllocateImageBuffer:
悪意のあるカーネルドライバーのための追加のメモリーバッファを割り当てるために使用されます。
3.winload.efiのOslArchTransferToKernel:
OSカーネルやシステムドライバーの一部がすでにメモリーにロードされているが、まだ実行されていないタイミング、つまりメモリー内でさらにパッチを適用する最適なタイミングを特定するためフックされます。このフックで、以下のドライバーにパッチが適用されます。メモリーで適切なドライバーを見つけるためのこのフックのコードを、図14に示します。
4.WdBoot.sysとWdFilter.sys:
BlackLotusは、すぐに復帰できるように、Windows DefenderのELAMドライバーであるWdBoot.sysとWindows DefenderのファイルシステムフィルタドライバーであるWdFilter.sysのエントリポイントにパッチを適用します。
5.disk.sys:
このブートキットは、disk.sysドライバーのエントリポイントをフックして、システム初期化の早期の段階でBlackLotusのカーネルドライバーを実行します。
6.次に、OSカーネルがdisk.sysドライバーのエントリポイントを実行すると、インストールされたフックにより悪意のあるカーネルドライバーのエントリポイントに移動します。悪意のあるコードは、システムが正常に機能するように元のdisk.sysを復元し、winlogon.exeのプロセスが開始するまで待機します。
7.悪意のあるドライバーは、winlogon.exeのプロセスが開始されたことを検知すると、最後のユーザーモードコンポーネントであるHTTPダウンローダーを挿入して実行します。
カーネルドライバー
このカーネルドライバーは、次の4つのタスクを主に実行します。
・winlogon.exeにHTTPダウンローダーを挿入し、スレッドが終了した場合は再度挿入する。
・ESPに展開されたブートキットファイルが削除されないように保護する。
・ユーザーモードのWindows DefenderプロセスMsMpEngine.exeを解除する。
・HTTPダウンローダーと通信し、必要な場合にはコマンドを実行する。
これらの各タスクについて説明します。
HTTPダウンローダーの常駐化
カーネルドライバーは、HTTPダウンローダーを展開します。ドライバーが起動すると、winlogon.exeのプロセスが起動するまで待機してから、他の操作を開始します。このプロセスが開始されると、ドライバーはHTTPダウンローダーのバイナリを復号し、winlogon.exeのアドレス空間に挿入して、新しいスレッドで実行します。その後、ドライバーはこのスレッドが実行されているかどうかを定期的にチェックし、必要に応じて挿入を繰り返します。ドライバーによってカーネルデバッガーが検出されると、HTTPダウンローダーは展開されません。
ESPにあるブートキットファイルが削除されないように保護する仕組み
ESPにあるブートキットファイルを保護するために、このカーネルドライバーは簡単な仕組みを取り入れています。保護するファイルをすべて開き、ハンドルを複製して保存し、カーネル関数ObSetHandleAttributesを使用して、HandleFlags(OBJECT_HANDLE_FLAG_INFORMATION)パラメータにあるProtectFromCloseフラグを1に指定して、他のプロセスによってハンドルが閉じられないように保護します。これにより、保護する対象のファイルの削除や変更を防止できます。以下のファイルが保護されます。
・ESP:\EFI\Microsoft\Boot\winload.efi
・ESP:\EFI\Microsoft\Boot\bootmgfw.efi
・ESP:\EFI\Microsoft\Boot\grubx64.efi
保護の対象となっているこれらのファイルをユーザーが削除しようとすると、 図15に示すようなメッセージが返されます。
ユーザーやセキュリティソフトウェアが保護フラグを解除してハンドルを閉じることができた場合でも、このカーネルドライバーは常にハンドルを監視しており、ハンドルが存在しなくなると、KeBugCheck(INVALID_KERNEL_HANDLE)関数を呼び出してBSOD(ブルースクリーン)を発生させる保護機能も備えています。
Windows Defenderのメインプロセスの解除
カーネルドライバーは、Windows DefenderのメインプロセスであるMsMpEng.exeを解除する場合もあります。各プロセスにSE_PRIVILEGE_REMOVED属性を設定してすべてのプロセスのトークン権限を削除することで、メインプロセスを解除します。これにより、Defenderのプロセスは、ファイルのスキャンなどを適切に実行できなくなります。ただし、この機能の実装方法には問題があり、MsMpEng.exeのプロセスを再起動すれば、Defenderの本来の機能が再度実行されます。
HTTPダウンローダーとの通信
カーネルドライバーは、名前付きのイベントとセクションを使用してHTTPダウンローダーと通信できます。使用される名前付きオブジェクトは、標的ユーザーのネットワークアダプターのMACアドレス(イーサネット)を基準に生成されます。オクテットの値が16より小さい場合は、16が名前に追加されます。生成されるオブジェクト名の形式は、検体によって異なる場合があります。解析した検体の1つは、MACアドレスが00-1c-0b-cd-ef-34となっており、次の名前が生成されています。
・\BaseNamedObjects\101c1b:名前付きセクション(MACの最初の3オクテットのみが使用されます)
・\BaseNamedObjects\Z01c1b:名前付きイベント - セクションと同じですが、MACアドレスの最初の1桁がZで置換されています。
HTTPダウンローダーがカーネルドライバーにいくつかのコマンドを渡す必要がある場合、名前付きのセクションを作成し、そこにコマンドと関連データを書き込み、名前付きのイベントを作成してドライバーがトリガーするまで(シグナルを送信する)待機し、ドライバーがコマンドを処理するのを待機できます。
このドライバーは、以下のコマンドをサポートしています。
・カーネルドライバーのインストール
・BlackLotusのアンインストール
賢明な読者の方であれば、ここでBlackLotusの弱点に気づくかもしれません。ブートキットがコンポーネントを削除できないように保護していても、上記の名前のオブジェクトを作成してアンインストールコマンドを送信してブートキットを完全にアンインストールするように、カーネルドライバーを騙すことができます。
HTTPダウンローダー
最後のコンポーネントは、C&Cサーバーと通信し、受信したC&Cコマンドを実行します。ESETが検出したすべてのペイロードは3つのコマンドを含んでいます。これらのコマンドは非常にわかりやすく、さまざまな手法で主に別のペイロードをダウンロードし実行します。
C&Cとの通信
C&Cサーバーと通信するために、このHTTPローダーはHTTPSプロトコルを使用します。C&Cドメインや使用するHTTPリソースのパスなどの通信に必要な情報は、ダウンローダーのバイナリに直接埋め込まれています。C&Cサーバーとの通信間隔は、デフォルトで1分に設定されていますが、C&Cから受信するデータによって変更される場合もあります。C&Cとの通信セッションは、HTTP POSTのビーコンメッセージをC&Cに送信することから始まります。今回解析した検体では、HTTP POSTヘッダーに以下のHTTPリソースのパスが指定できるようになっています。
・/network/API/hpb_gate[.]php
・/API/hpb_gate[.]php
・/gate[.]php
・/hpb_gate[.]php
ビーコンメッセージデータの先頭にはcheckin=という文字列が付けられており、独自のマシン識別子(HWIDと呼ばれます)、UEFIセキュアブートの状態、さまざまなハードウェア情報、BlackLotusのビルド番号と思われる値など、侵害されたマシンに関する基本情報が含まれています。HWIDは、マシンのMACアドレス(イーサネット)とシステムボリュームのシリアル番号から生成されます。暗号化されるメッセージの形式を、図16に示します。
C&Cにメッセージを送信する前に、最初に埋め込まれたRSAキーでデータが暗号化された後で、URLセーフのbase64でエンコードされます。検体を解析した結果、2種類のRSAキーが使用されていることがわかりました。これらのHTTPビーコンリクエストの例を、図17に示します。
ビーコンメッセージの応答としてC&Cから受信したデータは、2バイトのマジック値HPで始まっている必要があります。これ以外の値で始まっている場合は、それ以上処理されません。マジック値が正しい場合、マジック値に続くデータが、上記のHWIDの文字列をキーとして、CBCモードの256bitAESで復号されます。
復号された後のメッセージはビーコンと同じようなJSON形式の文字列になっており、コマンド識別子(Typeと呼ばれます)と、以下のようなさまざまなパラメータが追加で指定されます。
・C&Cとの通信間隔
・使用する実行方法
・ペイロードのファイル名
・ファイル拡張子に基づくペイロードタイプ(.sys、.exe、.dllに対応します)
・ペイロードデータのダウンロードを要求するために使用される認証トークン
・ペイロードデータの復号に使用するAESキー
サポートされているすべてのコマンドとその説明を、表 2に示します。
表2.C&Cコマンド
コマンドタイプ | コマンドの説明 |
1 | カーネルドライバー、DLL、または通常の実行ファイルをダウンロードして実行します |
2 | ペイロードをダウンロードし、ブートキットをアンインストールし、ペイロードを実行します。ブートキットの更新に使用されると考えられます |
3 | ブートキットをアンインストールして終了します |
C&Cは、これらのコマンドでペイロードを実行する前にまずディスクに展開するか、メモリー内で直接実行するか指定できます。ディスクに展開する場合は、OSボリュームにあるProgramDataフォルダーを保存先フォルダーとして使用し、ファイル名と拡張子はC&Cサーバーによって指定されます。メモリー内でファイルを直接実行する場合、svchost.exeが挿入先として使用されます。C&Cがカーネルドライバーを使用しなければならないコマンドを送信した場合や、カーネルモードでコードを実行する場合には、「HTTPダウンローダーとの通信」のセクションで説明されている方法が使用されます。
解析対策の仕組み
このマルウェアの作成者は、検出と解析を困難にするため、テキスト文字列、インポートするデータ、他の暗号化されない埋め込みデータなど、標準的なファイルアーティファクトができる限り残らないようにしています。解析を困難にするために使用される手法を以下に示します。
・文字列やデータの暗号化
検体で使用されていたすべての文字列は、簡易な暗号で暗号化されています。
すべての埋め込みファイルは、CBCモードの256bitAESで暗号化されています。
各ファイルの暗号化キーは、検体ごとに異なる場合があります。
AES暗号に加えて、一部のファイルはLZMSで圧縮されています。
・実行時のみのAPI解決
すべての検体で、Windows APIは常に実行時に排他的に解決されており、関数名の代わりに関数のハッシュを使用して、メモリー内の目的のAPI関数のアドレスを検索します。
必要なシステム関数を呼び出すために、syscall命令を直接呼び出す場合もあります。
・ネットワーク通信
HTTPSを使用して通信します。
HTTPダウンローダーがC&Cに送信するメッセージはすべて、埋め込まれたRSA公開キーで暗号化されます。
C&CからHTTPダウンローダーへ送信されるメッセージは、標的ユーザーのマシン環境から導出されるキー、またはC&Cが提供するAESキーで暗号化されます。
・デバッグ対策機能や仮想マシン検出機能が使用される場合、通常はエントリポイントの最初に配置されます。簡単なサンドボックスやデバッガー検出手法のみが使用されます。
対策と修正
・まず、システムとセキュリティ製品を常に最新の状態で維持することが大前提です。これにより、この脅威がOSで常駐化する前の早期の段階で阻止できる可能性が高くなります。
・そして、UEFIセキュアブートを回避する脆弱なUEFIバイナリが使用されないようにするために必要となる重要なステップは、UEFI失効データベース(dbx)で該当するバイナリを失効することです(Windowsシステム)。dbxの更新は、Windowsアップデートによって配信する必要があります。
・広く使われているWindows UEFIバイナリを失効させると、何千もの旧式のシステム、リカバリーメージ、またはバックアップを起動できなくなることから、失効に時間がかかりすぎるという問題が発生します。
・なお、BlackLotusが使用するWindowsアプリケーションを失効させると、ブートキットをインストールできなくなりますが、インストーラーによって標的ユーザーのブートローダーが失効したものに置換されるため、システムが起動できなくなる恐れがあります。この場合には、OSを再インストールするか、単にESPをリカバリーすることで問題を解決できます。
・BlackLotusが常駐した後に失効しても、ブートキットは常駐するために独自のMOKキーを登録した正規のshimを使用するため、そのまま常駐する可能性があります。この場合、最も安全な対策は、Windowsを再インストールし、mokutilユーティリティを使用して攻撃者が登録したMOKキーを削除することです。この操作を実行するには、起動中にMOKマネージャをユーザーが操作する必要があるため、マシンに物理的にアクセスしなければなりません。
重要なポイント
ここ数年、UEFIシステムのセキュリティに影響する重大な脆弱性が多く発見されています。残念ながら、UEFIのエコシステム全体は複雑であり、サプライチェーンの問題も関連していることから、これらの多くの脆弱性が修正された後でも、長きにわたって多くのシステムが危険な状態のままになっています。この1年間で、UEFIセキュアブートのバイパスを可能にする脆弱性へのパッチ適用や失効が失敗した具体的な例をいくつか紹介します。
・最初は、BlackLotusが悪用している脆弱性CVE-2022-21894です。この脆弱性が修正されてから1年が経過していますが、今でも、脆弱なUEFIバイナリが無効化されておらず、BlackLotusなどの脅威は、UEFIセキュアブートを有効にしたシステムでも秘密裏に動作しています。
・2022年初頭、ESET社は、UEFIセキュアブートを無効にするなど、セキュリティ上の脅威をもたらす複数のUEFIの脆弱性を公開しました。影響を受ける多くのデバイスは、脆弱性が公開された時点で3~5年しか経過しておらず、それほど旧式ではありませんが、OEMベンダーによってサポートされなくなっており、修正されていません。詳細は、ESET社のブログ「崩れた安全神話:Lenovoのホーム用ノートパソコンに、深刻なUEFIの脆弱性を発見」を参照してください。
・その後、2022年にも複数のUEFIの脆弱性が発見されました。これらの脆弱性を攻撃されると、UEFIセキュアブートが簡単に無効化されます。Binarlyの上級研究者が指摘しているように、アドバイザリに記載されたいくつかのデバイスは、アドバイザリが公開されてから数ヶ月後が経過してもパッチが公開されていない、あるいは正しく適用されておらず、デバイスが脆弱なままになっています。CVE-2022-21894のケースと同様に、サポート期限を迎えているため、脆弱なまま放置されているデバイスもあります。
これらの危険な状況に付け込んで、UEFIセキュアブートを有効にしているシステムでも動作するUEFIブートキットを作成する攻撃者が出現するのは時間の問題だったと言えます。昨年、RSAのプレゼンテーションで、ESPシステムパーティションへの攻撃が現実的になっており、UEFIに対する脅威が迫っていることをESET社が発表しましたが、BlackLotusの存在がこれを裏付けることになりました。
IOC(セキュリティ侵害の痕跡)
ファイル
SHA-1 | ファイル名 | 検出 | 説明 |
05846D5B1D37EE2D716140DE4F4F984CF1E631D1 | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
A5A530A91100ED5F07A5D74698B15C646DD44E16 | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
D82539BFC2CC7CB504BE74AC74DF696B13DB486A | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
16B12CEA54360AA42E1120E82C1E9BC0371CB635 | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
DAE7E7C4EEC2AC0DC7963C44A5A4F47D930C5508 | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
45701A83DEC1DC71A48268C9D6D205F31D9E7FFB | N/A | Win64/BlackLotus.A | BlackLotusのインストーラー |
2CE056AE323B0380B0E87225EA0AE087A33CD316 | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
5A0074203ABD5DEB464BA0A79E14B7541A033216 | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
5DC9CBD75ABD830E83641A0265BFFDDD2F602815 | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
97AEC21042DF47D39AC212761729C6BE484D064D | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
ADCEEC18FF009BED635D168E0B116E72096F18D2 | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
DBC064F757C69EC43517EFF496146B43CBA949D1 | N/A | EFI/BlackLotus.B | BlackLotus UEFIブートキット |
06AF3016ACCDB3DFE1C23657BF1BF91C13BAA757 | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
0C0E78BF97116E781DDE0E00A1CD0C29E68D623D | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
6D8CEE28DA8BCF25A4D232FEB0810452ACADA11D | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
74FF58FCE8F19083D16DF0109DC91D78C94342FA | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
ACC74217CBE3F2E727A826B34BDE482DCAE15BE6 | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
111C4998F3264617A7A9D9BF662D4B1577445B20 | N/A | Win64/BlackLotus.B | BlackLotus HTTPダウンローダー |
17FA047C1F979B180644906FE9265F21AF5B0509 | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
1F3799FED3CF43254FE30DCDFDB8DC02D82E662B | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
4B882748FAF2C6C360884C6812DD5BCBCE75EBFF | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
91F832F46E4C38ECC9335460D46F6F71352CFFED | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
994DC79255AEB662A672A1814280DE73D405617A | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
FFF4F28287677CAABC60C8AB36786C370226588D | N/A | Win64/BlackLotus.C | BlackLotusのカーネルドライバー |
71559C3E2F3950D4EE016F24CA54DA17D28B9D82 | N/A | EFI/BlackLotus.C | BlackLotusインストーラーが展開するBCD(ブート構成データ)ストア |
D6D3F3151B188A9DA62DEB95EA1D1ABEFF257914 | N/A | EFI/BlackLotus.C | BlackLotusインストーラーが展開するBCD(ブート構成データ)ストア |
547FAA2D64B85BF883955B723B07635C0A09326B | N/A | EFI/BlackLotus.A | CVE-2022-21894を攻撃するBlackLotusのペイロードローダー |
D1BBAA3D408E944C70B3815471EED7FA9AEE6425 | N/A | EFI/BlackLotus.A | CVE-2022-21894を攻撃するBlackLotusのペイロードローダー |
0E6DD7110C38464ECAA55EE4E2FA303ADA0EDEFB | N/A | EFI/BlackLotus.A | CVE-2022-21894を攻撃するBlackLotusのペイロード - MokInstaller EFIアプリ |
D6BB89D8734B3E49725362DAE9A868AE681E8BD6 | N/A | EFI/BlackLotus.A | CVE-2022-21894を攻撃するBlackLotusのペイロード - MokInstaller EFIアプリ |
164BB587109CFB20824303AD1609A65ABB36C3E9 | N/A | Win64/BlackLotus.D | BlackLotusインストーラーのUACバイパスモジュール |
証明書
シリアルナンバー | 570B5D22B723B4A442CC6EEEBC2580E8 |
サムプリント | C8E6BF8B6FDA161BBFA5470BCC262B1BDC92A359 |
Subject CN | When They Cry CA |
Subject O | N/A |
Subject L | N/A |
Subject S | N/A |
Subject C | N/A |
有効期限の開始 | 2022-08-13 17:48:44 |
有効期限の終了 | 2032-08-13 17:58:44 |
ネットワーク
IP | ドメイン | ホスティングプロバイダー | 最初に確認された日付 | 詳細 |
N/A | xrepositoryx[.]name | N/A | 2022-10-17 | BlackLotusのC&Cサーバー https://xrepositoryx[.]name/network/API/hpb_gate.php |
N/A | myrepositoryx[.]com | N/A | 2022-10-16 | BlackLotusのC&Cサーバー https://myrepositoryx[.]com/network/API/hpb_gate.php |
104.21.22[.]185 | erdjknfweklsgwfmewfgref[.]com | Cloudflare, Inc. | 2022-10-06 | BlackLotusのC&Cサーバー https://erdjknfweklsgwfmewfgref[.]com/API/hpb_gate.php |
164.90.172[.]211 | harrysucksdick[.]com | DigitalOcean, LLC | 2022-10-09 | BlackLotusのC&Cサーバー https://harrysucksdick[.]com/API/hpb_gate.php |
185.145.245[.]123 | heikickgn[.]com frassirishiproc[.]com | SIA VEESP | 2022-10-12 | BlackLotusのC&Cサーバー https://heikickgn[.]com/API/hpb_gate.php https://frassirishiproc[.]com/API/hpb_gate.php |
185.150.24[.]114 | myrepository[.]name | SkyLink Data Center BV | 2022-10-14 | BlackLotusのC&Cサーバー myrepository[.]name/network/API/hpb_gate.php |
190.147.189[.]122 | egscorp[.]net | Telmex Colombia S.A. | 2022-08-24 | BlackLotusのC&Cサーバー https://egscorp[.]net/API/hpb_gate.php |
MITRE ATT&CKの技術
この表は、MITRE ATT&CKフレームワークのバージョン12を使用して作成されています。
手法 | 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ダウンローダーは、プロセスホローイングの手法により、新しく作成したsvchost.exeプロセスにDLLを挿入できます |
防衛機能の回避 | T1055.002 | プロセスインジェクション:PE(Portable Executable)の注入 | BlackLotusのドライバーは、HTTPダウンローダーのPE(Portable Executable)をwinlogon.exeプロセスに挿入します |
防衛機能の回避 | T1014 | ルートキット | BlackLotusのカーネルドライバーは、ESPにあるブートキットファイルが削除されないように保護します |
防衛機能の回避 | T1497.001 | 仮想化/サンドボックスの回避:システムチェック | BlackLotusは、サンドボックス固有のレジストリ値をチェックするなど、さまざまなシステムチェックを行い、仮想化環境や解析環境を検知して回避します |
検出 | T1622 | デバッガーの回避 | BlackLotusのコンポーネントは、カーネルモードまたはユーザーモードのデバッガーが標的ユーザーのマシンで実行されているかどうかを検出するために、さまざまな手法を使用します |
検出 | T1082 | システム情報の検出 | BlackLotusは、侵害したホストのシステム情報(IP、GPU、CPU、メモリー、OSバージョン)を収集します |
検出 | T1614 | システムの場所の検出 | BlackLotusは、侵害したホストで、ro-MD、ru-MD、ru-RU、uk-UA、be-BY、hy-AM、kk-KZのシステムロケールの1つが確認されると、実行を終了します |
検出 | T1016 | システムネットワーク構成の検出 | BlackLotusのHTTPダウンローダーは、api.ipify[.]orgサービスをリクエストして、侵害したホストのパブリックIPを判断します |
検出 | T1016.001 | システムネットワーク構成の検出:インターネット接続の検出 | BlackLotusのHTTPダウンローダーは、マイクロソフト社のwww.msftncsi[.]com/ncsi[.]txtに対してクエリを行い、インターネット接続を確認します |
検出 | T1497.001 | 仮想化/サンドボックスの回避:システムチェック | BlackLotusは、サンドボックス固有のレジストリ値をチェックするなど、さまざまなシステムチェックを行い、仮想化環境や解析環境を検知して回避します |
C&C(コマンド&コントロール) | T1071.001 | アプリケーションレイヤープロトコル:Webプロトコル | BlackLotusは、C&Cとの通信にHTTPSを使用します |
C&C(コマンド&コントロール) | T1132.001 | データのエンコーディング:標準エンコーディング | BlackLotusは、C&C通信で使用する暗号化したデータをURLセーフのbase64でエンコードします |
C&C(コマンド&コントロール) | T1573.001 | 暗号化されたチャンネル:対称暗号方式 | BlackLotusは、C&Cから受信したメッセージを復号するために、CBCモードの256bitAESを使用します |
C&C(コマンド&コントロール) | T1573.002 | 暗号化されたチャンネル:非対称暗号方式 | BlackLotusは、C&Cに送信するメッセージを暗号化するために、埋め込まれたRSA公開キーを使用します |