Zerologonの概要

Zerologonとは

Microsoft Active Directoryドメインコントローラへの攻撃を可能にするMicrosoftのNetlogonプロセスの暗号化における脆弱性。この脆弱性のために、攻撃者は、ルートドメインコントローラを含むあらゆるコンピュータになりすますことができます。

Zerologon

Zerologonとは、CVE-2020-1472で識別される脆弱性に付けられた名前です。これは、必ず乱数でなければならない初期化ベクトル(IV)が常にすべてゼロに設定されるログオンプロセスの不具合のために、Zerologonと呼ばれます。

この危険な脆弱性には、Common Vulnerability Scoring System(CVSS)により、10段階の深刻度(CVSS v3.1)で10が割り当てられました。アクティブな攻撃実証コード(PoC)が確認されており、この脆弱性の悪用も報じられています。詳しくは こちら 。

CISA(Cybersecurity and Infrastructure Security Agency)は、影響を受けるすべてのWindowsサーバに直ちにパッチを適用するか、無効化することを連邦行政機関に命じる緊急指令を発出し、非政府組織にも同様の措置を講じるよう警告しました。

Microsoftの2つのパッチのうち、2020年8月にリリースされた最初のパッチは、すべてのドメインコントローラに適用する必要があります。

この脆弱性では、ユーザがNTLM(NT LAN Manager)を利用しているサーバにログオンするためのMicrosoft Active Directory Netlogon Remote Protocol(MS-NRPC)の暗号化の不具合が悪用されます。この脆弱性の最大の問題は、MS-NRPCがコンピュータサービスアカウントのパスワード変更などにも使用されることです。過去に遡って検討すれば、この機能を追加した理由を理解することはできますが、パスワードの変更に対する要求元が確認されないことは、重大なセキュリティ上の問題となりました。

問題はこれだけではありません。MS-NRPCに追加された暗号化は、適切に選択されていませんでした。1883年にオランダの暗号研究者であるアウグスト・ケルクホフス(Aguste Kerckhoff)氏は、暗号システムを設計するための6つの主要な原理の概要を示した「 La Cryptographie Militaire(軍事用暗号)」という表題の2つの小論を出版しました。その中で最も有名なケルクホフスの原理は、データを保護するために暗号鍵は秘密にしなければならないが、アルゴリズムの機密性に頼るべきではないというものです。今日では、十分に検証され、実証された既知のアルゴリズムを使用すべきであると言えるでしょう。

Windows NTのログオンプロセスを暗号化するために当初使用されていたアルゴリズムは、現在、問題が確認されている2DESでした。今日、MS-NRPCでは、暗号化のベンチマークとみなされるAdvanced Encryption Standard(AES)が使用されています。実証済みの強力なアルゴリズムの選択に加えて、十分な強度を確保するために、追加の設定を選択しなければなりません。MS-NRPCでは、AES-CFB8(Advanced Encryption Standard - Cipher Feed Back 8 bit)と呼ばれる設定が使用されていますが、これはあまり知られたものではなく、十分に検証されてもいません。MS-NRPC内でのAES-CFB8には、初期化ベクトル(IV)の問題がありました。これは乱数にする必要がありますが、MS-NRPCでは16バイトのゼロの値に固定されていました。これは、まったくランダムではなく、予測可能です。多くの場合、暗号化は予測可能な場合に破られます。

この脆弱性がどのように確認されたか

この脆弱性は、Securaに所属しているオランダの研究者Tom Tervoort氏によって、2020年9月に発表されました。この脆弱性に対して8月には実際にパッチがリリースされましたが、PoCやその他の活動が確認され始めたのは、この研究者が9月にレポートを公開した後でした  (Tervoort氏の論文で脆弱性の発見と発見に至るプロセスが詳述された後)。研究中に、Tervoort氏はMS-NRPCに関する情報が極めて不足していることに気付きました。興味を持ったTervoort氏は、さらに多くの情報を収集しました。 

