Windows および Active Directory 環境でのデュオ認証の設定ミスの悪用

Figure 1: Duo logon prompt news

Duo Authentication は、Microsoft Windows および Active Directory (AD) と統合して、リモート デスクトップとローカル ログオンの両方で多要素認証 (MFA) をサポートします。これにより、ユーザーがコンピューターにログオンするために MFA 要件を満たす必要があるため、資格情報の侵害からワークステーションを保護できます。クライアント側の構成設定は、幅広いユースケースをサポートするのに役立ち、インターネットまたは Duo API 接続の問題が発生した場合にオフライン アクセス用に構成できます。 Duo クライアント側の構成、サービス設定、およびエージェントの展開は、エンドポイントで手動で構成するか、AD グループ ポリシー オブジェクト (GPO) を使用して構成できます。 Duo 認証ポリシーにより、MFA 要件と MFA フローをきめ細かく制御できます。 Duo 認証が Windows コンピューターまたは AD 環境でどのように機能するかについての背景知識は、乱用と構成ミスを理解するのに役立ちます。

Windows と AD でのデュオ認証

Duo は、エンドポイントにインストールする必要があるソフトウェア エージェント (Windows ログオン用の Duo 認証) を介して Microsoft Windows と統合します。その後、ユーザーがローカルまたはリモート デスクトップ プロトコル (RDP) を使用して Windows にログインするとき、またはユーザー アカウント制御 (UAC) の昇格が必要なときに、Duo は MFA を適用できます。 Duo は、PowerShell、スケジュールされたタスク、SMB、WMI、PsExec、または WinRM を使用する場合など、他のサービスおよびログオン方法のエンドポイントに MFA を適用しません。さらに、この記事の執筆時点では、 制限付き管理者モード RDPを使用する場合の Duo MFA 統合はサポートされていません。

コンピューターに Duo がインストールされ、MFA を適用するように構成されている場合 (ローカルの Duo エージェント インストールまたは GPO 経由の展開を使用)、ユーザーのログイン フローは次のようになります。

  • ユーザーは、ローカル ログイン プロンプトまたは RDP クライアントを介してコンピューターに資格情報 (ローカルまたはドメイン アカウント) を入力します。資格情報が有効であると判断された場合、コンピューターがロックされている間、Duo 認証プロンプト ウィンドウが表示されます。このプロンプトは、電話、タブレット、セキュリティ キー デバイスなど、Duo に登録されたデバイスの 1 つを選択するためのドロップダウン メニューをユーザーに提示します。
  • 選択したデバイス タイプに応じて、MFA 要件を満たすために使用できるさまざまな認証方法があります。これには以下が含まれる場合があります。
    • Duo アプリを使用してモバイル デバイスに「プッシュ」通知を送信する
    • 電話番号への発信または SMS メッセージの送信による「パスコード」の送信
    • モバイル端末にインストールした Duo アプリから「パスコード」を入力する
    • セキュリティ キーからの HOTP (HMAC ベースのワンタイム パスワード) /TOTP (時間ベースのワンタイム パスワード)。
  • コンピュータが MFA 要件が正常に満たされていることを確認するために、Duo ソフトウェアは、Duo テナントに関連付けられたクラウドベースの API URL に対して API クエリを実行します。この API 要求を実行するには、Windows デバイスのソフトウェア エージェントで API キーが構成されている必要があります。
  • Duo ソフトウェア エージェントがクラウドベースの API に到達できない場合は、MFA をバイパスするか、認証に MFA が必要であることを要求できる構成設定を適用できます。
Figure 1: Duo logon prompt
図 1: Duo ログオン プロンプト

図 2 は、Duo がログオン プロセスにどのように統合されるかを説明する認証フロー図を示しています。

図 2: Duo 認証フロー
図 2: Duo 認証フロー

ボンネットの下を探しています。

対話型インストール

Windows コンピュータに Duo Authentication をインストールする場合、指定された (一意の) Duo インスタンスと RDP アプリケーションの API ホスト名、統合キー (IKey)、および秘密キーの値 (SKey) を構成する必要があります。これにより、Duo アプリケーション エージェントは正しい API ホスト名と通信し、適切なポリシーを適用できます。図 3 と図 4 は、対話型インストール プロセス中にこれらの値がどのように構成されるかを示しています。環境内でコンピューターが直接アウトバウンド インターネットにアクセスできない場合は、アウトバウンド HTTP プロキシを構成することもできます。

図 3: インストール - API エンドポイントの構成
図 3: インストール – API エンドポイントの構成
図 4: インストール - API キーの構成
図 4: インストール – API キーの構成

API ホスト名、IKey、SKey、および統合オプションは、コンピューターのレジストリに保存されます。統合オプションを更新して、コンピューターでの Duo の動作を変更することができます。たとえば、FailOpen を許可する (これについては後で説明します)、プッシュ通知を自動的に送信する、RDP ログオンのみを保護する (ローカル ログオンは保護しない) などです。 Duo エージェントのローカル インストールの場合、次のレジストリ パスを使用して、構成された設定を格納します。

