
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
Este comando:
AggregatedResultsFlushSize especifica los lotes de registros que serán procesados por los playbooks posteriores. Estamos diciéndole a AzureHunter que procese el lote de registros una vez que la cantidad total alcance 5000. De esta manera, puede obtener resultados sobre la marcha, sin tener que esperar horas hasta que se exporte un gran intervalo de registros a archivos CSV.Suponiendo que ha exportado registros de UnifiedAuditLog a un archivo CSV, puede hacer:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
Puede ejecutar más de un playbook separándolos por comas, se ejecutarán secuencialmente:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
Suponiendo que ha exportado un Informe Resumen de eDiscovery a un archivo CSV, puede hacer:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
Opcionalmente, podemos pasar algunos parámetros al playbook de la siguiente manera:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
El parámetro "CsvRecordsBatchSize" le indicará al playbook que vacíe los registros al disco en lotes de 700 registros.
Desde las secuelas del Compromiso de la Cadena de Suministro de SolarWinds han surgido muchas herramientas de las profundas forjas de los ciberforenses, cuidadosamente desarrolladas por ninjas cibernéticos. Estas herramientas suelen ayudarle a realizar forense en la nube en Azure. Mi intención con AzureHunter no es añadir más ruido a este espacio ya saturado, sin embargo, me encontré en la necesidad de abordar algunas carencias que he observado en algunas de las herramientas del espacio (puede que me equivoque, ya que hay una proliferación de herramientas y no las conozco todas...):
UnifiedAuditLog. Esta API es muy inestable e inconsistente al exportar grandes cantidades de datos. Quería desarrollar una interfaz que sea tolerante a fallos (suficientemente) para abordar algunos de estos problemas, centrándome únicamente en el UnifiedAuditLog, ya que este es el artefacto de Azure que contiene los registros de actividad más relevantes y detallados para usuarios, aplicaciones y servicios.Playbooks extensibles. Quería idear un marco simple que ayudara a la comunidad a crear y compartir nuevos playbooks para extraer diferentes tipos de significado de los mismos datos.Si, sin embargo, está buscando una aplicación más rica en funciones y madura para Forense en la Nube de Azure, le sugiero que eche un vistazo al excelente trabajo realizado por los expertos en ciberseguridad que crearon las siguientes aplicaciones:
Estoy seguro de que hay una lista más extensa de herramientas, pero estas son las que pude recordar. No dude en sugerir más.
Para más información
¡Gracias a todas las personas que apoyan este y otros proyectos de Código Abierto! Están ayudando a tipos como yo a caminar el camino del ciberguerrero y a entregar herramientas de calidad a la comunidad :)