Tervoort氏は、初めに中間者攻撃を検証している間に、CVE-2020-1424に詳述される別の脆弱性を見つけました。研究を続けることにより、Tervoort氏は現在Zerologonと呼ばれている脆弱性を特定しました。その発見の重要な部分は、Microsoftが、すべての他のRPCプロトコルとは異なる独自のタイプの暗号化を実装していたことです。Windows NTの時代に、コンピュータに割り当てられるアカウントは最重要な認証やアクセス制御の対象とはみなされていなかったため、Microsoftは、コンピュータやマシンのアカウントを認証するために、標準的なKerberosやNTLMを使用することができませんでした。このため、開発者は代替手段を考案しました。破ることのできない暗号化のコードやプロトコルを作成することは極めて困難です。実際、本件のように、不具合が発見されるまでに極めて長い時間がかかることもあります。

攻撃のメカニズム

この脆弱性のために、攻撃者は、ルートDCを含むドメインコントローラ(DC)を制御することができます。これは、コントローラ上でサービスアカウントのパスワードを変更するか削除することによって行われます。次に、攻撃者は、サービス拒否攻撃を仕掛けるか、ネットワーク全体を乗っ取ることができます。

この脆弱性を悪用するために、攻撃者は、DCとTCPセッションを確立する必要があります。 攻撃者が物理的にネットワークの内部にいる場合、ユーザのデスクに座っているか、会議室などのポートの開いている場所にいるかもしれません。このような攻撃コードは、インサイダー攻撃とみなされます。これは、今日の企業にとって特に被害の大きい攻撃です。攻撃者は、コントローラに対するTCPセッションを確立するための足掛かりを得ることができる限り、ネットワークの外部からセッションを確立することができます。

16バイトのゼロからなる固定IVでAES-CFB8を使用することにより、Tervoort氏は、使用される鍵において1/256の確率で、値がすべてゼロの暗号文が生成される可能性があることを発見しました。これは、極めて少ない数の鍵であり、攻撃者はすべてゼロの暗号文の作成を容易に試みることができます。攻撃者のコンピュータでこれを実行するには、最大2~3秒しかかかりません。 

なぜこれが問題なのでしょうか?

DCと通信しているマシンが通常のユーザによって使用されている限り、実際上問題はありません。構造に問題のある暗号文が生成されますが、ネットワーク認証処理は機能します。この問題は、攻撃者がシステムを悪用しようとした場合にのみ発生します。

Tervoort氏によって証明された攻撃において、攻撃者はまずネットワーク上のクライアントの認証情報(パスワード)を偽装しなければなりません。MS-NRPCではIVの実装に問題があるため、たった256回程度の試行で正しいパスワードを見つけることができます。通常、ユーザのアカウントはパスワードを推測しようとして3回入力した後にロックされますが、コンピュータやマシンのアカウントはロックされません。コンピュータがログオンする場合には、正しくないパスワードの試行回数に制限が設定されていないため、攻撃者は、侵入するために短時間に連続して何度も試行することができます。攻撃者は、すべてゼロの暗号文を生成する鍵の1つを見つける必要があります。

ネットワーク上のコンピュータのIDを偽装した後に、攻撃者は何ができるでしょうか? IDを偽装する最初のステップが完了しても、攻撃者はセッションの実際の暗号鍵を知りません。攻撃者にとって可能なのは、1/256の確率ですべてゼロの暗号文を生成する鍵を見つけることによって、自らのIDを偽装することだけです。次のステップは「署名(signing)と秘匿(sealing)」を無効にすることです。

RPCの署名と秘匿は、MS-NRPC内で転送の暗号化に使用されるメカニズムです。転送中のデータの方が暗号化の必要性が高いため、これは論理的なプロセスのように感じられます。しかし、MS-NRPC内で、これはメッセージのヘッダにフラグを設定しないだけでオフになるオプション機能です。署名と秘匿をオフにするとメッセージは平文で送信されるようになり、攻撃者は、パスワードの削除や変更を含め、何でも好きなことができるようになります。2021年2月に、マイクロソフトは、署名と秘匿を必須とするパッチをリリースする予定です。