HKLMSOFTWAREDuo SecurityDuoCredProv

図 5 は、適用できる統合設定の一部を示しています。重要なのは、「 Bypass Duo authentication when offline (FailOpen) 」という設定です。この設定により、コンピューターがクラウドベースの Duo API ホスト名に接続できないインターネットまたは接続の問題が発生した場合に、MFA 要件を満たさなくてもコンピューターにアクセスできます。

図 5: オフライン フェールオープンの設定
図 5: オフライン フェールオープンの設定

図 5 に示されている設定に関連付けられている既定のレジストリ キー。これらの設定は、ローカル管理者権限を持つすべてのユーザーが変更できます。

Registry Key: HKLMSOFTWAREDuo SecurityDuoCredProvFailOpen
Default Value: 1

Registry Key: HKLMSOFTWAREDuo SecurityDuoCredProvAutoPush
Default Value: 1

Registry Key: HKLMSOFTWAREDuo SecurityDuoCredProvRdpOnly
Default Value: 0

グループ ポリシーの展開と構成

GPO 構成を使用して、AD 環境の Windows コンピューターにソフトウェア (Duo Authentication エージェントを含む) をリモートでインストールできます。 GPO をカスタマイズして、ユーザー、グループ、およびコンピューター (特定の組織単位 (OU) 内に格納されているコンピューター オブジェクトを含む) の定義済みの設定とソフトウェア パッケージのインストールをターゲットにすることができます。

GPO を使用した Duo 認証エージェントのインストールの場合、Duo は 2 つの GPO を作成することをお勧めします。

  • Duo 認証エージェントをインストールして展開する 1 つの GPO
  • API ホスト名、統合キー、秘密鍵など、定義済みの統合設定を構成する 1 つの GPO。

構成手順では、統合設定の GPO 名として「Duo Windows Logon」という名前を使用します。 Duo には、前述の GPO を構成するためのポリシー テンプレートが用意されています。構成ミスを探すときは、Duo のデフォルト (推奨) テンプレートに基づいて名前が付けられた GPO を検索することを検討してください。 Duo は、次の記事「 Windows ログオン (RDP) の Duo 認証 – Active Directory グループ ポリシー」で、グループ ポリシー MSI インストーラー、テンプレート ファイル、およびドキュメントを提供します。

図 6: Duo 統合のグループ ポリシー
図 6: Duo 統合のグループ ポリシー

GPO を使用して Duo 認証アプリケーションを構成すると、ポリシーが適用されているコンピューターに追加のレジストリ キーが作成されます。

HKLMSoftwarePoliciesDuo SecurityDuoCredProv

Duo 認証アプリケーションをコンピューターに展開するために使用される GPO は、Duo の MSI インストール パッケージと MST 変換ファイル (MSI パッケージのコンテンツを変換またはカスタマイズするために使用される) の場所を参照する必要があります。環境内のコンピューター アカウントのみが必要なインストール ファイルにアクセスできるように、MSI ファイルと MST ファイルをネットワーク ファイル共有にステージングすることをお勧めします。 MST ファイルには API ホスト名、IKey および SKey の値が含まれて構成できるため、認証されたユーザー アカウントがこれらのファイルにアクセスできないようにすることをお勧めします。

セキュリティに関する考慮事項

Duo をインタラクティブにインストールすると、Duo はレジストリのアクセス許可を制限し、ローカル管理者権限を持つアカウントのみに、レジストリから SKey、IKey、またはその他の Duo 固有の構成設定を読み取るアクセス許可が割り当てられるようにします。 GPO を使用して、同様の強化手段をレジストリ キーに適用し、レジストリ キーの値が不要に読み取られるのを防ぐことができます。 Duo のドキュメント (図 7) によると、秘密鍵は機密であり、機密の資格情報と同様に扱う必要があります。承認されていない個人と共有しないでください。

図 7: 秘密鍵の推奨事項
図 7: 秘密鍵の推奨事項

既定では、新しく作成された GPO (ドメイン コントローラーのSYSVOL SMB 共有にバイナリ形式で格納されている) は、ドメイン内の認証されたすべてのユーザーが読み取ることができます。 GPO を強化して、認証されたユーザーがデュオ認証構成オプションに関連する機密構成データを読み取る機能を制限するには、「 Authenticated Users 」セキュリティ グループに割り当てられている既定の読み取りアクセス許可を GPO から削除できます ([委任] タブを使用)。 . IKey、SKey、API ホスト名および統合設定を含む GPO の場合、「 Domain Computers 」セキュリティ グループ、または Duo Authentication エージェントが展開されるターゲット コンピュータ オブジェクトを含むセキュリティ グループのいずれかに読み取りアクセス許可を設定できます。 .

