Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
DFIR-O365RC — Modulo PowerShell per la raccolta di log di Office 365 e Azure | Kitploit
Strumenti/GitHubGitHub/anssi-fr/dfir-o365rc
Informatica ForenseDigital ForensicsSicurezza CloudRisposta agli IncidentiAnalisi dei Log
GitHubanssi-fr/dfir-o365rc

DFIR-O365RC

Modulo PowerShell per la raccolta di log di Office 365 e Azure

Vedi Repository
28234411 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

DFIR-O365RC

Publish Docker image to Dockerhub Publish module to PowerShell Gallery


Indice:

  1. Descrizione del modulo

  2. Installazione e prerequisiti

    1. Usando Docker
    2. Installazione manuale
  3. Gestione dell'applicazione DFIR-O365RC

    1. Creazione dell'applicazione
    2. Aggiornamento dell'applicazione
    3. Rimozione dell'applicazione
  4. Requisiti di autorizzazione e licenza

  5. Funzioni incluse nel modulo

  6. File generati

DFIR-O365RC è stato presentato a SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Le slide e la registrazione della presentazione, in francese, sono disponibili qui.

⚠️ Il 31 marzo 2024, Microsoft ha deprecato il metodo di autenticazione che usavamo per DFIR-O365RC. Questo ha portato al rilascio della versione 2.0.0 nell'agosto 2024, con breaking changes riguardanti l'autenticazione e un refactoring globale del codice. ⚠️

Descrizione del modulo

Il modulo PowerShell DFIR-O365RC è un insieme di funzioni che consentono a un analista forense di raccogliere log rilevanti per compromissioni di Microsoft 365 e condurre indagini su Entra ID.

I log sono generati in formato JSON e recuperati da due principali fonti dati:

  • Microsoft 365 Unified Audit Log;
  • Microsoft Entra log di accesso e log di controllo.

Queste due fonti dati possono essere interrogate da diversi endpoint:

* L'Office 365 Management API è pensata per analizzare i dati in tempo reale con un SIEM. DFIR-O365RC è uno strumento forense, il suo scopo non è monitorare un ambiente Microsoft 365 in tempo reale.

DFIR-O365RC recupererà dati da:

  • Log di Microsoft Entra utilizzando Microsoft Graph PowerShell, perché le prestazioni sono buone e avvolge la Microsoft Graph REST API;
  • Per impostazione predefinita, Unified Audit Log tramite Exchange Online PowerShell: nonostante le scarse prestazioni, per ora è l'unica opzione utilizzabile;
  • Opzionalmente, Unified Audit Log tramite Purview. La conservazione è di 180 giorni, ha buone prestazioni ma è ancora in beta e bug nel back-end lo rendono attualmente inutilizzabile.

Se stai indagando su attività malevole in Microsoft 365, il cmdlet Search-O365 (da Exchange Online PowerShell) recupererà anche il log di controllo della cassetta postale (Mailbox Audit Log), sebbene il cmdlet Search-MailboxAuditLog stia venendo deprecato.

Se stai indagando su altre risorse di Azure, con DFIR-O365RC:

  • puoi ottenere il log delle attività di Azure Monitor utilizzando il modulo PowerShell Az.Monitor, con una conservazione di 90 giorni. Questo log si concentra sulle attività in Azure Resource Manager (relative a una sottoscrizione Azure);
  • puoi ottenere il log di controllo di Azure DevOps utilizzando l'API REST di Azure DevOps Services, con una conservazione di 90 giorni. Questo log si concentra sulle attività in Azure DevOps (relative a un'organizzazione di Azure DevOps).

Installazione e prerequisiti

Usando Docker

Questo è il metodo consigliato per utilizzare DFIR-O365RC

Digita semplicemente :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest

root@kitploit:~
DFIR-O365RC è pronto per l'uso:```bash
PowerShell 7.4.2
DFIR-O365RC: PowerShell module for Microsoft 365 and Entra ID log collection
https://github.com/ANSSI-FR/DFIR-O365RC
PS /mnt/host/output>

