Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
DFIR-O365RC — Módulo PowerShell para coleta de logs do Office 365 e Azure | Kitploit
Ferramentas/GitHubGitHub/anssi-fr/dfir-o365rc
Análise ForenseForensia DigitalSegurança na NuvemResposta a IncidentesAnálise de Logs
GitHubanssi-fr/dfir-o365rc

DFIR-O365RC

Módulo PowerShell para coleta de logs do Office 365 e Azure

Ver Repositório
28234há 11 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

DFIR-O365RC

Publish Docker image to Dockerhub Publish module to PowerShell Gallery


Índice:

  1. Descrição do módulo

  2. Instalação e pré-requisitos

    1. Usando Docker
    2. Instalação manual
  3. Gerenciando o aplicativo DFIR-O365RC

    1. Criando o aplicativo
    2. Atualizando o aplicativo
    3. Removendo o aplicativo
  4. Requisitos de permissão e licença

  5. Funções incluídas no módulo

  6. Arquivos gerados

O DFIR-O365RC foi apresentado no SSTIC 2021 (Symposium sur la sécurité des technologies de l'information et des communications). Os slides e a gravação da apresentação, em francês, estão disponíveis aqui.

⚠️ Em 31 de março de 2024, a Microsoft descontinuou o método de autenticação que usávamos para o DFIR-O365RC. Isso levou ao lançamento da versão 2.0.0 em agosto de 2024, com mudanças significativas em relação à autenticação e uma reestruturação global do código. ⚠️

Descrição do módulo

O módulo PowerShell DFIR-O365RC é um conjunto de funções que permite a um analista forense coletar logs relevantes para comprometimentos do Microsoft 365 e realizar investigações no Entra ID.

Os logs são gerados no formato JSON e recuperados de duas fontes de dados principais:

  • Log de auditoria unificada do Microsoft 365 Unified Audit Log;
  • Logs de entrada sign-ins logs e logs de auditoria audit logs do Microsoft Entra.

Essas duas fontes de dados podem ser consultadas a partir de diferentes endpoints:

* A Office 365 Management API tem como objetivo analisar dados em tempo real com um SIEM. O DFIR-O365RC é uma ferramenta forense, seu objetivo não é monitorar um ambiente Microsoft 365 em tempo real.

O DFIR-O365RC buscará dados de:

  • Logs do Microsoft Entra usando Microsoft Graph PowerShell porque o desempenho é bom e ele encapsula a Microsoft Graph REST API;
  • Por padrão, o Unified Audit Log usando Exchange Online PowerShell: apesar do desempenho ruim, esta é a única opção utilizável no momento;
  • Opcionalmente, o Unified Audit Log usando Purview. A retenção é de 180 dias, tem bom desempenho, mas ainda está em beta e bugs no back-end o tornam inutilizável por enquanto.

Se você está investigando atividades maliciosas no Microsoft 365, o Search-O365 (do Exchange Online PowerShell) também buscará o Log de Auditoria de Caixa Postal, embora o cmdlet Search-MailboxAuditLog esteja sendo descontinuado.

Se você está investigando outros recursos do Azure, com o DFIR-O365RC:

  • você pode obter o Log de Atividade do Azure Monitor usando o módulo Az.Monitor PowerShell, com retenção de 90 dias. Este log se concentra em atividades no Azure Resource Manager (relacionadas a uma assinatura do Azure);
  • você pode obter o log de auditoria do Azure DevOps usando a Azure DevOps Services REST API, com retenção de 90 dias. Este log se concentra em atividades no Azure DevOps (relacionadas a uma organização do Azure DevOps).

Instalação e pré-requisitos

Usando Docker

Esta é a maneira recomendada de usar o DFIR-O365RC

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

root@kitploit:~
DFIR-O365RC está pronto para usar:```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 deseja construir sua imagem Docker manualmente, clone o repositório e use docker compose (ou o legado docker-compose) para construir a imagem, executar o container e montar um volume (na pasta 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:~
### Usando PowerShell

Pode instalar o módulo no *PowerShell Desktop* e no *PowerShell Core*.

Observe que o cmdlet `Connect-ExchangeOnline` [requer o Microsoft .NET Framework 4.7.2 ou posterior](https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows).

Para instalar o módulo da PowerShell Gallery :```powershell
Install-Module -Name DFIR-O365RC

Você também pode instalar o módulo manualmente clonando o repositório DFIR-O365RC, instalar as dependências necessárias (verifique DFIR-O365RC.psd1) e adicionar o diretório DFIR-O365RC em um dos caminhos de módulos do PowerShell.

Gerenciando o aplicativo DFIR-O365RC

Criando o aplicativo

Depois que o módulo for importado, você precisará criar um aplicativo Entra, que gerenciará o processo de coleta de logs para você.

Para fazer isso:

  1. Crie um certificado autoassinado e obtenha a parte pública codificada em base64:

    No Linux, usando o PowerShell Core ou o contêiner Docker:

powershell 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:~
No Windows, usando 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()))
  1. Use o cmdlet New-Application do módulo DFIR-O365RC: ```powershell $certificateb64="<base64-encoded public part from step 1>" New-Application -certificateb64 $certificateb64
    root@kitploit:~

Opcionalmente, se desejar poder recolher registos nas subscrições do inquilino (não necessário se não planeia usar Get-AzRMActivityLogs): ```powershell New-Application -certificateb64 $certificateb64 -subscriptions