グループ ポリシー ファイルは、ドメイン コントローラーのSYSVOL SMB 共有にバイナリ形式で格納されます。ポリシー ファイルは暗号化されておらず、暗号化することもできません。 Duo の推奨事項に従うと、権限の低いドメイン ユーザーは GPO を読み取ることができなくなります。 Microsoft は、機密情報をグループ ポリシー構成に保存しないことをお勧めします。コンピューターが GPO 設定を取得するには、 SYSVOL共有にアクセスできる必要があります。

Duo アプリケーション ソフトウェアの展開に使用される GPO は、必ずしも制限する必要はありません。GPO 構成自体には機密情報が含まれていないためです。このポリシーには、ネットワーク SMB ファイル共有である可能性が高い MSI インストール パッケージと MST 変換ファイルの場所が含まれています。変換ファイルには IKey、SKey、および API ホスト名が含まれており、機密であるため、MST 変換ファイルのネットワーク共有または場所は保護されている必要があり、認証されたユーザーが読み取れないようにする必要があります。

Duo の認証 API

Auth API は、デュオ認証アプリケーションが MFA 要件を適用するために使用する低レベルの REST API です。 SKey、IKey、および API ホスト名は、組織によって定義された MFA 要件を実施および検証するために特に使用されます。この API は、「PUSH」通知、SMS メッセージ経由のパスコード、またはユーザーへの電話のいずれかを送信するよう Duo エージェントに指示するためにも使用されます。また、応答を検証するためにも使用されます。 Auth API は、ユーザーが Duo に登録されているかどうかを判断するためにも使用できます。また、ユーザーの MFA 認証方法と登録ユーザーのデバイスを一覧表示できます。

Duo Authentication アプリケーションは、新規ユーザーの「インライン セルフサービス」登録をサポートしていません。 Windows エンドポイントで Duo 認証を使用するには、ユーザーがすでに Duo に存在している必要があります。部分的に登録されたユーザーは、Duo に存在するが、MFA 認証方法が関連付けられていないユーザーです。ユーザーが部分的に登録されており、Duo Authentication アプリケーションがインストールおよび構成されている Windows デバイスにログオンしようとしている場合、Auth API はユーザーの登録 URL で応答するため、ユーザーは電話、モバイルなどの MFA 認証方法を登録できます。アプリ、または TOTP/HOTP セキュリティ キー。

一般的な設定ミス

最前線での取り組みと調査の両方から、Mandiant は、Windows エンドポイントに Duo 認証アプリケーションが存在する場合に、意図しない MFA バイパスにつながる可能性がある一般的な構成ミスを観察しました。

Active Directory の構成ミス

#1) GPO パーミッション
前述のように、既定では、GPO はドメイン内の認証されたユーザー アカウントから読み取ることができます。したがって、機密情報を GPO 構成内に保存しないことをお勧めします。 Duo Authentication アプリケーションの GPO 展開および構成プロセスでは、API ホスト名、IKey、および SKey パラメーターを GPO 内に含める必要があるため、この GPO への読み取り専用アクセスが制限されていない場合、ドメイン ユーザーは次の場所から GPO 構成ファイルにアクセスできます。 SYSVOLディレクトリに移動し、API キーと API ホスト名を取得します (図 8)。

図 8: 読み取り可能なポリシーの詳細
図 8: 読み取り可能なポリシーの詳細

#2) MSI の設定ミス
Duo 認証アプリケーションの展開プロセスを自動化するために、Duo は MSI パッケージ インストーラー ファイルを提供し、Microsoft Orca テーブル エディターを使用して MST 変換ファイルを作成する方法を説明します。前述のように、MST 変換ファイルには IKey、SKey、および API ホスト名が含まれており、インストール プロセス中にレジストリ値を設定するために使用されます。 Duo の指示では、管理者は変換ファイルを作成するときに MSI ファイル自体に変更を保存してはならないことが示されています。

このアドバイスにもかかわらず、Duo Authentication アプリケーションをインストールするための MSI ファイルには、多くの場合、IKey、SKey、および API ホスト名が含まれています。図 9 は、機密性の高い Duo 構成パラメーターを含む誤って構成された MSI ファイルの例を示しています。

図 9: 誤って構成された MSI ファイルの内容
図 9: 誤って構成された MSI ファイルの内容

Duo で使用される MSI ファイルは次のように命名されており、Duo のドキュメントによると、GPO を介した展開に問題を引き起こさずに変更することはできません。

  • DuoWindowsLogon64.msi
  • DuoWindowsLogon32.msi

ソフトウェアのインストール ファイルと構成ファイルは、多くの場合、最終的に環境全体に分散する可能性があり、多くの場合、広範なアカウントがアクセスできるファイル共有に格納されます。これにより、機密データ (この場合は Duo API キーと API ホスト名) への意図しないアクセスの範囲が拡大する可能性があります。

