
Un módulo de PowerShell para forense en la nube que ejecuta playbooks de caza de amenazas en datos de Azure y O365

Un módulo de PowerShell para ejecutar playbooks de caza de amenazas sobre datos de Azure y O365 con fines de Forense en la Nube.
Los siguientes roles son necesarios en Exchange Online para poder tener acceso de solo lectura al UnifiedAuditLog: View-Only Audit Logs o Audit Logs.
Estos roles se asignan por defecto al grupo de roles Compliance Management en el Centro de Administración de Exchange.
NOTA: si usted es un analista de seguridad, respondedor de incidentes o cazador de amenazas y su organización NO le está dando acceso de solo lectura a estos registros de auditoría, debe cuestionarse seriamente cuál es su estrategia de detección y respuesta.
Más información:
NOTA: su administrador puede verificar estos requisitos ejecutando
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"en el shell de la nube de su tenencia de Azure o en una instancia local de PowerShell conectada a Azure.
Asegúrese de tener ExchangeOnlineManagement (EXOv2) instalado. Puede encontrar instrucciones en la web o ir directamente a mi pequeña base de conocimiento sobre cómo hacerlo en the soc analyst scrolls
Import-Module .\source\AzureHunter.psd1Todo lo que necesita hacer es:
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
El registro de auditoría unificado contiene actividades de usuarios, grupos, aplicaciones, dominios y directorios realizadas en el centro de administración de Microsoft 365 o en el portal de administración de Azure. Para ver una lista completa de eventos de Azure AD, consulte la lista de RecordTypes.
El UnifiedAuditLog es una gran fuente de información forense en la nube, ya que contiene una gran cantidad de datos sobre múltiples tipos de operaciones en la nube como ExchangeItems, SharePoint, Azure AD, OneDrive, Gobierno de Datos, Prevención de Pérdida de Datos, Alertas de Windows Defender y eventos de Cuarentena, eventos de Inteligencia de Amenazas en Microsoft Defender para Office 365, ¡y la lista continúa!
AzureHunter implementa una lógica útil para asegurar que se extraiga y exporte la mayor densidad de registros de los Registros de Auditoría de Azure y O365. Para ello, ejecutamos dos operaciones diferentes por cada ciclo (lote):

Se recomienda ejecutar Connect-ExchangeOnline antes de ejecutar cualquier comando de AzureHunter. El programa verifica si hay una sesión remota activa e intenta conectarse, pero algunas versiones de PowerShell no lo permiten y debe hacerlo usted mismo de todas formas.
AzureHunter tiene dos comandos principales: Search-AzureCloudUnifiedLog e Invoke-AzHunterPlaybook.
El propósito de Search-AzureCloudUnifiedLog es implementar una lógica compleja para asegurar que se extraiga el mayor porcentaje posible de registros de UnifiedAuditLog de Azure. Por defecto, exportará los registros extraídos y deduplicados a un archivo CSV.
El propósito de Invoke-AzHunterPlaybook es proporcionar una interfaz flexible para los playbooks de caza almacenados en la carpeta playbooks. Estos playbooks están diseñados para que cualquiera pueda contribuir con sus propios análisis e ideas. Hasta ahora, solo se han desarrollado dos playbooks muy simples: AzHunter.Playbook.Exporter y AzHunter.Playbook.LogonAnalyser. El Exporter se encarga de exportar registros después de aplicar operaciones de deduplicación y ordenación a los datos. El LogonAnalyser está en modo beta y extrae eventos donde la propiedad Operations es UserLoggedIn. Es un ejemplo de lo que se puede hacer con los playbooks y de lo fácil que es construir uno.
Al ejecutar Search-AzureCloudUnifiedLog, puede pasar una lista de playbooks para ejecutar por lote de registros. Search-AzureCloudUnifiedLog pasará el lote a los playbooks a través de Invoke-AzHunterPlaybook.
Finalmente, Invoke-AzHunterPlaybook se puede usar de forma independiente. Si tiene una exportación de registros de UnifiedAuditLog, puede cargarlos en un Array de PowerShell y pasarlos a este comando especificando los playbooks relevantes.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose