次の方法で共有


Defender for Cloud Appsで OAuth アプリケーション攻撃パスを調査する (プレビュー)

Microsoft セキュリティ露出管理は、会社の攻撃面と露出リスクを効果的に管理するのに役立ちます。 資産と手法を組み合わせることで、攻撃パスは、攻撃者がorganization内のエントリ ポイントから重要な資産に移動するために使用できるエンドツーエンドのパスを示しています。 Microsoft Defender for Cloud Apps、OAuth アプリケーションを使用して、Microsoft Teams、SharePoint、Outlook などのビジネスクリティカルなアプリケーションの機密データにアクセスする攻撃者の増加を観察しました。 調査と軽減をサポートするために、これらのアプリケーションは、Microsoft セキュリティ露出管理の攻撃パスと攻撃表面マップ ビューに統合されています。

前提条件

Exposure Management の OAuth アプリケーション攻撃パス機能の使用を開始するには、次の要件を満たしていることを確認します。

  • アプリ ガバナンスが有効になっているMicrosoft Defender for Cloud Apps ライセンス。

  • Microsoft 365 アプリ コネクタをアクティブにする必要があります。 接続の詳細と、セキュリティに関する推奨事項を提供するアプリ コネクタについては、「アプリを接続して、Microsoft Defender for Cloud Appsで可視性と制御を取得する」を参照してください。

  • 省略可能: 攻撃パス データへのフル アクセスを取得するには、E5 セキュリティ ライセンス、Defender for Endpoint、または Defender for Identity ライセンスを持つことをお勧めします。

必要な役割と権限

すべての露出管理エクスペリエンスにアクセスするには、統合ロールベースのアクセス制御 (RBAC) ロールまたは Entra ID ロールが必要です。 必要なものは 1 つだけです。

  • 露出管理 (読み取り) (統合 RBAC)

または、次のいずれかの Entra ID ロールを使用できます。

アクセス許可 アクション
グローバル 管理 (読み取りと書き込みのアクセス許可)
セキュリティ 管理 (読み取りと書き込みのアクセス許可)
セキュリティ オペレーター (読み取りアクセス許可と制限付き書き込みアクセス許可)
グローバル リーダー (読み取りアクセス許可)
セキュリティ閲覧者 (読み取りアクセス許可)

注:

現在、商用クラウド環境でのみ使用できます。 Microsoft セキュリティ露出管理データと機能は、現在、米国政府クラウド (GCC、GCC High、DoD、China Gov) では使用できません。

重要な資産管理 - サービス プリンシパル

Microsoft Defender for Cloud Appsは、一連の重要な特権 OAuth アクセス許可を定義します。 これらのアクセス許可を持つ OAuth アプリケーションは、価値の高い資産と見なされます。 侵害された場合、攻撃者は SaaS アプリケーションに対して高い特権を得ることができます。 このリスクを反映するために、攻撃パスは、これらのアクセス許可を持つサービス プリンシパルをターゲット目標として扱います。

重要な資産のアクセス許可を表示する

アクセス許可の完全な一覧を表示するには、Microsoft Defender ポータルに移動し、[設定] > Microsoft Defender XDR > [ルール] > [重要な資産管理] に移動します。

Microsoft Defender ポータルの [重要な資産管理] ページのスクリーンショット。

調査ユーザー フロー: OAuth アプリケーションに関連する攻撃パスを表示する

価値の高いターゲットを表すアクセス許可を理解したら、次の手順を使用して、環境の攻撃パスにこれらのアプリケーションがどのように表示されるかを調査します。 管理しやすい数の攻撃パスを持つ小規模な組織の場合は、この構造化されたアプローチに従って各攻撃パスを調査することをお勧めします。

注:

OAuth アプリは、特定の条件が検出された場合にのみ、攻撃パスのサーフェス マップに表示されます。
たとえば、悪用しやすいエントリ ポイントを持つ脆弱なコンポーネントが検出された場合、OAuth アプリが攻撃パスに表示される可能性があります。 このエントリ ポイントを使用すると、高い特権を持つサービス プリンシパルへの横移動が可能になります。

  1. [露出管理] > [攻撃] 画面 > [攻撃パス] に移動します。

  2. [ターゲットの種類: AAD サービス プリンシパル] でフィルター処理する

    サービスがプリシパル ターゲットの種類を追加する攻撃パスのスクリーンショット

  3. "重大度の高い脆弱性を持つデバイスでは、機密性の高いアクセス許可を持つサービス プリンシパルへの横移動が許可されます" というタイトルの攻撃パスを選択します。

    攻撃パス名のスクリーンショット

  4. [マップで表示] ボタンをクリックして、攻撃パスを表示します。

    [マップ] ボタンのビューのスクリーンショット

  5. [+] 記号を選択してノードを展開し、詳細な接続を表示します。

    攻撃面マップのスクリーンショット

  6. ノードとエッジをポイントまたは選択して、この OAuth アプリに付与されているアクセス許可などの追加データを調べます。

    攻撃面マップに示すように、OAuth アプリに割り当てられたアクセス許可を示すスクリーンショット

  7. OAuth アプリケーションの名前をコピーし、[アプリケーション] ページの検索バーに貼り付けます。

    [OAuth アプリケーション] タブを示すスクリーンショット

  8. アプリ名を選択して、割り当てられたアクセス許可と使用状況の分析情報 (高い特権のアクセス許可がアクティブに使用されているかどうかなど) を確認します。

    Oauth アプリに割り当てられたアクセス許可を示すスクリーンショット

  9. 省略可能: OAuth アプリケーションを無効にする必要があると判断した場合は、[アプリケーション] ページから無効にすることができます。