Se desideri creare manualmente la tua immagine Docker, clona il repository e usa docker compose (o il legacy docker-compose) per creare l'immagine, eseguire il contenitore e montare un volume (nella cartella output/):```bash sudo docker compose build dfir-o365rc sudo docker compose run dfir-o365rc

using legacy Compose V1

sudo docker-compose run dfir-o365rc

root@kitploit:~
### Utilizzo di PowerShell

È possibile installare il modulo su *PowerShell Desktop* e *PowerShell Core*.

Si noti che il cmdlet `Connect-ExchangeOnline` [richiede Microsoft .NET Framework 4.7.2 o successivo](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).

Per installare il modulo da PowerShell Gallery:```powershell
Install-Module -Name DFIR-O365RC

Puoi anche installare il modulo manualmente clonando il repository DFIR-O365RC, installando le dipendenze richieste (controlla DFIR-O365RC.psd1) e aggiungendo la directory DFIR-O365RC in uno dei percorsi dei moduli di PowerShell.

Gestione dell'applicazione DFIR-O365RC

Creazione dell'applicazione

Una volta importato il modulo, dovrai creare un'applicazione Entra, che gestirà per te il processo di raccolta dei log.

Per farlo:

  1. Crea un certificato autofirmato e ottieni la parte pubblica codificata in base64:

    Su Linux, utilizzando PowerShell Core o il container Docker: ```bash openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -out exampleDFIRO365RC.crt -keyout exampleDFIRO365RC.key -batch openssl pkcs12 -inkey exampleDFIRO365RC.key -in exampleDFIRO365RC.crt -export -out exampleDFIRO365RC.pfx # Enter a password for the certificate openssl x509 -in exampleDFIRO365RC.crt -outform DER -out - | base64 | tr -d "\n"

    root@kitploit:~

Su Windows, utilizzando PowerShell: ```powershell $certificate = New-SelfSignedCertificate -Subject "CN=exampleDFIRO365RC" -KeySpec KeyExchange -NotBefore (Get-Date) -NotAfter (Get-Date).AddDays(365) $certificatePassword = Read-Host -MaskInput "Please enter a password for the certificate" $certificateSecurePassword = ConvertTo-SecureString -String $certificatePassword -AsPlainText -Force Export-PfxCertificate -Cert $certificate -FilePath exampleDFIRO365RC.pfx -Password $certificateSecurePassword Write-Host ([System.Convert]::ToBase64String($certificate.GetRawCertData()))

root@kitploit:~
2) Usare il cmdlet `New-Application` del modulo DFIR-O365RC:   ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64

Facoltativamente, se desideri poter raccogliere i log negli abbonamenti del tenant (non necessario se non prevedi di utilizzare Get-AzRMActivityLogs): ```powershell New-Application -certificateb64 $certificateb64 -subscriptions

root@kitploit:~
Facoltativamente, se desideri essere in grado di raccogliere log nelle organizzazioni di Azure DevOps del tenant (questa operazione può richiedere molto tempo e non è necessaria se non prevedi di utilizzare `Get-AzDevOpsActivityLogs`):   ```powershell
New-Application -certificateb64 $certificateb64 -organizations

Per creare l'applicazione, dovrai accedere ad Azure più volte, utilizzando un account altamente privilegiato.

Una volta creata l'applicazione, otterrai un output simile a: ```powershell Done creating the application with the required permissions Please use the following identifiers: WARNING: AppID: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx WARNING: Tenant: example.onmicrosoft.com

root@kitploit:~
### Aggiornamento dell'applicazione

Una volta creata l'applicazione, puoi ancora, usando il cmdlet `Update-Application` del modulo, aggiornare le sue credenziali e autorizzazioni:

- Puoi aggiungere un nuovo certificato all'applicazione:

`Update-Application -certificateb64 <base64-encoded public part>`

- Puoi specificare nuove sottoscrizioni in cui desideri poter raccogliere log:

`Update-Application -subscriptions`

- Puoi specificare nuove organizzazioni Azure DevOps in cui desideri poter raccogliere log:

`Update-Application -organizations`

- Puoi aggiornare le autorizzazioni dell'applicazione, cosa particolarmente utile se hai un'applicazione vecchia e le autorizzazioni sono state aggiornate da quando l'hai creata:

`Update-Application -permissions`