#3) 保護されていない MST ファイル
MST 変換ファイルが適切に作成され、MSI ファイルに機密データが含まれていない場合、適切に保護されていなければ、攻撃者が MST ファイルを取得できる可能性があります。 MST ファイルを保護するための Duo の手順は次のとおりです。

「デュオの秘密鍵が漏洩するのを防ぐため、MST ファイルとの共有は、権限のないユーザー アカウントが読み取ることができないようにする必要があります。」

一般的な規則に基づいて、MST ファイルは多くの場合、セキュリティで保護されていないファイル共有に配置されます。 GPO 展開の場合、MST および MSI ファイルは通常、 SYSVOL SMB ファイル共有の「Scripts」ディレクトリに配置されるか、過度に許可されたアクセス権を持つ別の中央ソフトウェア リポジトリ ファイル共有内に配置されます。取得した場合、MST ファイルの内容は Orca または 16 進ダンプ ツールを使用して読み取ることができます (図 11)。

図 10: 安全でない MST ファイル
図 10: 安全でない MST ファイル
図 11: MST ファイルのキー
図 11: MST ファイルのキー

#4) 安全でないグループ ポリシー レジストリ キー
特権のないユーザーが SKey、Ikey、および API ホスト名を含むレジストリ キーにアクセスするのを防ぐために、Duo は、GPO を利用して Duo 認証アプリケーションをインストールするときにレジストリ キーを強化するための具体的な手順を提供しています。 Duo がログオン時に呼び出されると、実行のたびにレジストリ キーが保護されます。推奨される強化が適用されていない場合、グループ ポリシーの更新が発生すると、Duo が呼び出されるログオン要件をユーザーが完了するまで、レジストリ キーは保護されません。これにより、グループ ポリシーの更新後に、特権の低いユーザーが、機密性の高い構成情報を含むレジストリ キーを読み取ってアクセスできる可能性があるというシナリオが作成されます。

図 12 は、GPO を介したソフトウェア展開に関連付けられたレジストリ キーの既定のアクセス許可を示しています。 「 ALL APPLICATION PACKAGES 」および「 Users 」グループは、デフォルトでキーを読み取ることができます (図 12)。図 13 は、レジストリ キーが強化された後、権限の低いユーザーがレジストリ キーを読み取ることができないことを示しています。 Duo Authentication アプリケーションがローカルにインストールされている場合、インストール プロセスでレジストリ キーが自動的に保護されるため、この構成オプションは適用されません。対象の GPO レジストリ キーは、次のレジストリ パス内にあります。

HKLMSOFTWAREPoliciesDuo SecurityDuoCredProv

図 12: 安全でない GPO レジストリ キー
図 12: 安全でない GPO レジストリ キー
図 13: 保護されたレジストリ キー
図 13: 保護されたレジストリ キー

ローカル コンピューターから API キーを取得する

#1) 非管理者権限または非システム権限
攻撃者が Duo Authentication アプリケーションによって保護されたコンピューターにアクセスした場合、権限の低いユーザーであっても、API キーを抽出できる可能性があります。

前のセクション「安全でないグループ ポリシー レジストリ キー」で説明したように、レジストリ キーのアクセス許可が強化されていない場合、すべてのユーザーが構成値を読み取って取得できる可能性があります。

HKLMSOFTWAREPoliciesDuo SecurityDuoCredProv

Duo Logon MSI パッケージのローカル ファイル システムを検索すると、特に MSI パッケージが誤って変更され、キーが含まれている場合に、API キーにアクセスできるようになります。 MST 変換ファイル (または API キーを参照するテキスト ファイル) がファイル システムに存在する場合があります。ディスク上のファイルの内容で API ホスト、IKey、または SKey を検索すると、キーが特定される場合もあります。それぞれの値には、次の形式が使用されます。

ホスト

api-xxxxxxxx.duosecurity.com

IKey

DIX0XXXXXXX0XXXX0XXX

Sキー

X00XXx0xxx00XXxXX0XxXxxxXXXxXxxXXX000xX0

#2) ローカルの管理者権限またはシステム権限
脅威アクターが、Duo 認証アプリケーションで構成されたエンドポイントでローカルの管理権限またはシステム レベルの権限を取得した場合、API ホスト、IKey、または SKey の内容を含むレジストリ キーにアクセスできます。情報はレジストリ内にプレーンテキストで保存されているためです。

Windows ログオンの Duo 認証のバイパス

最初の攻撃は、「 FailOpen 」設定が有効になっている場合の Duo 認証のバイパスです。このバイパスの功績は、 n00pyによるこのブログ投稿、Bypassing Duo Two-Factor Authentication に由来します。前述のように、インターネットまたは Duo サービスへのアクセスが中断された場合に、MFA をバイパスしてコンピューターへのアクセスを許可するように Duo を構成できます。

