# Az - Monitoring

{{#include ../../../banners/hacktricks-training.md}}

## Entra ID - ログ

Entra ID には 3 種類のログがあります:

- **Sign-in Logs**: サインインログは、成功・失敗を問わずすべての認証試行を記録します。IP アドレス、場所、デバイス情報、適用された Conditional Access ポリシーなどの詳細が含まれ、ユーザー活動の監視や不審なログイン挙動、潜在的なセキュリティ脅威の検出に不可欠です。
- **Audit Logs**: 監査ログは、Entra ID 環境内で行われたすべての変更の記録を提供します。ユーザー、グループ、ロール、ポリシーなどの更新を捕捉し、誰がいつどの変更を行ったかを確認できるため、コンプライアンスやセキュリティ調査に重要です。
- **Provisioning Logs**: プロビジョニングログは、オンプレディレクトリや SaaS アプリケーションなどのサードパーティサービスを通じてテナントにプロビジョニングされたユーザーに関する情報を提供します。ID 情報がどのように同期されているかを把握するのに役立ちます。

> [!WARNING]
> これらのログは無料版では**7日間**、P1/P2 では**30日間**、さらに risky signin activity 向けの security signals に追加で 60 日保存されます。ただし、グローバル管理者であってもこれらを**早期に変更または削除することはできません**。

## Entra ID - Log Systems

- **Diagnostic Settings**: Diagnostic Settings は、リソースから収集したいプラットフォームログやメトリクスのカテゴリ一覧と、そのデータをストリームする宛先を指定する設定です。宛先に対する通常の利用料が発生します。各ログカテゴリとその内容を確認してください。
- **Destinations**:
- **Analytics Workspace**: Azure Log Analytics を通じた調査およびアラート作成。
- **Storage account**: 静的解析とバックアップ。
- **Event hub**: サードパーティの SIEM など外部システムへデータをストリーム。
- **Monitor partner solutions**: Azure Monitor と他の非 Microsoft 監視プラットフォーム間の特別な統合。
- **Workbooks**: Workbooks は、テキスト、ログクエリ、メトリクス、パラメータを組み合わせてリッチでインタラクティブなレポートを作成します。
- **Usage & Insights**: Entra ID における最も一般的なアクティビティを確認するのに有用です。

## Azure Monitor

Azure Monitor の主な機能は次のとおりです:

- **Activity Logs**: Azure Activity Logs はサブスクリプションレベルのイベントや管理操作をキャプチャし、リソースに対する変更や実行されたアクションの概要を提供します。
- **Activity logs** は変更や削除ができません。
- **Change Analysis**: Change Analysis はリソースの構成や状態の変更を自動的に検出・可視化し、問題の診断や変更履歴の追跡に役立ちます。
- **Alerts**: Azure Monitor のアラートは、指定した条件や閾値が満たされたときにトリガーされる自動通知です。
- **Workbooks**: Workbooks はデータソースを組み合わせて可視化できるカスタマイズ可能なインタラクティブダッシュボードです。
- **Investigator**: Investigator はログデータやアラートを掘り下げて詳細な解析を行い、インシデントの原因を特定するのに役立ちます。
- **Insights**: Insights は Application Insights や VM Insights のように、分析、パフォーマンス指標、実行可能な推奨事項を提供し、アプリケーションやインフラの健全性と効率の最適化を支援します。

### Log Analytics Workspaces

Log Analytics workspaces は、Azure Monitor 内の中央リポジトリで、Azure リソースやオンプレミス環境からのログやパフォーマンスデータを収集、分析、可視化するためのものです。主なポイントは次のとおりです:

- **Centralized Data Storage**: 診断ログ、パフォーマンスメトリクス、およびアプリケーションやサービスが生成するカスタムログを格納する中央の場所として機能します。
- **Powerful Query Capabilities**: Kusto Query Language (KQL) を使用してデータをクエリし、インサイトを生成したり、問題をトラブルシューティングしたりできます。
- **Integration with Monitoring Tools**: Log Analytics workspaces は Azure Monitor、Azure Sentinel、Application Insights などの各種 Azure サービスと統合され、ダッシュボード作成、アラート設定、環境の包括的な可視化が可能です。

要約すると、Log Analytics workspace は Azure における高度な監視、トラブルシューティング、セキュリティ解析に不可欠です。

リソースから analytics workspace にデータを送るには、そのリソースの **diagnostic settings** で設定できます。

## Graph vs ARM logging visibility (useful for OPSEC/hunting)

- Microsoft Graph Activity Logs はデフォルトで有効になっていません。Graph の read 呼び出しを確認するには有効化して（Event Hubs/Log Analytics/SIEM へ）エクスポートしてください。AzureHound のようなツールは /v1.0/organization へのプレフライト GET を実行し、ここに表示されます；観測されるデフォルト UA: azurehound/v2.x.x。
- Entra ID の non-interactive sign-in logs は、スクリプトやツールが使用するアイデンティティプラットフォームの認証（login.microsoftonline.<tld>）を記録します。
- ARM のコントロールプレーンにおける read/list (HTTP GET) 操作は一般的に Activity Logs に書き込まれません。読み取り操作の可視性は、データプレーンのエンドポイント（例: *.blob.core.windows.net、*.vault.azure.net）に対するリソースの Diagnostic Settings からのみ得られ、management.azure.<tld> への ARM コントロールプレーン呼び出しからは得られません。
- Microsoft Defender XDR Advanced Hunting GraphApiAuditEvents (preview) は Graph 呼び出しやトークン識別子を露出する可能性がありますが、UserAgent を省略したり、デフォルトの保持期間が限定的だったりします。

AzureHound を検出する際は、Entra サインインログと Graph Activity Logs を session ID、IP、ユーザー/オブジェクト ID で相関させ、Graph リクエストの急増と Activity Log のカバレッジがない ARM 管理呼び出しの組み合わせを探してください。

## Enumeration

### Entra ID
```bash
# Get last 10 sign-ins
az rest --method get --uri 'https://graph.microsoft.com/v1.0/auditLogs/signIns?$top=10'

# Get last 10 audit logs
az rest --method get --uri 'https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$top=10'

# Get last 10 provisioning logs
az rest --method get --uri ‘https://graph.microsoft.com/v1.0/auditLogs/provisioning?$top=10’

# Get EntraID Diagnostic Settings
az rest --method get --uri "https://management.azure.com/providers/microsoft.aadiam/diagnosticSettings?api-version=2017-04-01-preview"

# Get Entra ID Workbooks
az rest \
--method POST \
--url "https://management.azure.com/providers/microsoft.resourcegraph/resources?api-version=2021-03-01" \
--headers '{"commandName": "AppInsightsExtension.GetWorkbooksListArg"}' \
--body '{
"subscriptions": ["9291ff6e-6afb-430e-82a4-6f04b2d05c7f"],
"query": "where type =~ \"microsoft.insights/workbooks\" \n| extend sourceId = tostring(properties.sourceId) \n| where sourceId =~ \"Azure Active Directory\" \n| extend DisplayName = tostring(properties.displayName) \n| extend WorkbookType = tostring(properties.category), LastUpdate = todatetime(properties.timeModified) \n| where WorkbookType == \"workbook\"\n| project DisplayName, name, resourceGroup, kind, location, id, type, subscriptionId, tags, WorkbookType, LastUpdate, identity, properties",
"options": {"resultFormat": "table"},
"name": "e4774363-5160-4c09-9d71-2da6c8e3b00a"
}' | jq '.data.rows'
```
### Azure Monitor
```bash
# Get last 10 activity logs
az monitor activity-log list --max-events 10

# Get Resource Diagnostic Settings
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.DocumentDb/databaseAccounts/<db-name>/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview"

# Get Entra ID Workbooks
az rest \
--method POST \
--url "https://management.azure.com/providers/microsoft.resourcegraph/resources?api-version=2021-03-01" \
--headers '{"commandName": "AppInsightsExtension.GetWorkbooksListArg"}' \
--body '{
"content": {},
"commandName": "AppInsightsExtension.GetWorkbooksListArg"
}'

# List Log Analytic groups
az monitor log-analytics workspace list --output table

# List alerts
az monitor metrics alert list --output table
az monitor activity-log alert list --output table
```
## 参考文献
- [Cloud Discovery With AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/)

{{#include ../../../banners/hacktricks-training.md}}
