Az - Conditional Access Policies / MFA Bypass

Support HackTricks

基本情報

Azure Conditional Accessポリシーは、特定の条件に基づいてAzureサービスおよびアプリケーションへのアクセス制御を強制するためにMicrosoft Azureで設定されたルールです。これらのポリシーは、適切な状況下で適切なアクセス制御を適用することにより、組織がリソースを保護するのに役立ちます。 Conditional accessポリシーは基本的に誰が何にどこからどのようにアクセスできるかを定義します。

いくつかの例を挙げます:

  1. サインインリスクポリシー:このポリシーは、サインインリスクが検出された場合に多要素認証(MFA)を要求するように設定できます。たとえば、ユーザーのログイン行動が通常のパターンと異なる場合、たとえば異なる国からのログインなど、システムは追加の認証を促すことができます。

  2. デバイスコンプライアンスポリシー:このポリシーは、組織のセキュリティ基準に準拠しているデバイスのみがAzureサービスにアクセスできるように制限できます。たとえば、最新のウイルス対策ソフトウェアがインストールされているデバイスや特定のオペレーティングシステムバージョンを実行しているデバイスからのみアクセスを許可することができます。

Conditional Accessポリシーのバイパス

Conditional accessポリシーが簡単に改ざんできる情報をチェックしている可能性があり、ポリシーのバイパスが可能です。たとえば、ポリシーがMFAを設定している場合、攻撃者はそれをバイパスできるでしょう。

デバイスプラットフォーム - デバイス条件

デバイスプラットフォーム(Android、iOS、Windows、macOS)に基づいて条件を設定することが可能ですが、これはユーザーエージェントに基づいているため、バイパスは非常に簡単です。すべてのオプションでMFAを強制しても、認識されないユーザーエージェントを使用すれば、MFAをバイパスできます。

ロケーション:国、IP範囲 - デバイス条件

もちろん、これが条件付きポリシーに設定されている場合、攻撃者は許可された国VPNを使用するか、許可されたIPアドレスからアクセスする方法を見つけてこれらの条件をバイパスすることができます。

Office365クライアントアプリ

クライアントがブラウザからOffice 365アプリにアクセスする場合、MFAが必要であることを示すことができます:

これをバイパスするために、デスクトップアプリケーション(以下の例のMicrosoft Teamsなど)からアプリにログインするふりをすることが可能で、これにより保護をバイパスできます:

roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokrns-stdout

<token>

Microsoft Teamsアプリには多くの権限があるため、そのアクセスを利用することができます。

事前に定義されたOffice365権限を持つより多くの公開アプリケーションのI**Dをroadtoolsのデータベースで見つけることができます:

SELECT appId, displayName FROM ApplicationRefs WHERE publicCLient = 1 ORDER BY displayName ASC

この攻撃は特に興味深いです。なぜなら、デフォルトではパブリックなOffice365アプリケーションがいくつかのデータにアクセスする権限を持つからです。

その他のアプリ

デフォルトでは、ユーザーが作成した他のアプリは権限を持たず、プライベートである可能性があります。 しかし、ユーザーはパブリックアプリを作成し、いくつかの権限を付与することもできます。

ユーザーがブラウザを使用しているときにアプリケーションにアクセスするためにMFAを要求するポリシーが設定されている潜在的なシナリオでは(おそらくそれがウェブアプリケーションであり、唯一の方法であるため)、プロキシアプリケーション -ユーザーの代理で他のアプリと対話することを許可されたアプリ- がある場合、ユーザーはプロキシアプリケーションにログインし、その後このプロキシアプリケーションを通じて最初にMFAで保護されたアプリにログインすることができます。

Invoke-MFASweepdonkeytokenの技術を確認してください。

その他のAz MFAバイパス

着信音

Azure MFAのオプションの一つは、設定された電話番号に電話を受け取ることで、ユーザーに**#の文字を送信するように求められます**。

文字は単なるトーンであるため、攻撃者は電話番号のボイスメールメッセージを妥協し、メッセージとして**#のトーンを設定し、その後、MFAを要求する際に被害者の電話が通話中であることを確認**することで、Azureの電話がボイスメールにリダイレクトされるようにします。

準拠デバイス

ポリシーはしばしば準拠デバイスまたはMFAを要求するため、攻撃者は準拠デバイスを登録し、PRTトークンを取得し、この方法でMFAをバイパスすることができます。

まず、Intuneに準拠デバイスを登録し、その後PRTを取得します:

$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials

$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

以下のページでこの種の攻撃に関する詳細情報を見つけてください:

ツール

すべてのポリシーを取得する

roadrecon plugin policies

MFASweepは、提供された資格情報を使用してさまざまなMicrosoftサービスにログインし、MFAが有効かどうかを特定しようとするPowerShellスクリプトです。条件付きアクセス ポリシーやその他の多要素認証設定がどのように構成されているかによって、一部のプロトコルは単一要素のままになる可能性があります。また、ADFS構成の追加チェックがあり、検出された場合はオンプレミスのADFSサーバーにログインを試みることができます。

Invoke-MFASweep -Username <username> -Password <pass>

Donkey tokenは、Conditional Access Policiesを検証する必要があるセキュリティコンサルタントや、2FAが有効なMicrosoftポータルのテストを行うための機能のセットです。

Import-Module 'C:\Users\Administrador\Desktop\Azure\Modulos ps1\donkeytoken' -Force

各ポータルをテストして、MFAなしでログインできるか確認します:

Test-MFA -credential $cred -Verbose -Debug -InformationAction Continue

Azure ポータル制約されていないため、前回の実行で検出された任意のサービスにアクセスするためにポータルエンドポイントからトークンを収集することが可能です。この場合、Sharepointが特定され、アクセスするためのトークンが要求されます:

$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token

トークンが Sites.Read.All (Sharepoint から) の権限を持っていると仮定すると、MFA のためにウェブから Sharepoint にアクセスできなくても、生成されたトークンを使用してファイルにアクセスすることが可能です:

$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl

参考文献

HackTricksをサポートする

Last updated