MITRE ATT&CKのT1098.003をAzureログで検知する方法を調べてみた

Pocket

1.azure_ad_application_administrator_role_assigned.yml

出典:
https://github.com/splunk/security_content/blob/develop/detections/cloud/azure_ad_application_administrator_role_assigned.yml

使用ログ:auditlog

Microsoft Entra audit log categories and activities
https://learn.microsoft.com/en-us/entra/identity/monitoring-health/reference-audit-activities
ログサンプル:
https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1098.003/azure_ad_assign_privileged_role/azure-audit.log
https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1098.003/azure_ad_assign_privileged_role/azure-audit.log
クエリの詳細な説明

azure_monitor_aad:
これは、事前定義されたデータセットまたは検索のエイリアスで、Azure Active Directoryの監査ログ (azure:monitor:aad ソースタイプ) を参照しています。Azure ADの監査ログからデータを取得します。

"operationName"="Add member to role":
このフィールドは、「Add member to role」操作のみをフィルタリングします。この操作は、ユーザーが特定のロールに追加されたことを示します。

"properties.targetResources{}.modifiedProperties{}.newValue"="\"Application Administrator\"":
これは、対象となるロールが「Application Administrator」であることを示しています。properties.targetResources フィールド内の modifiedProperties の newValue に「Application Administrator」が設定されている場合に一致します。二重引用符はエスケープ文字として使用されています。

| rename properties.* as *:
properties. で始まる全てのフィールド名をリネームし、フィールド名から properties. を削除します。例えば、properties.initiatedBy が initiatedBy になります。

| rename initiatedBy.user.userPrincipalName as initiatedBy:
initiatedBy.user.userPrincipalName フィールドを initiatedBy にリネームします。これにより、操作を開始したユーザーの主な識別名 (UPN) を簡単に参照できます。

| stats count min(_time) as firstTime max(_time) as lastTime by user initiatedBy, result, operationName:
stats コマンドを使って、以下の集計を行います:
count: 該当するイベントの総数をカウントします。
min(_time) as firstTime: 該当するイベントが最初に発生した時間を記録します。
max(_time) as lastTime: 該当するイベントが最後に発生した時間を記録します。
by user, initiatedBy, result, operationName: ユーザー、イベントを開始したユーザー、操作の結果 (result)、および操作名 (operationName) 別に集計します。

| security_content_ctime(firstTime) :
カスタム関数 security_content_ctime を使って、firstTime フィールドを人間が読める形式に変換します。この関数は通常、Unixタイムスタンプを適切な日時形式に変換するために使用されます。

| security_content_ctime(lastTime) :
同様に、lastTime フィールドも人間が読める形式に変換します。

| azure_ad_application_administrator_role_assigned_filter``:
これはカスタムフィルタリング関数で、さらに詳細なフィルタリングや条件設定を行うために使用されます。このフィルターは、特定の条件や誤検知を除外するために使用されることがあります。

検知の流れ

このクエリは、Azure ADの監査ログを検索し、「Application Administrator」ロールが割り当てられたイベントを検出します。その後、イベントのタイムスタンプや関連するユーザー情報を集計し、さらにフォーマットを調整して結果を出力します。この情報により、どのユーザーに「Application Administrator」ロールが割り当てられたか、また誰がその操作を行ったかを把握することができます。

2.azure_ad_global_administrator_role_assigned.yml

出典:
https://github.com/splunk/security_content/blob/develop/detections/cloud/azure_ad_global_administrator_role_assigned.yml

詳細情報

(調査中)

参考

Azure AD detection User added to group vs User added to role
https://techcommunity.microsoft.com/t5/microsoft-sentinel/azure-ad-detection-user-added-to-group-vs-user-added-to-role/m-p/2112516

アプリケーションへのユーザーのアクセスのアクセス レビューを準備する(特権一覧)
https://learn.microsoft.com/ja-jp/entra/id-governance/access-reviews-application-preparation


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA