Az - Illicit Consent Grant
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azureアプリケーションは、ユーザーデータ(基本情報、ドキュメントへのアクセス、メール送信など)にアクセスするための権限を要求します。
許可されると、通常のユーザーは**「低影響」権限**のみについて同意を与えることができます。他のすべての場合には、管理者の同意が必要です。
GA
、ApplicationAdministrator
、CloudApplication
Administrator
、および`アプリケーションに権限を付与する権限を含むカスタムロールがテナント全体の同意を提供できます。
管理者の同意を必要としない権限のみが低影響として分類されます。これらは、基本的なサインインに必要な権限であり、openid、profile、email、User.Read、offline_accessです。もし組織がすべてのアプリに対するユーザーの同意を許可している場合、従業員はアプリに対して上記の情報を自分のプロフィールから読み取るための同意を与えることができます。
したがって、攻撃者は悪意のあるアプリを準備し、フィッシングを通じてユーザーにアプリを受け入れさせ、データを盗むことができます。
未認証: 外部アカウントからUser.Read
やUser.ReadBasic.All
の権限を持つアプリケーションを作成し、ユーザーをフィッシングすると、ディレクトリ情報にアクセスできるようになります。
これはフィッシングされたユーザーが外部環境からOAuthアプリを受け入れることができる必要があります!
認証済み: 十分な権限を持つプリンシパルを侵害した後、アカウント内にアプリケーションを作成し、特権OAuth権限を受け入れることができる特権ユーザーをフィッシングします。
この場合、すでにディレクトリの情報にアクセスできるため、User.ReadBasic.All
の権限はもはや興味深くありません。
あなたは管理者が付与する必要がある権限に興味がある可能性が高いです。なぜなら、通常のユーザーはOAuthアプリに権限を与えることができないからです。そのため、そのユーザーのみをフィッシングする必要があります(この特権を付与する役割/権限については後で詳しく説明します)。
次のPowerShellコマンドは、Azure Active Directory(Azure AD)におけるユーザーのアプリケーションへの同意設定を確認するために使用されます:
ユーザーの同意を無効にする: この設定は、ユーザーがアプリケーションに対して権限を付与することを禁止します。アプリケーションへのユーザーの同意は許可されていません。
ユーザーは、確認済みのパブリッシャーまたは自組織のアプリに対してのみ、選択した権限に同意できます: この設定は、すべてのユーザーが確認済みのパブリッシャーによって公開されたアプリケーションおよび自組織のテナントに登録されたアプリケーションにのみ同意できることを許可します。特定の権限に対してのみ同意を許可することで、制御の層を追加します。
ユーザーはすべてのアプリに同意できます: この設定はより許可的であり、すべてのユーザーがアプリケーションに対して任意の権限に同意できることを許可します。ただし、その権限が管理者の同意を必要としない限りです。
カスタムアプリ同意ポリシー: この設定は、特定の組織の要件に合わせて調整できるカスタムポリシーが存在することを示し、アプリのパブリッシャー、アプリが要求する権限、およびその他の要因に基づく制限の組み合わせを含む場合があります。
不正同意付与攻撃では、攻撃者がエンドユーザーを騙して、Azureに登録された悪意のあるアプリケーションに権限を付与させます。これは、アプリケーションを正当なものに見せかけ、被害者が知らずに「受け入れる」ボタンをクリックするように仕向けることで行われます。その結果、Azure ADは攻撃者のサイトにトークンを発行し、組織アカウントを必要とせずに被害者のデータにアクセスし、操作することを可能にします。たとえば、メールの読み取りや送信、ファイルへのアクセスなどです。
攻撃は、一般的な企業をターゲットにしたいくつかのステップを含みます。以下はその展開の一例です:
ドメイン登録とアプリケーションホスティング: 攻撃者は、信頼できるサイトに似たドメインを登録します。たとえば、「safedomainlogin.com」です。このドメインの下に、認証コードをキャプチャし、アクセストークンを要求するために設計されたアプリケーションをホストするサブドメイン(例:「companyname.safedomainlogin.com」)を作成します。
Azure ADでのアプリケーション登録: 攻撃者は、ターゲット企業の名前を付けて、正当なものに見えるようにMulti-Tenant Applicationを自分のAzure ADテナントに登録します。悪意のあるアプリケーションをホストするサブドメインを指すように、アプリケーションのリダイレクトURLを設定します。
権限の設定: 攻撃者は、アプリケーションにさまざまなAPI権限(例:Mail.Read
、Notes.Read.All
、Files.ReadWrite.All
、User.ReadBasic.All
、User.Read
)を設定します。これらの権限は、ユーザーによって付与されると、攻撃者がユーザーの代理で機密情報を抽出できるようになります。
悪意のあるリンクの配布: 攻撃者は、悪意のあるアプリケーションのクライアントIDを含むリンクを作成し、ターゲットユーザーと共有して同意を得るように騙します。
攻撃は、365-Stealerのようなツールを使用して促進できます。
攻撃者が被害者組織のユーザーに対して何らかのレベルのアクセスを持っている場合、組織のポリシーがそのユーザーにアプリを受け入れることを許可しているかどうかを確認することがあります:
攻撃を実行するために、攻撃者はAzureテナントに新しいアプリを作成する必要があります(アプリ登録内)、権限が設定されていること。
User.ReadBasic.All
はMicrosoft Graph
のDelegated permissions
内にあります。(アプリケーション権限は常に追加の承認が必要です)。
User.ReadBasic.All
は、付与されると組織内のすべてのユーザーの情報を読み取ることを許可する権限です。
GA
、ApplicationAdministrator
、CloudApplication
Administrator
、およびアプリケーションに権限を付与する権限を含むカスタムロール
のみがテナント全体の同意を提供できることを覚えておいてください。したがって、管理者の同意を必要とするアプリを承認させたい場合は、これらの役割のいずれかを持つユーザーをフィッシングする必要があります。
CLIを使用してアプリを作成することもできます:
https://www.alteredsecurity.com/post/introduction-to-365-stealerを確認して、設定方法を学んでください。
取得したアクセストークンは、スコープがUser.Read
とUser.ReadBasic.All
のグラフエンドポイント用になります(要求された権限)。他のアクションを実行することはできません(ただし、これらは組織内のすべてのユーザーに関する情報をダウンロードするには十分です)。
このツールを使用してこの攻撃を実行することもできます。
ユーザーにアクセスできるようになったら、機密文書を盗んだり、バックドア付きの文書ファイルをアップロードしたりすることができます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)