第3のステップでは、偽装したアカウントのパスワードが変更されます。偽装するのが最も効果的なデバイスはADサーバであり、ルートADサーバであればさらに好都合です。パスワードを変更するために、攻撃者はMS-NRPC内のメッセージNetServerPasswordSet2を使用します。使いたい新たなパスワードとともにフレームを送信するだけで、パスワードを変更できます。最も簡単な方法は、パスワードを削除するか、空白の値に設定することです。 これにより、攻撃者は、通常のプロセスでログインできるようになります。 

ネットワーク上のランダムなあるコンピュータが標的となった場合、そのコンピュータはログインできなくなります。つまり、この攻撃の結果、初めにそのコンピュータに対してサービス拒否攻撃が実行されます。

世界的な影響

現在、複数のPoC攻撃コードが公開されています。ADサーバにパッチが適用されていない場合、攻撃によってネットワークにランサムウェアが侵入して、企業は甚大な被害を受ける恐れがあります。 

サーバが被害を受けやすいかどうかをチェックするツールが用意されています。Tervoort氏とSecuraは、ドメインコントローラにパッチが適用されているかどうかを検証し、脆弱性の有無を検出するツールをGitHubに公開しました。

CVE-2020-1472のパッチ

2020年8月に、Microsoft はCVE-2020-1472(Zerologon)のパッチをリリースしました。すべてのADサーバ(2008 R2以上)には、できるだけ早くパッチを適用する必要があります。しかし、実際には運用上の都合などで直ちに適用できない場合もあり得ます。パッチ適用における障害に関する考察については、Dustin氏執筆の こちらの投稿 をご一読ください。迅速なパッチ適用が難しいケースにおいて、この脆弱性のパッチが実装される時期が2021年まで先延ばしとなることも予想されます。 

さらに、新たにリリースされたパッチでは、問題の半分しか修正されません。Microsoftは、2021年2月9日に強制フェーズを含む第2フェーズのパッチをリリースする予定です。この時点で、すべてのデバイスはセキュアなチャネルモードの使用を要求され、これを使用しない場合、アクセスが拒否されます。旧式の非準拠デバイスがある場合は、非準拠デバイスへのアクセスを明示的に許可するグループポリシーを手動で追加する必要があります。

仮想パッチ

リリースされたパッチでは問題の半分しか解決されないため、ネットワーク、デバイス、データを保護するために追加の暫定的な対策を講じる必要があります。このような防御対策の1つは、脆弱性の有無を確認することです。SecuraとTervoort氏によって提供されたツールを含め、ADサーバ上のZerologon脆弱性を検出するために、複数のツールがすでに提供されています。

従来のセキュリティ対策も、侵害されたアカウントやネットワーク、悪意のあるトラフィック、その他の侵害の痕跡を監視するために必ず適用する必要があります。ランサムウェア、ウイルス、その他の脅威を監視するために、ネットワークとホストデバイス(すべてのエンドポイント)に対する侵入検出および防御システムと不正プログラム対策ソフトウェアは不可欠です。さらに、SIEM(Security Information & Event Manager)によってログの収集、一元化、分析を行う必要があります。ログを分析した後、侵害の痕跡(IoC)に対応するために、人員とプロセスを配置しなければなりません。次に、強力な手順と知識を備えたインシデント対応チームが対応作業を引き継いで、侵害の範囲と解決に向けた取り組みについて決定を下す必要があります。

また、仮想パッチという対策も有効です。これは、既知および未知の脆弱性を悪用する脅威に対する安全対策です。トレンドマイクロのZero Day Initiative(ZDI)では、これまでの実績からZerologonのような脆弱性への攻撃を防止する仮想パッチ作成の支援によって、正式なパッチがリリースされる平均81日前からお客さまの保護を実現します。

Zerologonに関するトピック