意思決定者のユーザー フロー: チョーク ポイントを使用して攻撃パスの優先順位を付ける

手動で調査できない多数の攻撃パスを持つ大規模な組織では、攻撃パス データを使用し、優先順位付けツールとしてチョーク ポイント エクスペリエンスを利用することをお勧めします。 この方法では、次のことができます。

  • 最も多くの攻撃パスに接続されている資産を特定します。
  • 調査に優先順位を付ける資産に関する情報に基づいた意思決定を行います。
  • OAuth アプリMicrosoft Entraフィルター処理して、最も多くの攻撃パスに関係する OAuth アプリを確認します。
  • 最小特権のアクセス許可を適用する OAuth アプリケーションを決定します。

次の手順をお試しください。

  1. [攻撃パス] > [チョーク ポイント] ページに移動します。

    チョーク ポイント ページを示すスクリーンショット

  2. チョーク ポイント名を選択すると、上位の攻撃パス (名前、エントリ ポイント、ターゲットなど) の詳細が表示されます。

  3. [爆発半径の表示] をクリックして、攻撃用 Surface マップのチョーク ポイントをさらに調査します。 [ブラスト半径の表示] ボタンを示すスクリーンショット

チョーク ポイントが OAuth アプリケーションの場合は、上記の手順 7 から 9 で説明されているように、[アプリケーション] ページで調査を続行します。

攻撃面マップを分析し、クエリを使用して狩りを行う

攻撃画面マップでは、ユーザー所有のアプリ、OAuth アプリ、およびサービス プリンシパルからの接続を確認できます。 このリレーションシップ データは、次の中で使用できます。

  • ExposureGraphEdges テーブル (接続を示す)

  • ExposureGraphNodes テーブル (アクセス許可などのノード プロパティを含む)

次の高度なハンティング クエリを使用して、重要なアクセス許可を持つすべての OAuth アプリケーションを特定します。

let RelevantNodes = ExposureGraphNodes
| where NodeLabel == "Microsoft Entra OAuth App" or NodeLabel == "serviceprincipal"
| project NodeId, NodeLabel, NodeName, NodeProperties;
ExposureGraphEdges
| where EdgeLabel == "has permissions to" or EdgeLabel == "can authenticate as"
| make-graph SourceNodeId --> TargetNodeId with RelevantNodes on NodeId
| graph-match (AppRegistration)-[canAuthAs]->(SPN)-[hasPermissionTo]->(Target)
        where AppRegistration.NodeLabel == "Microsoft Entra OAuth App" and
        canAuthAs.EdgeLabel == "can authenticate as" and
        SPN.NodeLabel == "serviceprincipal" and
        SPN.NodeProperties["rawData"]["criticalityLevel"]["criticalityLevel"] == 0 and
        hasPermissionTo.EdgeLabel == @"has permissions to" and
        Target.NodeLabel == "Microsoft Entra OAuth App" and
        Target.NodeName == "Microsoft Graph"
        project AppReg=AppRegistration.NodeLabel,
         canAuthAs=canAuthAs.EdgeLabel, SPN.NodeLabel, DisplayName=SPN.NodeProperties["rawData"]["accountDisplayName"],
         Enabled=SPN.NodeProperties["rawData"]["accountEnabled"], AppTenantID=SPN.NodeProperties["rawData"]["appOwnerOrganizationId"],
         hasPermissionTo=hasPermissionTo.EdgeLabel, Target=Target.NodeName,
         AppPerm=hasPermissionTo.EdgeProperties["rawData"]["applicationPermissions"]["permissions"]
| mv-apply AppPerm on (summarize AppPerm = make_list(AppPerm.permissionValue))
| project AppReg, canAuthAs, DisplayName, Enabled, AppTenantID, hasPermissionTo, Target, AppPerm

次の手順

詳細については、以下を参照してください。