これにより、タイムアウトが発生し、FailOpen ポリシーがトリガーされ、MFA 要件を満たさなくてもアクセスが許可されます。 Duo Auth API へのアクセス (FailOpen のトリガー) の中断をシミュレートするには、API ホスト名 (構成されている場合は、プロキシ ホスト名または IP) を取得する必要があります。これは、記事全体で説明されている以前の構成ミスのいずれかによって取得できます。その後、ローカル ホスト ファイルを変更して、API ホスト名の FQDN を解決するためのループバック アドレスを参照することができます。

図 14: シンク ホールのある Duo のホスト名とプロキシ
図 14: シンク ホールのある Duo のホスト名とプロキシ

FailOpen 」設定が有効になっておらず、Duo によって保護されていないサービスを介して攻撃者がアクセスした場合、MFA をバイパスする可能性のある複数のパスがあります。ドキュメントを読み、創造力を働かせることは、MFA を回避するのに役立ちます。 Duo RDP ガイドでは、一部の設定がどのように機能するかについて説明しています。グループ ポリシーを使用して設定を構成する場合は、ポリシー関連のレジストリ キーを変更する必要があります。

MFA 要件をバイパスするために変更できる潜在的な設定の例:

  • 無効になっている場合は、レジストリ値を「1」に設定して、デュオ認証アプリケーションの「FailOpen」設定を有効にします。
    • レジストリ キー: HKLMSOFTWAREDuo SecurityDuoCredProvFailOpen
  • 仮想マシン コンソールからインタラクティブ ログオン アクセスを利用できる場合は、レジストリ値を「1」に設定して「RdpOnly」を有効にし、ローカル ログオンでの MFA を無効にします。
    • レジストリ キー: HKLMSOFTWAREDuo SecurityDuoCredProvRdpOnly
  • UAC Elevation Protection 」を有効にし、「 Protect User elevation only保護」を有効にします。これは、レジストリ値を「1」に設定することにより、ローカルおよびRDPセッションのMFAを無効にするためです。レジストリ値を「2」に設定すると、ローカル ログオンに加えて UAC 昇格保護が有効になります。詳細については、こちらをご覧ください
    • レジストリ キー: HKLMSOFTWAREDuo SecurityDuoCredProvElevationProtectionMode
  • 構成されている場合は、プロキシ ホストまたはポートを変更して、Duo Auth API サービスへの到達時にタイムアウトが発生するようにします。
  • Duo API ホスト名をレジストリ内の任意の値に置き換えます。
    • レジストリ キー: HKLMSOFTWAREDuo SecurityDuoCredProvHost

コンピューターが強化され、すべてのローカル サービスと再構成方法がロックされている場合、FailOpen 設定が有効になっていると、ネットワーク ベースの「可用性」攻撃により、Duo が Duo API ホスト名または構成されている場合はプロキシと通信できなくなる可能性があります。

ネットワークベースの攻撃手法の 1 つは、n00py のブログ ARP スプーフィングで取り上げられています。これには、攻撃者がネットワーク上で適切な位置にいる必要があります。詳しくはブログをご覧ください。

シナリオによっては、いくつかの追加の創造性により、バイパス テクニックが可能になる場合があります。考慮すべきいくつかのシナリオを次に示します。

  • ターゲット コンピューターが仮想マシンであり、攻撃者が仮想マシンの管理プラットフォームにアクセスできる場合、Duo MFA をバイパスするための追加の方法には、次のものが含まれる可能性があります。
    • RDPOnly が有効になっている場合、仮想マシン コンソールからローカルにログインするだけでは、MFA は必要ありません。
    • ローカル仮想ネットワーク インターフェイスを無効にしたり切断したりできる場合、Duo Auth API サービスへの接続が中断され、FailOpen が有効になっている場合は MFA バイパスが可能になる可能性があります。
    • IP アドレス、ゲートウェイ、ルート、または MAC アドレスを変更して、Duo API Auth サービスへの接続を中断します。
    • ファイアウォールの構成 – Duo Auth API サービスへのアウトバウンド インターネット アクセスを制限します。
    • Windows をセーフ モードで再起動すると、Duo Authentication アプリケーション サービスが無効になります。
  • ターゲット コンピューターへの物理的なアクセスにより、Duo MFA をバイパスするための追加の方法には、次のようなものがあります。
    • RDPOnly が有効になっている場合、仮想マシン コンソールからローカルにログインするだけでは、MFA は必要ありません。
    • イーサネット接続を切断するか、Wi-Fi 接続を中断して、Duo Auth API サービスへのアクセスを妨げます。

Windows をセーフ モードで再起動すると、Duo Authentication アプリケーション サービスが無効になります。