### Rimozione dell'applicazione

Una volta terminata la raccolta dei log, puoi eliminare l'applicazione usando il cmdlet `Remove-Application` del modulo.

Per rimuovere l'applicazione, dovrai accedere ad Azure più volte, utilizzando un account **altamente privilegiato**.

Se l'applicazione è stata in grado di raccogliere log di sottoscrizioni o organizzazioni Azure DevOps, dovrai aggiungere le opzioni `-organizations` e/o `-subscriptions`.

## Requisiti di autorizzazioni e licenze

⚠️

A partire dalla versione 2.0.0, lo strumento ora funziona nel contesto di un'entità servizio con [Accesso solo app / Autorizzazioni dell'applicazione](https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user). 

Per utilizzare la versione 2.0.0 e successive, dovrai [creare un'applicazione](#creating-the-application).

Una volta creata l'applicazione, lo script verrà eseguito utilizzando le credenziali e le autorizzazioni dell'applicazione.

⚠️

L'applicazione verrà creata con il set di autorizzazioni minime necessarie:

- `Exchange.ManageAsApp` per l'API `Office 365 Exchange Online` (necessaria per poter eseguire i cmdlet di Exchange Online PowerShell)
- `AuditLog.Read.All` per l'API `Microsoft Graph` (necessaria per la raccolta dei log di Microsoft Entra)
- `AuditLogsQuery.Read.All` per l'API `Microsoft Graph` (necessaria per la raccolta del Unified Audit Log utilizzando Purview)
- `Application.Read.All` e `DelegatedPermissionGrant.Read.All` per l'API `Microsoft Graph` (necessarie per l'arricchimento dei log di Microsoft Entra relativi ad applicazioni ed entità servizio)
- `Device.Read.All` per l'API `Microsoft Graph` (necessaria per l'arricchimento dei log di Microsoft Entra relativi ai dispositivi)
- `User.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni sugli utenti)
- `UserAuthenticationMethod.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni sui metodi di autenticazione degli utenti)
- `Organization.Read.All` per l'API `Microsoft Graph` (necessaria per ottenere informazioni generali sul tenant)
- `View-only audit logs` in `Exchange Online` (necessaria per utilizzare il cmdlet `Search-UnifiedAuditLog`)

