Zerologon攻撃、未認証でDC管理者権限を取得されるリスク。CVSSスコア10の深刻な脆弱性
オランダのセキュリティ会社であるSecuraが「Zerologon」と名付けた攻撃が話題を集めている。「Zerologon」は特定のNetlogon認証パラメーターに0(ゼロ)を追加することによって攻撃が成立する。Windows ADやドメインコントローラとネットワーク接続が可能な状況であれば、比較的簡単に実行出来るリスクがあり、CVSSスコアも10となっている。
■本脆弱性の要点
さまざまなフィールドに0が入力されたNetlogonメッセージを多数送信するだけで、攻撃者はADに格納されているドメインコントローラのコンピュータパスワードを変更可能になる。これを使用してドメイン管理者資格情報を取得し、元のDCパスワードを復元できる。
この攻撃の影響は非常に大きく、基本的にはローカルネットワーク(悪意のある内部関係者や、デバイスをオンプレミスのネットワークポートに接続しただけの人など)上のあらゆる攻撃者がWindowsドメインを完全に危険にさらすことになる。この攻撃はユーザの認証情報を必要としない。
内部犯行者や、既にマルウェアが内部に潜入しており、C&Cサーバからマルウェアを遠隔操作利用な場合には、本脆弱性が利用されるリスクがあり、非常に緊急性/重要性の高いセキュリティパッチとなる。
■ひっそりとリリースされたセキュリティパッチ
2020年8月11日、マイクロソフトは月例のセキュリティパッチをリリースした。この中にCVE-2020-1472 | Netlogon Elevation of Privilege Vulnerabilityと呼ばれる脆弱性に対する、パッチが含まれていた。
パッチがリリースされた時点では、大きな反響を呼ばなかったが、オランダのセキュリティ会社であるSecura BVが報告したレポートをきっかけに、このパッチ適用が非常に重要なものであることが判明した。
■狙われれば約3秒程で攻撃が成立する
Zerologon攻撃にはNetlogonリモートプロトコル(MS-NRPC)が利用される。Netlogonリモートプロトコルとは、Windowsドメインコントローラで利用可能なRPCインターフェースであり、わかり易く表現すればユーザーやコンピュータの認証に関連したタスクを実行するために利用されるプロトコルである。一般的な利用例としては NTLM プロトコルを使用しユーザーがサーバーにログインするために使用される。
このNetlogonリモートプロトコルは、他の認証プロトコルとは異なりユーザアカウントベースの認証は実施しない。その代わりクライアント(ドメインに接続されたコンピュータ)とサーバ(ドメインコントローラ)がお互いに共有秘密を知っていることを証明するために、独自の暗号化プロトコルを使用する方式で通信を成立させる仕組みになっている。
Zerologon攻撃は、この暗号化認証スキームの欠陥を利用したもの。攻撃の方法は非常に単純で、暗号化認証スキームで利用されるパケットの特定のフィールドを「0(ゼロ」で埋めることで成立する。
また、Securaによれば、偽装した認証パケットを送信しても、無効なログイン試行の後にコンピュータアカウントがロックされることはないので、認証が成功するまで何度も試行することが可能だという。本攻撃が成功するまでに予想される平均的な試行回数は256回で、約3秒程で攻撃が成立する可能性があるという。
■悪用されれば、ドメインコントローラの管理者権限が奪われる
SecuraはこのZerologon攻撃を悪用されれば、Windowsのドメインコントローラの管理者権限を不正に取得することが可能だとしている。Secureの考えたZerologonを利用した攻撃シナリオは以下のとおり。
1.クライアントの認証情報を偽装する
NetrServerReqChallengeコールでチャレンジを交換した後、クライアントはNetrServerAuthentication 3コールを実行して自身を認証します。このコールにはClientCredentialというパラメーターがあり、前のコールで送信されたクライアント・チャレンジにComputeNetlogonCredentialを適用することによって計算される。このチャレンジは任意の値を設定することが可能であるため、8つのゼロが含まれたチャレンジを利用することが可能になる。
256回の試行のうち、一つは8つのゼロで構成されたチャレンジとなるので、これが成立すれば偽装成功となる。なお、不正なアクセス試行を制限する仕組みが無いため、256回の試行にかかる時間は約3秒で偽装が成立する可能性がある。
2.署名と暗号化を無効にする
NetrServerAuthenticate3 コールにフラグを設定しなければ、署名と暗号化を無効にすることが可能。
3.コールを無効にする
コールの暗号化が無効になっていたとしても、オーセンティケータ値が含まれている必要がある。この値は、ComputeNetlogonCredential (セッションキーを使用して)をClientStoredCredential+Timestampの値に適用することによって計算される。
ステップ1が成功したとした場合には、ComputeNetlogonCredential (0) =0であることが分かっているので、オーセンティケータ値のチェックもバイパスすることが可能になる。
4.コンピュータのADパスワードを変更する
NetrServerPasswordSet 2コールを利用して、コンピュータのADパスワードを変更する事が可能になる。ここでも、 全てゼロで構成したCFB8を利用することで、攻撃が成立し、ADにログイン出来るようになる。
5.ドメインコントローラーの管理者へ移行する
ADにログインすることが出来れば、あるスクリプトを実行することで、ドメイン・アドミニストレーター・ハッシュ(ゴールドチケットの作成に使用できる 「krbtgt」 キーを含む)を入手することが可能になるので、これを利用すれば、ドメインコントローラの管理者になることが出来る。
■脆弱性の存在有無を調査するツール
Securaは「Zerologon」が悪用される可能性があるかをチェックするためのスクリプトを公開している。今すぐセキュリティパッチを適用出来ない管理者も一度このスクリプトを利用して、悪用されるリスクが存在するかチェックしてみると良いだろう。
https://github.com/SecuraBV/CVE-2020-1472
■既にmimikatzと統合完了か?
Windows向けの代表的なポストエクスプロイトツールの1つにmimikatzと呼ばれるツールが存在する。このmimikatzの作者がmimikatz上でZerologonを実行しているGif動画が公開されている。
■ADコントローラーを狙う攻撃が増加中
国内でもADコントローラーを狙うサイバー攻撃が増加している。NTTコミュニケーションズを狙った攻撃を覚えている人も少なくないだう。
Zerologonの存在は世界中で報道されており、悪用される危険性は高い。緊急度を上げてセキュリティパッチを適用することを推奨する。
■09/15 12:52追記
Microsoft Security Response Centerにて、Zerologon(CVE-2020-1472)に関する情報が公開されたので、リンクを共有する。影響範囲や管理者が実施すべき作業等が記載されている。
[AD 管理者向けCVE-2020-1472 Netlogon の対応ガイダンスの概要]