さらに、構成された Duo ポリシーによっては、適切な資格情報セットを持つだけで MFA をバイパスできる可能性があります。例は次のとおりです。

  • ローカル管理者アカウントが Duo に登録されていないか、Duo 認証アプリケーションによって保護されるように構成されていない可能性があります。
  • Duo は、MFA をバイパスして、特定のユーザーまたはグループが「オフライン」モードでログオンできるように構成できます。
  • Duo ポリシーは、Duo に登録されていないユーザーが MFA をバイパスできるように構成できます。これは、ユーザーのパイロット グループがテストを実行できるようにするために、新しい展開をテストするときに Duo によって推奨されます。一部の組織では、ビジネスの中断を防ぐためにポリシーをこの構成のままにしておく可能性があります。

Auth API の活用

API ホスト名とキーを復元するさまざまな方法について説明したので、これらのキーを使用する方法を調べてみましょう。 Duo Auth API ドキュメントは、こちらから入手できます。

ユーザー登録ステータスの列挙

Duo preauth IP サービスの一部として、事前認証エンドポイントは、ユーザーがどこからログインを許可されているかを判断し、ユーザーが許可されている場合は、使用可能な認証方法のリストを返します。このエンドポイントは、攻撃者にとって非常に興味深いものです。エンドポイントは、ユーザー名またはユーザー ID の 1 つの引数を取ります。さまざまな攻撃シナリオで役立つ追加のパラメーターがあります。

この記事の冒頭で説明したログオン フローでは、Duo 認証アプリケーションは、認証の主要な要素である Windows 資格情報がローカル エンドポイントまたはローカル ID プロバイダー (通常は Active Directory) によって検証された後に、この API 呼び出しを実行します。コンピューターは API にクエリを実行し、利用可能な認証要素を取得して、Duo プロンプト画面のドロップダウン メニューに入力し、定義された認証方法を提示します。図 15 は、Duo に登録されており、ログオンできるユーザー ( duol ) の認証 API へのクエリを示しています。ユーザーに関連付けられている許可されたデバイスが返されます。この場合、ユーザーは Duo モバイル アプリで構成された 1 台の Android モバイル デバイスを持っていました。このデバイスでサポートされている機能は、Duo モバイル アプリからの PUSH 通知、SMS パスコード、およびモバイル OTP コードです。

図 15: 事前認証チェック
図 15: 事前認証チェック

このpreauthエンドポイントは、Duo に部分的に登録されているユーザーで Windows にログオンしようとした場合、または「 New User 」ポリシーが「 Require enrollment 」に設定されている場合に興味深い方法で動作します。部分的に登録されたユーザーとは、Duo で作成されたが、認証方法が構成されていないユーザーです。図 16 は、部分的に登録されたユーザーが Duo によって保護されているコンピューターにログオンしようとしたときに表示されるメッセージを示しています。ユーザーが登録されていないことを示すエラーが表示され、ログオン アクセスが拒否されます。 Windows エンドポイントにインストールされた Duo Authentication アプリケーションは、インライン登録をサポートしていません。ユーザーが登録するには、Duo で保護された VPN、Web アプリケーション、または管理者から電子メールで送信された登録リンクなど、別の登録方法を使用する必要があります。インライン登録がサポートされている場合、これは認証方法を追加する方法がユーザーに提示される段階になります (通常は QR コードをスキャンするか、リンクにアクセスします)。

ユーザーへの攻撃

部分的に登録されたユーザーに対してpreauth認証 API エンドポイントが照会された場合、または新規ユーザー ポリシーが「登録が必要」に設定されていてユーザーが存在しない場合、API の応答には登録 URL が含まれます。図 17 は、登録 URL を含む、部分的に登録されたユーザーの API 応答を示しています。登録 URL をコピーしてブラウザに貼り付けることで、攻撃者は部分的に登録されたユーザーのアカウントに独自の認証方法を追加できるようになりました。

注: Duo でユーザーが作成されてからの経過時間やその他の要因によっては、登録 URL が期限切れになる場合があります。

図 17: 登録ステータスの列挙
図 17: 登録ステータスの列挙

攻撃者は、アカウントの資格情報を持っている場合、ユーザーとして認証できるようになり、新しく登録された MFA メソッドを利用して MFA 認証プロセスを完了できます。

preauth API エンドポイントは、有効な API キーを持つ攻撃者が Duo ユーザーの登録ステータスを列挙し、「登録が必要」オプション (攻撃者が制御する MFA 認証基準を有効なアカウントに関連付けることができる場合) でアカウントを識別する手段も提供します。この攻撃パスは、Active Directory からのユーザーのリストをターゲットにするなど、ユーザーのリストがわかっている場合に、より実行可能になります。

未登録ユーザーと呼ばれる、Duo に存在しないユーザーはどうなりますか? 「新規ユーザー」ポリシーが「登録が必要」に設定されている場合、部分的に登録されたユーザーを登録し、認証方法を追加できることがわかりました。未登録ユーザーとさまざまなポリシー構成を見てみましょう。