root@kitploit:~
Opcionalmente, se deseja poder coletar logs nas organizações do Azure DevOps do tenant (isso pode demorar muito e não é necessário se você não planeja usar `Get-AzDevOpsActivityLogs`):   ```powershell
New-Application -certificateb64 $certificateb64 -organizations

Para criar a aplicação, você precisará fazer login no Azure várias vezes, usando uma conta com privilégios elevados.

Assim que a aplicação for criada, você obterá uma saída semelhante 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:~
### Atualizando o aplicativo

Depois que o aplicativo for criado, você ainda pode, usando o cmdlet `Update-Application` do módulo, atualizar suas credenciais e permissões:

- Você pode adicionar um novo certificado ao aplicativo:

`Update-Application -certificateb64 <parte pública codificada em base64>`

- Você pode especificar novas assinaturas nas quais gostaria de poder coletar logs:

`Update-Application -subscriptions`

- Você pode especificar novas organizações do Azure DevOps nas quais gostaria de poder coletar logs:

`Update-Application -organizations`

- Você pode atualizar as permissões do aplicativo, o que é especialmente útil se você tiver um aplicativo antigo e as permissões foram atualizadas desde que você o criou:

`Update-Application -permissions`

### Removendo o aplicativo

Quando terminar a coleta de logs, você pode excluir o aplicativo usando o cmdlet `Remove-Application` do módulo.

Para remover o aplicativo, você precisará fazer login no Azure várias vezes, usando uma conta **altamente privilegiada**.

Se o aplicativo foi capaz de coletar logs de assinaturas ou organizações do Azure DevOps, você precisará adicionar os parâmetros `-organizations` e/ou `-subscriptions`.

## Requisitos de permissões e licença

⚠️

A partir da versão 2.0.0, a ferramenta agora é executada no contexto de um Service Principal com [acesso somente para aplicativo / permissões de aplicativo](https://learn.microsoft.com/pt-br/entra/identity-platform/permissions-consent-overview#app-only-access-access-without-a-user). 

Para usar a versão 2.0.0 e superiores, você precisará [criar um aplicativo](#criando-o-aplicativo).

Após a criação do aplicativo, o script será executado usando as credenciais e permissões do aplicativo.

⚠️

O aplicativo será criado com o menor conjunto de permissões possível exigido:

- `Exchange.ManageAsApp` para a API `Office 365 Exchange Online` (necessário para poder executar cmdlets do PowerShell do Exchange Online)
- `AuditLog.Read.All` para a API `Microsoft Graph` (necessário para coleta de logs do Microsoft Entra)
- `AuditLogsQuery.Read.All` para a API `Microsoft Graph` (necessário para coleta do Unified Audit Log usando Purview)
- `Application.Read.All` e `DelegatedPermissionGrant.Read.All` para a API `Microsoft Graph` (necessário para o enriquecimento de logs do Microsoft Entra relacionados a aplicativos e service principals)
- `Device.Read.All` para a API `Microsoft Graph` (necessário para o enriquecimento de logs do Microsoft Entra relacionados a dispositivos)
- `User.Read.All` para a API `Microsoft Graph` (necessário para obter informações sobre os usuários)
- `UserAuthenticationMethod.Read.All` para a API `Microsoft Graph` (necessário para obter informações sobre os métodos de autenticação dos usuários)
- `Organization.Read.All` para a API `Microsoft Graph` (necessário para obter informações gerais sobre o tenant)
- `Logs de auditoria somente visualização` no `Exchange Online` (necessário para usar o cmdlet `Search-UnifiedAuditLog`)

Opcionalmente (se usar o parâmetro `-subscriptions`):

- Para o subconjunto selecionado de assinaturas: função `Leitor` em `Microsoft.Insights/eventtypes/*` (necessário para obter o log de atividade do Azure Monitor)

Opcionalmente (se usar o parâmetro `-organizations`):

- Para o subconjunto selecionado de assinaturas do Azure DevOps: `Visualizar log de auditoria` (necessário para obter o log de auditoria do Azure DevOps)

Para recuperar logs do Microsoft Entra com a API Microsoft Graph, você precisa de pelo menos um usuário com uma licença [Microsoft Entra ID P1](https://www.microsoft.com/pt-br/security/business/microsoft-entra-pricing). Esta licença pode ser adquirida para um único usuário ou pode estar incluída em alguns planos de licenciamento, como o plano *Microsoft 365 Business Premium*.

## Funções incluídas no módulo

O módulo possui 10 funções:

| **Função**  | **Fonte de dados**  | Retenção | **Desempenho**  |  **Completude** | **Detalhes** |
|---|---|---|---|---|---|
| `Get-O365Full` | Unified Audit Log | 90 dias / 180 dias* |  Ruim | Todo o Unified Audit Log | Por padrão, recupera todo o Unified Audit Log. Isso deve ser usado apenas em um tenant pequeno ou por um curto período de tempo.<br />Você também pode usar este cmdlet para coletar eventos para alguns [tipos de registro](https://learn.microsoft.com/pt-br/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) específicos. |
| `Get-O365Light` | Unified Audit Log | 90 dias / 180 dias* |  Bom | Apenas um subconjunto do Unified Audit Log | Apenas um subconjunto de *operações*, consideradas de interesse, são recuperadas. |
| `Get-O365Defender` | Unified Audit Log | 90 dias / 180 dias* |  Bom | Apenas um subconjunto do Unified Audit Log | Recupera eventos relacionados ao Microsoft Defender para Microsoft 365. Requer pelo menos uma licença [Office 365 E5](https://www.microsoft.com/pt-br/microsoft-365/enterprise/office-365-e5?activetab=pivot:overviewtab) ou um plano de licenciamento que inclua o Microsoft Defender para Office 365. |
| `Get-AADLogs` | Logs do Microsoft Entra | 30 dias |  Bom | Todos os logs do Microsoft Entra | Obtém informações do tenant e todos os logs do Microsoft Entra: logs de entrada e logs de auditoria. |
| `Get-AADApps` | N/D | N/D |  Bom | Completa | Service principals do Microsoft Entra ID e seus aplicativos, oauth2PermissionGrants e appRoleAssignments |
| `Get-AADDevices` | N/D | N/D |  Bom | Completa | Dispositivos do Microsoft Entra ID e seus proprietários/usuários |
| `Get-AADUsers` | N/D | N/D |  Bom | Completa | Usuários do Microsoft Entra ID e seus métodos de autenticação |
| `Search-O365` | Unified Audit Log / Mailbox Audit Log** | 90 dias / 180 dias* | Ruim | Apenas um subconjunto do Unified Audit Log | Pesquisa atividade relacionada a usuários específicos, endereços IP ou textos livres. |
| `Get-AzRMActivityLogs` | Log de atividade do Azure Monitor | 90 dias |  Bom | Todo o log de atividade do Azure Monitor | Obtém todo o log de atividade do Azure Monitor para um subconjunto selecionado de assinaturas. |
| `Get-AzDevOpsActivityLogs` | Log de auditoria do Azure DevOps | 90 dias |  Bom | Todo o log de auditoria do Azure DevOps | Obtém todo o log de auditoria do Azure DevOps para um subconjunto selecionado de organizações do Azure DevOps. |

\* Você pode obter 180 dias de retenção usando Purview, em comparação com os 90 dias padrão usando o Exchange Online.

** Ao pesquisar por usuários, o cmdlet `Search-O365` também pesquisará no Mailbox Audit Log.

Cada função possui uma ajuda baseada em comentários que você pode invocar com o 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

Cada função recebe como parâmetro:

  • uma data de início (-startDate);
  • uma data de fim (-endDate);
  • o identificador da aplicação (-appId), que é obtido ao criar a aplicação;
  • o nome do inquilino (-tenant);
  • o caminho para o certificado no formato PFX (-certificatePath), que é obtido ao criar a aplicação.

Exemplos:

Para legibilidade, assumiremos que:```powershell $appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $tenant = "example.onmicrosoft.com" $certificatePath = "./example.pfx"

root@kitploit:~
Numa situação real, esses parâmetros são obtidos ao [criar a aplicação](#creating-the-application).



Para recuperar os logs do Microsoft Entra dos últimos 30 dias, bem como informações gerais sobre o inquilino:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

Obter service principals do Microsoft Entra e seus application, oauth2PermissionGrant e appRoleAssignment:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-30) Get-AADApps --appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
Obter dispositivos Microsoft Entra e seus proprietários e usuários:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-AADDevices -appId $appId -tenant $tenant -certificatePath $certificatePath

Obter usuários do Microsoft Entra e as configurações de seus métodos de autenticação:```powershell Get-AADUsers -appId $appId -tenant $tenant -certificatePath $certificatePath -authenticationMethods

root@kitploit:~
Recupere eventos do Unified Audit log considerados de interesse dos últimos 30 dias, exceto aqueles relacionados ao Entra ID, que já foram recuperados pelo primeiro comando:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-30)
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -operationsSet "allButAzureAD"

Recuperar eventos de log de auditoria unificada considerados de interesse em uma janela de tempo entre -90 dias e -30 dias a partir de agora:```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 a auditoria de caixa de correio estiver ativada, você também pode recuperar operações de `MailboxLogin` usando o switch dedicado:

_Cuidado com um limite global de 50.000 eventos por pesquisa_```powershell
Get-O365Light -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath -mailboxLogin

Se houver usuários com licenças Office 365 E5 ou se houver um Microsoft Defender for Office 365 Plan no tenant, você pode recuperar logs relacionados ao Microsoft Defender dos últimos 90 dias:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-O365Defender -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
Para recuperar todos os eventos do Unified Audit Log entre a véspera de Natal de 2020 e o Boxing Day de 2020: 

_Cuidado: o desempenho ao usar esse cmdlet é ruim_```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

Você pode usar a função de pesquisa para procurar endereços IP, atividades relacionadas a usuários específicos ou realizar uma pesquisa de texto livre no 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:~
Ao pesquisar por **usuários** específicos, o `Search-O365` também pesquisará no Log de Auditoria da Caixa de Correio. Isso ocorre porque, dependendo do nível de licença e das configurações do usuário, alguns logs da caixa de correio podem não estar presentes no Log de Auditoria Unificada.




Para recuperar todos os logs de atividade do Azure Resource Manager das assinaturas às quais o aplicativo tem acesso:```powershell
$endDate = Get-Date
$startDate = $endDate.AddDays(-90)
Get-AzRMActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

Para recuperar todos os logs de atividade do Azure DevOps das organizações às quais o aplicativo tem acesso:```powershell $endDate = Get-Date $startDate = $endDate.AddDays(-90) Get-AzDevOpsActivityLogs -startDate $startDate -endDate $endDate -appId $appId -tenant $tenant -certificatePath $certificatePath

root@kitploit:~
## Ficheiros gerados

Todos os ficheiros gerados estão em formato JSON.

_A execução de vários cmdlets que utilizam o Purview e que escrevem no mesmo ficheiro de saída pode resultar num JSON inválido devido a uma concatenação "ingénua"_

- `Get-AADApps` criará na pasta `azure_ad_apps`:
  - um ficheiro JSON contendo as aplicações existentes e eliminadas: `AADApps_example.onmicrosoft.com_applications_raw.json`;
  - um ficheiro JSON contendo os service principals existentes e eliminados: `AADApps_example.onmicrosoft.com_service_principals_raw.json`;
  - um ficheiro JSON contendo os service principals enriquecidos: `AADApps_example.onmicrosoft.com.json`.

- `Get-AADDevices` criará na pasta `azure_ad_devices`:
  - um ficheiro JSON contendo os dispositivos existentes e eliminados: `AADDevices_example.onmicrosoft.com_devices_raw.json`;
  - um ficheiro JSON contendo os dispositivos enriquecidos: `AADDevices_example.onmicrosoft.com.json`.

- `Get-AADUsers` criará na pasta `azure_ad_users`:
  - um ficheiro JSON contendo os utilizadores existentes e eliminados: `AADUsers_example.onmicrosoft.com_users_raw.json`;
  - um ficheiro JSON contendo as definições de autenticação dos utilizadores: `AADUsers_example.onmicrosoft.com_users_settings_raw.json`;
  - um ficheiro JSON contendo os utilizadores enriquecidos: `AADUsers_example.onmicrosoft.com.json`.

- `Get-AADLogs` criará:
  - na pasta `azure_ad_tenant`:
    - um ficheiro JSON contendo informações gerais sobre o tenant: `AADTenant_example.onmicrosoft.com.json`.

  - na pasta `azure_ad_audit`:
    - ficheiros JSON contendo os registos de auditoria do Microsoft Entra: `AADAuditLog_example.onmicrosoft.com_YYYY-MM-DD.json`.

  - na pasta `azure_ad_signin`:
    - ficheiros JSON contendo os registos de início de sessão do Microsoft Entra: `YYYY-MM-DD/AADSigninLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzRMActivityLogs` criará:
  - na pasta `azure_rm_subscriptions`:
    - um ficheiro JSON contendo informações gerais sobre as subscrições: `AzRMsubscriptions_example.onmicrosoft.com.json`.

  - na pasta `azure_rm_activity`:
    - ficheiros JSON contendo os registos de Atividade do Azure Monitor: `YYYY-MM-DD/AzRM_example.onmicrosoft.com_%SubscriptionID%_YYYY-MM-DD_HH-00-00.json`.

- `Get-AzDevOpsActivityLogs` criará:
  - na pasta `azure_DevOps_orgs`:
    - um ficheiro JSON contendo informações gerais sobre as organizações do Azure DevOps: `AzdevopsOrgs_example.onmicrosoft.com.json`.

  - na pasta `azure_DevOps_activity`:
    - ficheiros JSON contendo os registos de auditoria do Azure DevOps: `YYYY-MM-DD/AzDevOps_example.onmicrosoft.com_%AzureDevOpsOrg%_YYYY-MM-DD_HH-00-00.json`.

- `Get-O365Full` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
  - ficheiros JSON contendo os registos de Auditoria Unificada: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview);
  - ficheiros JSON contendo os registos de Auditoria Unificada para os [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) especificados: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).

- `Get-O365Light` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
  - ficheiros JSON contendo os registos de Auditoria Unificada para um subconjunto de *operações*, consideradas de interesse: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).
- `Get-O365Defender` criará na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
  - ficheiros JSON contendo os registos de Auditoria Unificada para os [RecordTypes](https://learn.microsoft.com/en-us/office/office-365-management-api/office-365-management-activity-api-schema#enum-auditlogrecordtype---type-edmint32) associados ao Defender: `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RecordType%.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview).
- `Search-O365` criará:
  - na pasta `O365_unified_audit_logs` (respetivamente `O365_unified_audit_logs_purview` ao utilizar o Purview):
    - ficheiros JSON contendo os registos de Auditoria Unificada para o `RequestType` especificado (`FreeText`, `IPAddresses` ou `UserIds`): `YYYY-MM-DD/UnifiedAuditLog_example.onmicrosoft.com_YYYY-MM-DD_HH-00-00_%RequestType%_YYYY-MM-DD-HH-MM-SS.json` (respetivamente `*/UnifiedAuditLogPurview_*` ao utilizar o Purview). `YYYY-MM-DD-HH-MM-SS` representa a hora em que a recolha foi efetuada. Ao pesquisar por `FreeText`, é adicionado um `_%i` extra no final, que indica que este é o resultado da pesquisa do `%i`-ésimo texto livre.

  - na pasta `Exchange_mailbox_audit_logs`:
    - ficheiros JSON contendo os registos de Auditoria de Caixa de Correio (apenas ao pesquisar por 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` representa a hora em que a recolha foi efetuada. `%UserID%` indica que este é o resultado da pesquisa deste UserID.

A execução das várias funções gerará uma estrutura de diretórios semelhante a esta:```
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
│   │       [...]
│   │
│   ├───[...]
Baixar ferramenta
Fonte de dados / EndpointRetençãoDesempenhoEscopo
Unified Audit Log / Exchange Online PowerShell90 diasRuimTodos os logs do Microsoft 365 (incluindo Entra)
Unified Audit Log / Purview180 diasBomTodos os logs do Microsoft 365 (incluindo Entra)
Unified Audit Log / Office 365 Management API *7 diasBomTodos os logs do Microsoft 365 (incluindo Entra)
Logs do Microsoft Entra / Microsoft Graph PowerShell30 diasBomApenas logs de entrada e auditoria do Entra
Logs do Microsoft Entra / Microsoft Graph REST API30 diasBomApenas logs de entrada e auditoria do Entra