Opzionalmente (se si utilizza l'opzione `-subscriptions`):

- Per il sottoinsieme selezionato di sottoscrizioni: ruolo `Reader` su `Microsoft.Insights/eventtypes/*` (necessario per ottenere il log delle attività di Azure Monitor)

Opzionalmente (se si utilizza l'opzione `-organizations`):

- Per il sottoinsieme selezionato di sottoscrizioni Azure DevOps: `View audit log` (necessario per ottenere il log di audit di Azure DevOps)

Per recuperare i log di Microsoft Entra con l'API Microsoft Graph è necessario almeno un utente con una licenza [Microsoft Entra ID P1](https://www.microsoft.com/en-us/security/business/microsoft-entra-pricing). Questa licenza può essere acquistata per un singolo utente o può essere inclusa in alcuni piani di licenza come il piano *Microsoft 365 Business Premium*.

## Funzioni incluse nel modulo

Il modulo ha 10 funzioni:

| **Funzione**  | **Origine dati**  | Conservazione | **Prestazioni**  |  **Completezza** | **Dettagli** |
|---|---|---|---|---|---|
| `Get-O365Full` | Unified Audit Log | 90 giorni / 180 giorni* |  Scadente | Tutto il Unified Audit Log | Per impostazione predefinita, recupera l'intero Unified Audit Log. Questo dovrebbe essere utilizzato solo su un tenant piccolo o per un breve periodo di tempo.<br />Puoi anche usare questo cmdlet per raccogliere eventi per alcuni specifici [tipi di record](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32). |
| `Get-O365Light` | Unified Audit Log | 90 giorni / 180 giorni* |  Buona | Solo un sottoinsieme del Unified Audit Log | Viene recuperato solo un sottoinsieme di *operazioni*, considerate di interesse. |
| `Get-O365Defender` | Unified Audit Log | 90 giorni / 180 giorni* |  Buona | Solo un sottoinsieme del Unified Audit Log | Recupera eventi correlati a Microsoft Defender per Microsoft 365. Richiede almeno una licenza [Office 365 E5](https://www.microsoft.com/en-us/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) o un piano di licenza che includa Microsoft Defender per Office 365. |
| `Get-AADLogs` | Log di Microsoft Entra | 30 giorni |  Buona | Tutti i log di Microsoft Entra | Ottiene informazioni sul tenant e tutti i log di Microsoft Entra: log di accesso e log di audit. |
| `Get-AADApps` | N/D | N/D |  Buona | Completa | Entità servizio di Microsoft Entra ID e le loro applicazioni, oauth2PermissionGrants e appRoleAssignments |
| `Get-AADDevices` | N/D | N/D |  Buona | Completa | Dispositivi di Microsoft Entra ID e i loro proprietari/utenti |
| `Get-AADUsers` | N/D | N/D |  Buona | Completa | Utenti di Microsoft Entra ID e i loro metodi di autenticazione |
| `Search-O365` | Unified Audit Log / Log di audit della cassetta postale** | 90 giorni / 180 giorni* | Scadente | Solo un sottoinsieme del Unified Audit Log | Cerca attività relative a utenti specifici, indirizzi IP o testi liberi. |
| `Get-AzRMActivityLogs` | Log delle attività di Azure Monitor | 90 giorni |  Buona | Tutti i log delle attività di Azure Monitor | Ottiene tutti i log delle attività di Azure Monitor per un sottoinsieme selezionato di sottoscrizioni. |
| `Get-AzDevOpsActivityLogs` | Log di audit di Azure DevOps | 90 giorni |  Buona | Tutti i log di audit di Azure DevOps | Ottiene tutti i log di audit di Azure DevOps per un sottoinsieme selezionato di organizzazioni Azure DevOps. |

\* Puoi ottenere 180 giorni di conservazione utilizzando Purview, rispetto ai 90 giorni predefiniti utilizzando Exchange Online.

\*\* Quando si cercano utenti, il cmdlet `Search-O365` cercherà anche nel Log di audit della cassetta postale.

Ogni funzione ha un help basato su commenti che puoi richiamare con il cmdlet *Get-Help*.```powershell
# Display comment-based help
PS> Get-Help Get-O365Full
# Display comment-based help with examples
PS> Get-Help Get-O365Full -Examples

Ogni funzione accetta come parametro:

  • una data di inizio (-startDate) ;
  • una data di fine (-endDate) ;
  • l'identificatore dell'applicazione (-appId), ottenuto durante la creazione dell'applicazione ;
  • il nome del tenant (-tenant) ;
  • il percorso del certificato in formato PFX (-certificatePath), ottenuto durante la creazione dell'applicazione.

Esempi:

Per leggibilità, assumeremo che:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"

root@kitploit:~
In un caso reale, quei parametri vengono raccolti quando si [crea l'applicazione](#creating-the-application).

Per recuperare i Microsoft Entra Logs degli ultimi 30 giorni così come informazioni generali sul tenant:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

Ottieni i service principal di Microsoft Entra e la loro applicazione, oauth2PermissionGrant e appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
Ottieni dispositivi Microsoft Entra e i loro proprietari e utenti:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath

Ottieni gli utenti di Microsoft Entra e le loro impostazioni dei metodi di autenticazione:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods

root@kitploit:~
Recupera gli eventi del Unified Audit log considerati di interesse degli ultimi 30 giorni, eccetto quelli relativi a Entra ID, che sono già stati recuperati dal primo comando:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"

Retrieve Unified Audit log events considered of interest in a time window between -90 days and -30 days from now:```powershell $endDate = (Get-Date).AddDays(-30) $startDate = (Get-Date).AddDays(-90) Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
Se l'audit della cassetta postale è abilitato, puoi anche recuperare le operazioni `MailboxLogin` usando l'opzione dedicata:

_Attenzione al limite globale di 50.000 eventi per ricerca_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin

Se ci sono utenti con licenze Office 365 E5 o se c'è un piano Microsoft Defender per Office 365 nel tenant, è possibile recuperare i log relativi a Microsoft Defender degli ultimi 90 giorni:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
Per recuperare tutti gli eventi del Unified Audit Log tra la vigilia di Natale 2020 e il Santo Stefano 2020:

_Attenzione: l'utilizzo di quel cmdlet ha prestazioni scarse_```powershell
$endDate = Get-Date "12/26/2020"
$startdate = Get-Date "12/24/2020"
Get-O365Full -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

Puoi utilizzare la funzione di ricerca per cercare indirizzi IP, attività relative a utenti specifici o eseguire una ricerca a testo libero nel Unified Audit Log:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90)

Retrieve events which contains the "Python" or "Python3" free text

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -freeTexts "Python","Python3"

Retrieve events related to the IP adresses 8.8.8.8 and 4.4.4.4.

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -IPAddresses "8.8.8.8","4.4.4.4"

Retrieve events related to users [email protected] and [email protected]

Search-O365 -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -userIds "[email protected]","[email protected]"

root@kitploit:~
Quando si cercano **utenti** specifici, `Search-O365` cercherà anche nel registro di controllo della cassetta postale. Questo perché, in base al livello di licenza e alle impostazioni dell'utente, alcuni log della cassetta postale potrebbero non essere presenti nel registro di controllo unificato.




Per recuperare tutti i log delle attività di Azure Resource Manager dalle sottoscrizioni a cui l'applicazione ha accesso:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

Per recuperare tutti i log di attività di Azure DevOps dalle organizzazioni a cui l'applicazione ha accesso:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
## File generati

Tutti i file generati sono in formato JSON.

_Lanciare diversi cmdlet che utilizzano Purview e scrivono sullo stesso file di output può risultare in un JSON non valido a causa di una concatenazione "ingenua"_

- `Get-AADApps` creerà nella cartella `azure_ad_apps`:
  - un file JSON contenente le applicazioni esistenti ed eliminate: `AADApps_example.onmicrosoft.com_applications_raw.json`;
  - un file JSON contenente i service principal esistenti ed eliminati: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
  - un file JSON contenente i service principal arricchiti: `AADApps_example.onmicrosoft.com.json`.

- `Get-AADDevices` creerà nella cartella `azure_ad_devices`:
  - un file JSON contenente i dispositivi esistenti ed eliminati: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
  - un file JSON contenente i dispositivi arricchiti: `AADDevices_example.onmicrosoft.com.json`.

- `Get-AADUsers` creerà nella cartella `azure_ad_users`:
  - un file JSON contenente gli utenti esistenti ed eliminati: `AADUsers_example.onmicrosoft.com_users_raw.json`;
  - un file JSON contenente le impostazioni di autenticazione degli utenti: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
  - un file JSON contenente gli utenti arricchiti: `AADUsers_example.onmicrosoft.com.json`.

- `Get-AADLogs` creerà:
  - nella cartella `azure_ad_tenant`:
    - un file JSON contenente informazioni generali sul tenant: `AADTenant_example.onmicrosoft.com.json`.

  - nella cartella `azure_ad_audit`:
    - file JSON contenenti i log di audit di Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.

  - nella cartella `azure_ad_signin`:
    - file JSON contenenti i log di accesso di Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzRMActivityLogs` creerà:
  - nella cartella `azure_rm_subscriptions`:
    - un file JSON contenente informazioni generali sulle sottoscrizioni: `AzRMsubscriptions_example.onmicrosoft.com.json`.

  - nella cartella `azure_rm_activity`:
    - file JSON contenenti i log di attività di Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzDevOpsActivityLogs` creerà:
  - nella cartella `azure_DevOps_orgs`:
    - un file JSON contenente informazioni generali sulle organizzazioni di Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.

  - nella cartella `azure_DevOps_activity`:
    - file JSON contenenti i log di audit di Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.

- `Get-O365Full` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
  - file JSON contenenti i log di audit unificati: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview);
  - file JSON contenenti i log di audit unificati per [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) specificati: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).

