不正な同意許可の検出と修復
ヒント
Microsoft Defender for Office 365プラン2の機能を無料で試すことができることをご存知でしたか? Microsoft Defender ポータル試用版ハブで、90 日間の Defender for Office 365 試用版を使用します。 「Microsoft Defender for Office 365を試す」で、誰がサインアップして試用版の条件を利用できるかについて説明します。
概要 Microsoft 365 での不正な同意許可攻撃を認識して修復する方法について説明します。
Microsoft 365 での不正な同意付与攻撃とは
不正な同意付与攻撃では、攻撃者は、連絡先情報、電子メール、ドキュメントなどのデータへのアクセスを要求する登録済みアプリケーションをMicrosoft Entra IDに作成します。 その後、攻撃者はエンド ユーザーをだまして、フィッシング攻撃を通じて、または信頼できる Web サイトに不正なコードを挿入することによって、そのアプリケーションにデータへのアクセスに同意を与えます。 不正なアプリケーションに同意が付与されると、組織のアカウントを必要とせずに、データにアカウント レベルでアクセスできるようになります。 通常の修復手順 (パスワードのリセットや多要素認証 (MFA) の要求など) は、これらのアプリがorganizationの外部にあるため、この種類の攻撃には有効ではありません。
これらの攻撃では、情報を呼び出すエンティティが人間ではなく自動化であると仮定する相互作用モデルが使用されます。
重要
現在、アプリからの不正な同意許可に関する問題が発生していると思われますか? Microsoft Defender for Cloud Appsには、OAuth アプリを検出、調査、修復するためのツールがあります。 このDefender for Cloud Apps記事には、危険な OAuth アプリの調査方法について説明するチュートリアルがあります。 また、OAuth アプリ ポリシーを設定して、アプリが要求したアクセス許可を調査し、ユーザーがこれらのアプリを承認し、これらのアクセス許可要求を広く承認または禁止することもできます。
Microsoft 365 での不正な同意付与攻撃の外観
この攻撃の兆候 (IOC) とも呼ばれる兆候を見つけるには、 監査ログ を検索する必要があります。 多くのアプリケーションがMicrosoft Entra IDに登録され、大規模なユーザー ベースを持つ組織の場合は、毎週組織の同意許可を確認する必要があります。
この攻撃の兆候を見つけるための手順
https://security.microsoft.comのMicrosoft Defender ポータルで、[監査] を選択します。 または、[監査] ページに直接移動するには、https://security.microsoft.com/auditlogsearch を使用します。
[ 監査 ] ページで、[ 検索 ] タブが選択されていることを確認し、次の設定を構成します。
- 日付と時刻の範囲
- アクティビティ: [すべてのアクティビティの結果を表示する ] が選択されていることを確認します。
完了したら、[検索] を選択 します。
[ アクティビティ ] 列を選択して結果を並べ替え、[ アプリケーションへの同意] を探します。
一覧からエントリを選択すると、アクティビティの詳細が表示されます。 IsAdminConsent が True に設定されているかどうかを確認します。
注:
イベントが発生した後、対応する監査ログ エントリが検索結果に表示されるまでに最大 30 分から 24 時間かかることがあります。
監査レコードが監査ログに保持され、検索可能な期間は、Microsoft 365 サブスクリプションによって異なります。 具体的には、特定のユーザーに割り当てられたライセンス。 詳細については、「 監査ログ」を参照してください。
値 True は、グローバル管理者アクセス権を持つユーザーがデータへの広範なアクセス権を付与した可能性があることを示します。 この値が予期しない場合は、 攻撃を確認する手順を実行します。
攻撃を確認する方法
以前に一覧表示された IOC のインスタンスが 1 つ以上ある場合は、攻撃が発生したことを肯定的に確認するために、さらに調査を行う必要があります。 次の 3 つの方法のいずれかを使用して、攻撃を確認できます。
- Microsoft Entra 管理センターを使用してアプリケーションとそのアクセス許可をインベントリします。 この方法は完全ですが、一度にチェックできるのは 1 人のユーザーのみです。 多くのユーザーがチェックする場合、この方法は非常に時間がかかる場合があります。
- PowerShell を使用してアプリケーションとそのアクセス許可をインベントリします。 このメソッドは最も速く、最も多くの方法であり、オーバーヘッドの量が最も少なくなります。
- ユーザーにアプリとアクセス許可を個別にチェックさせ、その結果を管理者に報告して修復します。
organizationにアクセスできるインベントリ アプリ
ユーザーのアプリをインベントリするには、次のオプションがあります。
- Microsoft Entra 管理センター。
- PowerShell。
- ユーザーに独自のアプリケーション アクセス権を個別に列挙させる。
Microsoft Entra 管理センターを使用する手順
Microsoft Entra 管理センターを使用して、個々のユーザーがアクセス許可を付与したアプリケーションを検索できます。
- https://entra.microsoft.comでMicrosoft Entra 管理センターを開き、[Id>Users>すべてのユーザー] に移動します。 または、 ユーザー>すべてのユーザーに直接移動するには、 https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserManagementMenuBlade/~/AllUsers/menuId/を使用します。
- [ 表示名 ] の値をクリックして、確認するユーザーを見つけて選択します。
- 開いたユーザーの詳細ページで、[アプリケーション] を選択 します。
これらの手順では、ユーザーに割り当てられているアプリと、アプリケーションが持つアクセス許可を示します。
ユーザーがアプリケーション へのアクセスを列挙するための手順
ユーザーに https://myapps.microsoft.com に移動し、そこで独自のアプリケーション アクセス権を確認してもらいます。 アクセス権を持つすべてのアプリを表示し、それらに関する詳細 (アクセス範囲を含む) を表示し、疑わしいアプリまたは不正なアプリに対する特権を取り消すことができる必要があります。
PowerShell の手順
不正な同意許可の攻撃を確認する最も簡単な方法は、テナント内のすべてのユーザーのすべての OAuth 同意許可と OAuth アプリを 1 つの .csv ファイルにダンプする Get-AzureADPSPermissions.ps1 スクリプトを実行することです。
前提条件
- Microsoft Graph PowerShell SDK がインストールされています。
- スクリプトが実行されるorganizationのグローバル管理者アクセス許可。
- スクリプトを実行するコンピューターに対するローカル管理者のアクセス許可。
重要
管理者アカウントで多要素認証を必要とすることを 強くお勧めします 。 このスクリプトでは、MFA 認証がサポートされています。
Microsoft では、アクセス許可が可能な限りで少ないロールを使用することをお勧めします。 アクセス許可の低いアカウントを使用すると、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急時に限定する必要があります。
ローカル管理者権限でスクリプトを実行するコンピューターにサインインします。
GitHub からGet-AzureADPSPermissions.ps1 スクリプトをダウンロードまたはコピーして、簡単に見つけて覚えやすいフォルダーにコピーします。 このフォルダーは、"permissions.csv" 出力ファイルが書き込まれる必要がある場所でもあります。
スクリプトを保存したフォルダーで管理者特権の PowerShell セッションを管理者として開きます。
Connect-MgGraph コマンドレットを使用してディレクトリに接続します。
次の PowerShell コマンドを実行します。
.\Get-AzureADPSPermissions.ps1 | Export-csv -Path "Permissions.csv" -NoTypeInformation
スクリプトは、Permissions.csv という名前の 1 つのファイルを生成します。 不正なアプリケーションアクセス許可付与を探すには、次の手順に従います。
ConsentType 列 (列 G) で、値 "AllPrinciples" を検索します。AllPrincipals アクセス許可を使用すると、クライアント アプリケーションはテナント内のすべてのユーザーのコンテンツにアクセスできます。 ネイティブ Microsoft 365 アプリケーションが正しく動作するには、このアクセス許可が必要です。 このアクセス許可を持つ Microsoft 以外のアプリケーションはすべて慎重に確認する必要があります。
[アクセス許可] 列 (列 F) で、委任された各アプリケーションがコンテンツに対して持つアクセス許可を確認します。 "読み取り" アクセス許可と "書き込み" アクセス許可または "すべて" アクセス許可を探し、適切でない可能性があるため、これらのアクセス許可を慎重に確認してください。
同意が付与されている特定のユーザーを確認します。 高プロファイルまたは高価値のユーザーに不適切な同意が付与されている場合は、さらに調査する必要があります。
[ClientDisplayName] 列 (列 C) で、疑わしいと思われるアプリを探します。 スペルミスのある名前、スーパーブランド名、またはハッカーサウンドの名前を持つアプリは慎重に確認する必要があります。
攻撃の範囲を特定する
アプリケーション アクセスのインベントリ作成が完了したら、 監査ログ を確認して、侵害の完全な範囲を特定します。 影響を受けるユーザー、不正なアプリケーションがorganizationにアクセスできる期間、アプリに与えたアクセス許可を検索します。 監査ログは、Microsoft Defender ポータルで検索できます。
重要
この情報を取得するには、攻撃前に管理者とユーザーのメールボックス監査とアクティビティ監査を有効にする必要があります。
不正な同意付与攻撃を停止して修復する方法
不正なアクセス許可を持つアプリケーションを特定した後、そのアクセスを削除するには、いくつかの方法があります。
次の手順を実行して、Microsoft Entra 管理センターでアプリケーションのアクセス許可を取り消すことができます。
- https://entra.microsoft.comでMicrosoft Entra 管理センターを開き、[Id>Users>すべてのユーザー] に移動します。 または、 ユーザー>すべてのユーザーに直接移動するには、 https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserManagementMenuBlade/~/AllUsers/menuId/を使用します。
- [表示名] の値をクリックして、影響を受けるユーザーを見つけて選択します。
- 開いたユーザーの詳細ページで、[アプリケーション] を選択 します。
- [アプリケーション] ページ で 、[ 名前 ] の値をクリックして、不正なアプリケーションを選択します。
- 開いた [ 割り当ての詳細 ] ページで、[削除] を選択 します。
PowerShell で OAuth 同意許可を取り消すには、「Remove-MgOauth2PermissionGrant」の手順に従います。
PowerShell でサービス アプリ ロールの割り当てを取り消すには、「 Remove-MgServicePrincipalAppRoleAssignment」の手順に従います。
影響を受けるアカウントのサインインを無効にできます。これにより、アプリによるアカウント内のデータへのアクセスが無効になります。 このアクションはユーザーの生産性には適していませんが、攻撃の結果をすばやく制限する短期的な修復になる可能性があります。
organizationで統合アプリケーションをオフにすることができます。 このアクションは劇的です。 悪意のあるアプリへのアクセス権をユーザーが誤って付与するのを防ぎますが、すべてのユーザーがアプリケーションに同意を付与することもできなくなります。 このアクションは、サード パーティ製アプリケーションでユーザーの生産性を著しく損なうため、お勧めしません。 統合アプリのオンとオフの切り替えの手順に従って 、統合アプリをオフにすることができます。
関連項目
- エンタープライズ アプリケーションに記載されているアプリケーションは、 データにアクセスできる予期しないアプリケーションがあることを認識した後に実行する可能性のあるさまざまなアクションを管理者に説明します。
- クイック スタート: 同意とアクセス許可の概要をMicrosoft ID プラットフォームにアプリケーションを登録します。
- トークンの有効期間ポリシーを構成すると、 同意に関連するさまざまな記事へのリンクが提供されます。
- Microsoft Entra IDのアプリケーション プリンシパル オブジェクトとサービス プリンシパル オブジェクトは、アプリケーション モデルの中核となるアプリケーション プリンシパル オブジェクトとサービス プリンシパル オブジェクトの概要を提供します。
- アプリケーションへのアクセスの管理 は、管理者がアプリへのユーザー アクセスを管理するために必要な機能の概要です。