前述のように、Duo ポリシーを構成して、Duo に存在しないユーザーがコンピューターにログオンできるようにすることができます。ユーザーが Duo に存在しない場合、ユーザーのログオンを拒否するようにポリシーを構成することもできます。これにより、 preauthエンドポイントを使用して、MFA 要件を満たさなくてもログオンを許可される可能性のあるユーザーを列挙できます。ユーザーがログオンを許可されている場合、結果の値には「 allow 」が含まれ、ステータス メッセージには「 Allowing unknown userしています」と表示されます。これは、新規ユーザー ポリシーが「2FA なしのアクセスを許可する」に設定されており、Duo に存在しないユーザーのログオンを許可していることを示しています。 Duo ポリシーが不明なユーザーのログオンを許可しないように構成されている場合、結果の値は「 deny 」になり、ステータス メッセージは他のポリシー構成の詳細に応じて異なります。図 19 と図 20 は、不明なユーザーを許可するポリシーと不明なユーザーを拒否するポリシーの API クエリ応答をそれぞれ示しています。

図 19: アクセス許可
図 19: アクセス許可
図 20: アクセスが拒否されました
図 20: アクセスが拒否されました

preauthエンドポイントとユーザーのリストを要約すると、攻撃者は有効なユーザーの登録ステータスを列挙できます。部分的に登録されたユーザーの場合、および「新規ユーザー」ポリシーが「登録が必要」に設定されている場合、攻撃者が自分のデバイスで MFA に登録できる登録 URL が取得される可能性があります。 MFA に登録できるユーザー アカウントは、AD 攻撃、パスワード ベースの攻撃、およびソーシャル エンジニアリングの重要な標的になります。説明されている攻撃の影響は、大規模な環境で広範囲に及ぶ可能性があります。

事前preauth API エンドポイントを使用した追加の列挙手法がありますが、使用例は限定されており、通常は高度に標的を絞った攻撃用に予約されています。 Duo のきめ細かなポリシーと AD のグループ ポリシーは、さまざまなユーザー、グループ、およびコンピューターが効果的にさまざまな MFA ポリシーと要件を持つことができることを意味します。これらの追加の手法には、特定の IP アドレス、特定のデバイスからのログオンのみを許可すること、およびポリシーで指定された時間、信頼できるデバイスで MFA をバイパスするようにデバイスを「記憶」できる場合が含まれます。

Auth API でパニックを引き起こす

Auth API は、Windows コンピュータが Duo と通信してパスコード、プッシュ通知、通話などを送信するために使用する API です。 API にクエリを実行できると、組織内の分散したデバイスに大量のプッシュ、SMS、または電話を頻繁に送信するなど、パニックを引き起こす可能性がある状況につながる可能性もあります。多数のユーザーが一方的なパスコードまたは Duo からのプッシュを受信した場合、ユーザーは自分のパスワードが侵害されたと考える可能性があります。役員や IT スタッフを含むすべての担当者が Duo 通知を受け取り、資格情報が侵害されたと考えるシナリオを想像してみてください。この API は、モバイル アプリやバイパス コードなどからのパスコードの検証にも使用されます。

理論的には、ユーザー全体にパスコードをスプレーしたり、ブルート フォース パスコードを使用したりすることができますが、この攻撃が実行可能になるかなり前に、ロックアウトの制限に達してしまいます。デフォルトでは、ログオン試行が 10 回失敗すると、Duo は Duo ユーザーをロックアウトします。ロックされたユーザーは、デフォルトでは再アクティブ化されません。ロックアウト手段を決定するポリシーは変更可能であり、個々の実装では多かれ少なかれ制限的である可能性があります。悪意のあるアクターは、組織内の多数のユーザーをロックアウトし、MFA を使用できないようにする可能性があります。

非 Windows および AD に関する考慮事項

Windows コンピューターに加えて、Duo はこのブログで説明されている Auth API を使用して、他のアプリケーションやサービスと統合します。例としては、Confluence、Jira、WordPress サイト、MacOS、Linux ホスト、OpenVPN、Citrix、Splunk などがあります。 API ホスト、IKey、および SKey 構成は、Windows ベースのエンドポイントおよび GPO 構成設定以外の他のアプリケーションおよび場所に存在できます。その他の場所の例は次のとおりです。

  • Linux PAM 認証:
    • /etc/duo/pam_duo.conf
    • /etc/security/pam_duo.conf
  • 合流点とジラ:
    • $CONFLUENCE_DIR/confluence/WEB-INF/web.xml
    • $JIRA_DIR/atlassian-jira/WEB-INF/web.xml
    • Confluence と Jira はデフォルトで /opt/atlassian/<jira|confluence> にあります。
  • マックOS:
    • /private/var/root/Library/Preferences/com.duosecurity.macrogon.plist
  • OpenVPN:
    • /etc/openvpn/openvpn.conf
    • /etc/openvpn/server.conf
      • plugin /opt/duo/duo_openvpn.so IKEY SKEY HOST
  • 一般的な Web 統合 (カスタム アプリ用):
    • https://duo.com/docs/duoweb