- `Get-O365Light` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
  - file JSON contenenti i log di audit unificati per un sottoinsieme di *operazioni* considerate di interesse: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).
- `Get-O365Defender` creerà nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
  - file JSON contenenti i log di audit unificati per i [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) associati a Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview).
- `Search-O365` creerà:
  - nella cartella `O365_unified_audit_logs` (rispettivamente `O365_unified_audit_logs_purview` quando si utilizza Purview):
    - file JSON contenenti i log di audit unificati per il `RequestType` specificato (`FreeText`, `IPAddresses` o `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (rispettivamente `*/UnifiedAuditLogPurview_*` quando si utilizza Purview). `YYYY-MM-DD-HH-MM-SS` rappresenta l'ora in cui è stato effettuato il recupero. Quando si cerca con `FreeText`, viene aggiunto un ulteriore `_%i` alla fine, che indica che questo è il risultato della ricerca dell'`%i`-esimo testo libero.

  - nella cartella `Exchange_mailbox_audit_logs`:
    - file JSON contenenti i log di audit delle cassette postali (solo quando si cerca per UserIDs): `YYYY-MM-DD/MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json`. `YYYY-MM-DD-HH-MM-SS` rappresenta l'ora in cui è stato effettuato il recupero. `%UserID%` indica che questo è il risultato della ricerca di questo UserID.

Lanciando le varie funzioni verrà generata una struttura di directory simile a questa:```
output
│   Get-AADApps.log
│   Get-AADDevices.log
│   Get-AADLogs.log
│   Get-AzDevOpsActivityLogs.log
│   Get-AzRMActivityLogs.log
│   Get-O365Defender.log
│   Get-O365Full.log
│   Get-O365Light.log
│   Search-O365.log
│
├───azure_ad_apps
│       AADApps_example.onmicrosoft.com.json
│       AADApps_example.onmicrosoft.com_applications_raw.json
│       AADApps_example.onmicrosoft.com_service_principals_raw.json
│
├───azure_ad_audit
│       AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json
│       [...]
│
├───azure_ad_devices
│       AADDevices_example.onmicrosoft.com.json
│       AADDevices_example.onmicrosoft.com_devices_raw.json
│
├───azure_ad_signin
│   ├───YYYY-MM-DD
│   │       AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_ad_tenant
│       AADTenant_example.onmicrosoft.com.json
│
├───azure_ad_users
│       AADUsers_divreponse.onmicrosoft.com.json
│       AADUsers_divreponse.onmicrosoft.com_users_raw.json
│       AADUsers_divreponse.onmicrosoft.com_users_settings_raw.json
|
├───azure_DevOps_activity
│   ├───YYYY-MM-DD
│   │       AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_DevOps_orgs
│       AzdevopsOrgs_example.onmicrosoft.com.json
├───azure_rm_activity
│   ├───YYYY-MM-DD
│   │       AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json
│   │       [...]
│   │
│   ├───[...]
│
├───azure_rm_subscriptions
│       AzRMsubscriptions_example.onmicrosoft.com.json
│
├───Exchange_mailbox_audit_logs
│   └───YYYY-MM-DD
│   │       MailboxAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS_%UserID%.json
│   │       [...]
│   │
│   ├───[...]
│
├───O365_unified_audit_logs
│   ├───YYYY-MM-DD
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│   │       [...]
│   │
│   ├───[...]
│
└───O365_unified_audit_logs_purview
│   ├───YYYY-MM-DD
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_UserIds_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_IPAddresses_YYYY-MM-DD-HH-MM-SS.json
│   │       UnifiedAuditLogPurview_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_FreeText_YYYY-MM-DD-HH-MM-SS_%i.json
│   │       [...]
│   │
│   ├───[...]
Scarica lo strumento
Origine dati / EndpointConservazionePrestazioniAmbito
Unified Audit Log / Exchange Online PowerShell90 giorniScarseTutti i log di Microsoft 365 (inclusi Entra)
Unified Audit Log / Purview180 giorniBuoneTutti i log di Microsoft 365 (inclusi Entra)
Unified Audit Log / Office 365 Management API *7 giorniBuoneTutti i log di Microsoft 365 (inclusi Entra)
Log di Microsoft Entra / Microsoft Graph PowerShell30 giorniBuoneSolo log di accesso e di controllo di Entra
Log di Microsoft Entra / Microsoft Graph REST API30 giorniBuoneSolo log di accesso e di controllo di Entra