El portal de Purview (Auditoría → Búsqueda) te permite buscar en el Registro Unificado de Auditoría y exportar los resultados a CSV. El evento completo se encuentra en una columna, AuditData, como un blob JSON. Para obtener JSON limpio, un evento por línea, utiliza Exchange Online PowerShell y Search-UnifiedAuditLog. El script está abajo. La retención estándar de auditoría es de 180 días; Auditoría (Premium) se conserva por un año por defecto.
El Registro Unificado de Auditoría cubre Exchange, SharePoint, OneDrive, Teams y la actividad de administración en un solo lugar. En un compromiso de correo electrónico empresarial, es donde se muestran las reglas de bandeja de entrada, el reenvío y las descargas masivas. Prime Core tiene 79 reglas de detección para los datos de auditoría de Microsoft 365, mapeadas a 33 técnicas de MITRE ATT&CK. Entre ellas: reglas de reenvío que desvían correo (T1114.003), permisos adicionales de buzón (T1098.002) y datos extraídos de SharePoint (T1213.002).
Antes de comenzar
¿Está la auditoría activada? Lo está por defecto para la mayoría de los inquilinos, pero revisa:
Connect-ExchangeOnline
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
True es lo que necesitas. Si es False, nada fue registrado, y activarlo no rellenará retrospectivamente.
Roles. Necesitas el rol de Registros de Auditoría o Registros de Auditoría de Solo Vista. También necesitas el módulo ExchangeOnlineManagement (Install-Module ExchangeOnlineManagement).
Latencia. Los eventos no aparecen instantáneamente. La mayoría se muestran dentro de una o dos horas, algunos tardan más. Si estás buscando algo de esta mañana, puede que aún no sea buscable.
Exportar con PowerShell
Search-UnifiedAuditLog devuelve como máximo 5,000 registros por llamada. Con un ID de sesión y ReturnLargeSet, puedes paginar hasta 50,000 por búsqueda. Este bucle lo hace y escribe cada AuditData, ya en JSON, como una línea:
$session = [guid]::NewGuid().ToString()
$out = "ual_2026-10-19.jsonl"
do {
$batch = Search-UnifiedAuditLog -StartDate "2026-10-19 00:00" -EndDate "2026-10-20 00:00" `
-SessionId $session -SessionCommand ReturnLargeSet -ResultSize 5000
$batch | ForEach-Object { $_.AuditData } | Add-Content $out
} while ($batch.Count -eq 5000)
El registro almacena el tiempo en UTC. Tenlo en cuenta al establecer la ventana.
Qué buscar
| Operación | Por qué importa |
|---|---|
| New-InboxRule, Set-InboxRule, UpdateInboxRules | Reglas que reenvían, mueven o eliminan correo; verifica los parámetros en AuditData |
| Set-Mailbox con ForwardingSmtpAddress | Reenvío a nivel de buzón a una dirección externa |
| Add-MailboxPermission, Add-RecipientPermission | Alguien obteniendo acceso a otro buzón |
| MailItemsAccessed | Qué mensajes fueron realmente leídos; clave para delimitar una brecha |
| FileDownloaded, FileSyncDownloadedFull bursts | Descarga masiva de SharePoint o OneDrive |
| Consentimiento a una aplicación | Una aplicación maliciosa obtuvo acceso al correo o a los archivos |
La secuencia clásica de BEC: un inicio de sesión desde una nueva ubicación, luego en minutos una regla de bandeja de entrada que mueve respuestas del equipo de finanzas a una carpeta oculta.
Cargar, sanitizar y revisar en LogTotal
- Cargar. Abrir logtotal.com y suelta el archivo .jsonl.
- Sanitizar.
- Revisar.
Cuando sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| Search-UnifiedAuditLog no es reconocido | No conectado a Exchange Online PowerShell | Conéctate a Exchange-Online primero |
| Sin resultados | Auditoría desactivada, eventos demasiado recientes, o fuera de retención | Revisa la ingestión; espera; verifica tu nivel de auditoría |
| Exactamente 5,000 resultados | Límite por llamada alcanzado sin una sesión | Usa el bucle de sesión de arriba |
| Atascado en 50,000 | Límite de sesión | Divide la ventana en piezas más pequeñas |
| Acceso denegado | Rol de auditoría faltante | Solicita los Registros de Auditoría de Solo Vista |
FAQ
¿No es esto lo mismo que los registros de inicio de sesión de Entra?
Se superponen: el UAL tiene eventos de UserLoggedIn. Pero para detalles de autenticación (MFA, Acceso Condicional, riesgo), los registros de inicio de sesión de Entra son mucho más ricos. Exporta ambos.
¿Qué hay del API de Actividad de Gestión?
Esa es la ruta para la colección continua en un SIEM. Para una investigación única, PowerShell es más sencillo.