推奨事項

Duo では、追加の強化について次のガイドラインを提供しています。

Mandiant が実施した調査と Duo ドキュメントのレビューを通じて、Duo を実装する際に次のコントロールとプロセスを検討することをお勧めします。

  • Duo Authentication アプリケーションがインストールされているコンピューターでローカル管理アクセスを制限します。ローカルの管理権限またはシステム レベルの権限を持つユーザーは、ローカル レジストリから API キーと構成情報を取得できます。潜在的なバイパス方法のほとんどは、Duo API 構成情報 (URL/キー) にアクセスするか、エンドポイントを変更する機能に依存しています。これには、ローカルの管理者権限が必要です。
  • FailOpen オフライン モードで Offline Access メソッドを構成します (このブログで説明されているようにバイパスできます)。オフライン アクセスにより、エンドポイントが Duo のクラウド API サービスに接続できない場合でも、ユーザーは Windows エンドポイントに安全にログオンできます。オフライン アクセスに MFA を適用する方法には、iOS / Android の Duo Mobile または U2F セキュリティ キーのいずれかが含まれます。詳細については、 https://duo.com/docs/rdp#offline-accessを参照してください。
  • Duo 管理パネルにアクセスするための強力な MFA メソッドを必要とする一意の資格情報を適用します。
  • Duo ポリシーの構成をテストおよび検証して、意図しないバイパスや構成ミスを回避します。
  • Duo の「新しいユーザー ポリシー」内で、「 Allow access without 2FA 」設定よりも「アクセスをDeny access 」設定を活用します。 「 Require enrollment 」設定は MFA バイパスを防ぐことができますが、API キーを取得した攻撃者が未登録または部分的に登録されたユーザーを、攻撃者が制御する MFA デバイスに登録できるようにすることもできます。
  • 「認証ポリシー」の「 Enforce 2FAを強制する」設定は、コンピューターを保護する唯一のオプションです。 「 Bypass 」は、すべてのユーザーが MFA をバイパスすることを許可し、「 Deny access 」は、MFA の履行に関係なく、すべてのアクセスを拒否します。
  • Duo 管理パネルで保留中の登録を確認し、まだ保留中またはオープン状態にあるユーザーを取り消すか、手動で登録します。
  • Duo を定期的に監査して、すべてのユーザーが登録されていること、MFA バイパス条件が関連付けられていないこと、構成されているすべてのポリシーが要件を満たしていることを確認します。
  • 異なる MFA 認証設定と要件を必要とするコンピューターの場合は、GPO 構成を活用して、エンドポイントのセキュリティ要件に基づいて適用を対象にします。これにより、管理された環境内の他のシステムと比較して、機密性の高いシステムをより厳密に制御できます。
  • API Host、SKey、または IKey パラメータをインストール MSI に配置しないでください。変換 MST ファイルを作成し、ターゲット コンピューターのみがアクセスできる安全なネットワークの場所に配置します。認証されたユーザーには、ファイル共有への「読み取り」アクセスを許可しないでください。
  • GPO とファイル共有を定期的にスキャンして、公開されている可能性のある Duo 構成キーとパラメーターを探します。
  • Duo 構成設定を定義する GPO が、認証されたドメイン ユーザーに読み取られないようにします。 GPO 設定を読み取ることができるのは、ターゲット コンピューターのアカウントだけです。 Duo 構成パラメーターを含む GPO の編集アクセス許可は、ドメイン内の指定された特権アカウントのみに制限する必要があります。
  • Duo の構成と展開の GPO に関連付けられているレジストリ キーが、低い特権アクセスに対して強化されていることを確認します。詳細については、 https://duo.com/docs/winlogon-gpoを参照してください。
  • 組織の Duo テナントに関連付けられた秘密鍵の侵害が疑われる場合、修復プレイブックには、Duo 管理パネル内で秘密鍵をリセットすること、および新しく構成された鍵を利用するように範囲内のデバイスとアプリケーションを再構成することを含める必要があります。
  • セキュリティの高い環境では、MFA コンプライアンスの追加チェックを要求するように構成できる、より厳格な Duo ポリシーを検討してください。
    • ユーザーの場所
    • デバイスの正常性
    • オペレーティング·システム
    • ブラウザ
    • ブラウザプラグイン
    • 承認済みネットワーク
    • 認証方法
    • モバイル デバイスのセキュリティ

結論

ID、資産、アプリケーション、およびデータを保護するには、MFA の適用が不可欠です。組織の攻撃面、潜在的な構成ミス、および MFA に関連するバイパス方法を効果的に理解するには、テクノロジを調べる必要があります。これを行うことで、組織は適切な防御とガードレールを調整して、MFA 実施テクノロジを確実に保護し、強化することができます。

参照: https://www.mandiant.com/resources/blog/abusing-duo-authentication-misconfigurations

Comments

Copied title and URL