# Az - Monitoring

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

## Entra ID - Logs

There are 3 types of logs available in Entra ID:

- **Sign-in Logs**: I Sign-in Logs documentano ogni tentativo di autenticazione, riuscito o fallito. Forniscono dettagli come indirizzi IP, posizioni, informazioni sul dispositivo e le policy di conditional access applicate, essenziali per monitorare l'attività degli utenti e rilevare comportamenti di login sospetti o potenziali minacce alla sicurezza.
- **Audit Logs**: Gli Audit Logs forniscono una cronologia di tutte le modifiche effettuate nell'ambiente Entra ID. Registrano aggiornamenti relativi a utenti, gruppi, ruoli o policy, per esempio. Questi log sono vitali per compliance e investigazioni sulla sicurezza, poiché permettono di rivedere chi ha effettuato quale modifica e quando.
- **Provisioning Logs**: I Provisioning Logs contengono informazioni sugli utenti provisionati nel tenant tramite un servizio di terze parti (come directory on-premises o applicazioni SaaS). Questi log aiutano a comprendere come le informazioni di identità vengono sincronizzate.

> [!WARNING]
> Nota che questi log sono conservati solo per **7 days** nella versione gratuita, **30 days** nelle versioni P1/P2 e 60 giorni aggiuntivi in security signals per attività di risky signin. Tuttavia, neanche un global admin potrebbe **modificarli o cancellarli prima**.

## Entra ID - Log Systems

- **Diagnostic Settings**: Un diagnostic setting specifica una lista di categorie di platform logs e/o metriche che vuoi raccogliere da una risorsa, e una o più destinazioni dove vuoi streammarli. Si applicheranno i normali costi d'uso per la destinazione. Scopri di più sulle diverse categorie di log e sul contenuto di quei log.
- **Destinations**:
- **Analytics Workspace**: Investigazione tramite Azure Log Analytics e creazione di alerts.
- **Storage account**: Analisi statica e backup.
- **Event hub**: Stream dei dati verso sistemi esterni come SIEM di terze parti.
- **Monitor partner solutions**: Integrazioni speciali tra Azure Monitor e altre piattaforme di monitoring non-Microsoft.
- **Workbooks**: I Workbooks combinano testo, query di log, metriche e parametri in report interattivi e ricchi.
- **Usage & Insights**: Utile per vedere le attività più comuni in Entra ID

## Azure Monitor

These are the main features of Azure Monitor:

- **Activity Logs**: Azure Activity Logs catturano eventi a livello di subscription e operazioni di management, offrendo una panoramica delle modifiche e delle azioni eseguite sulle tue risorse.
- **Activity logs** non possono essere modificati o cancellati.
- **Change Analysis**: Change Analysis rileva e visualizza automaticamente cambiamenti di configurazione e di stato attraverso le risorse Azure per aiutare a diagnosticare problemi e tracciare le modifiche nel tempo.
- **Alerts**: Gli Alerts di Azure Monitor sono notifiche automatiche generate quando condizioni o soglie specificate vengono soddisfatte nell'ambiente Azure.
- **Workbooks**: I Workbooks sono dashboard interattivi e personalizzabili all'interno di Azure Monitor che consentono di combinare e visualizzare dati provenienti da varie fonti per un'analisi completa.
- **Investigator**: Investigator aiuta a scavare nei dati di log e negli alerts per condurre analisi approfondite e identificare la causa degli incidenti.
- **Insights**: Insights forniscono analytics, metriche di performance e raccomandazioni azionabili (come quelle in Application Insights o VM Insights) per aiutare a monitorare e ottimizzare la salute e l'efficienza delle tue applicazioni e infrastrutture.

### Log Analytics Workspaces

Log Analytics workspaces are central repositories in Azure Monitor where you can **collect, analyze, and visualize log and performance data** from your Azure resources and on-premises environments. Here are the key points:

- **Centralized Data Storage**: Servono come posizione centrale per conservare diagnostic logs, metriche di performance e custom logs generati dalle tue applicazioni e servizi.
- **Powerful Query Capabilities**: Puoi eseguire query usando Kusto Query Language (KQL) per analizzare i dati, generare insight e risolvere problemi.
- **Integration with Monitoring Tools**: I Log Analytics workspaces si integrano con vari servizi Azure (come Azure Monitor, Azure Sentinel e Application Insights) permettendoti di creare dashboard, impostare alerts e ottenere una vista completa del tuo ambiente.

In sintesi, un Log Analytics workspace è essenziale per monitoring avanzato, troubleshooting e analisi di sicurezza in Azure.

Puoi configurare una risorsa per inviare i dati a un analytics workspace dalle **diagnostic settings** della risorsa.

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

- Microsoft Graph Activity Logs are not enabled by default. Enable and export them (Event Hubs/Log Analytics/SIEM) to see Graph read calls. Tools like AzureHound perform a preflight GET to /v1.0/organization that will appear here; default UA observed: azurehound/v2.x.x.
- Entra ID non-interactive sign-in logs registrano la identity platform authentication (login.microsoftonline.<tld>) usata da script/strumenti.
- Le operazioni ARM control-plane di read/list (HTTP GET) generalmente non vengono scritte negli Activity Logs. La visibilità delle operazioni di read proviene dalle Diagnostic Settings della risorsa per endpoint data-plane solamente (es., *.blob.core.windows.net, *.vault.azure.net) e non dalle chiamate ARM control-plane a management.azure.<tld>.
- Microsoft Defender XDR Advanced Hunting GraphApiAuditEvents (preview) può esporre chiamate Graph e identificatori di token ma può omettere UserAgent e ha una retention di default limitata.

Quando fai hunting per AzureHound, correlare gli Entra sign-in logs con i Graph Activity Logs tramite session ID, IP, user/object IDs, e cercare picchi di richieste Graph insieme a chiamate di management ARM che non hanno copertura negli Activity Log.

## 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
```
## Riferimenti
- [Cloud Discovery With AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/)

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