Az - 监控

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Entra ID - 日志

Entra ID 有 3 种可用的日志类型:

  • Sign-in Logs:Sign-in Logs 记录每一次身份验证尝试,无论成功或失败。它们提供诸如 IP 地址、地点、设备信息以及应用的条件访问策略等细节,对于监控用户活动和检测可疑登录行为或潜在安全威胁至关重要。
  • Audit Logs:Audit Logs 提供了在你的 Entra ID 环境中所做所有更改的记录。它们会捕获对用户、组、角色或策略等的更新。这些日志对于合规性和安全调查非常重要,因为它们让你能够审查谁在何时做了什么更改。
  • Provisioning Logs:Provisioning Logs 提供有关通过第三方服务(例如本地目录或 SaaS 应用)在你的租户中配置的用户的信息。这些日志帮助你了解身份信息是如何同步的。

Warning

注意:在免费版本中这些日志只会保存 7 天,在 P1/P2 版本中为 30 天,并且针对风险性登录活动的安全信号会额外保留 60 天。但是,即便是全局管理员也无法提前修改或删除这些日志

Entra ID - 日志系统

  • Diagnostic Settings:Diagnostic Settings 指定你想从资源收集的一组平台日志类别和/或指标,以及你希望将它们流向的一个或多个目标。目标会产生正常的使用费用。了解有关不同日志类别及这些日志内容的更多信息。
  • Destinations:
  • Analytics Workspace:通过 Azure Log Analytics 进行调查并创建警报。
  • Storage account:用于静态分析和备份。
  • Event hub:将数据流式传输到外部系统,例如第三方 SIEM。
  • Monitor partner solutions:Azure Monitor 与其他非 Microsoft 监控平台之间的专门集成。
  • Workbooks:Workbooks 将文本、log queries、指标和参数组合成丰富的交互式报告。
  • Usage & Insights:有助于查看 Entra ID 中最常见的活动

Azure Monitor

以下是 Azure Monitor 的主要功能:

  • Activity Logs:Azure Activity Logs 捕获订阅级别的事件和管理操作,帮助你概览对资源所做的更改和采取的操作。
  • Activily logs 无法被修改或删除。
  • Change Analysis:Change Analysis 自动检测并可视化你 Azure 资源的配置和状态更改,帮助诊断问题并跟踪随时间的修改。
  • Alerts:来自 Azure Monitor 的 Alerts 是在满足指定条件或阈值时触发的自动通知。
  • Workbooks:Workbooks 是 Azure Monitor 中交互式、可定制的仪表板,使你能够组合并可视化来自各种来源的数据以便进行全面分析。
  • Investigator:Investigator 帮助你深入日志数据和警报以进行深度分析并识别事件根因。
  • Insights:Insights 提供分析、性能指标和可执行的建议(例如 Application Insights 或 VM Insights 中的那些),帮助你监控并优化应用和基础设施的健康与效率。

Log Analytics Workspaces

Log Analytics workspaces 是 Azure Monitor 中的集中存储库,你可以在其中收集、分析和可视化来自 Azure 资源和本地环境的日志与性能数据。要点如下:

  • 集中数据存储:它们作为存放诊断日志、性能指标和由你的应用与服务生成的自定义日志的中心位置。
  • 强大的查询能力:你可以使用 Kusto Query Language (KQL) 运行查询来分析数据、生成洞察并排查问题。
  • 与监控工具的集成:Log Analytics workspaces 与各种 Azure 服务(例如 Azure Monitor、Azure Sentinel 和 Application Insights)集成,允许你创建仪表板、设置警报并获得对环境的全面视图。

总之,Log Analytics workspace 对于在 Azure 中进行高级监控、排错和安全分析是必不可少的。

你可以从资源的 diagnostic settings 配置该资源将数据发送到 analytics workspace。

Graph vs ARM 日志可见性(对 OPSEC/hunting 有用)

  • Microsoft Graph Activity Logs 默认未启用。启用并导出它们(Event Hubs/Log Analytics/SIEM)以查看 Graph 读取调用。像 AzureHound 这样的工具会对 /v1.0/organization 执行一个预检 GET,该调用会出现在这里;观察到的默认 UA:azurehound/v2.x.x。
  • Entra ID 非交互式 sign-in 日志记录由脚本/工具使用的身份平台身份验证(login.microsoftonline.)。
  • ARM 控制平面读取/列举(HTTP GET)操作通常不会写入 Activity Logs。读取操作的可见性来自资源的 Diagnostic Settings,仅针对 data-plane 端点(例如 .blob.core.windows.net、.vault.azure.net),而不会来自针对 management.azure. 的 ARM 控制平面调用。
  • Microsoft Defender XDR Advanced Hunting GraphApiAuditEvents (preview) 可以暴露 Graph 调用和令牌标识符,但可能省略 UserAgent 且默认保留期有限。

在针对 AzureHound 进行 hunting 时,应将 Entra sign-in 日志与 Graph Activity Logs 在会话 ID、IP、用户/对象 ID 上进行关联,并查找 Graph 请求的突发流量以及缺乏 Activity Log 覆盖的 ARM 管理调用。

Enumeration

Entra ID

# Get last 10 sign-ins
az rest --method get --uri 'https://graph.microsoft.com/v1.0/auditLogs/signIns?$top=10'

# Get last 10 audit logs
az rest --method get --uri 'https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$top=10'

# Get last 10 provisioning logs
az rest --method get --uri ‘https://graph.microsoft.com/v1.0/auditLogs/provisioning?$top=10’

# Get EntraID Diagnostic Settings
az rest --method get --uri "https://management.azure.com/providers/microsoft.aadiam/diagnosticSettings?api-version=2017-04-01-preview"

# Get Entra ID Workbooks
az rest \
--method POST \
--url "https://management.azure.com/providers/microsoft.resourcegraph/resources?api-version=2021-03-01" \
--headers '{"commandName": "AppInsightsExtension.GetWorkbooksListArg"}' \
--body '{
"subscriptions": ["9291ff6e-6afb-430e-82a4-6f04b2d05c7f"],
"query": "where type =~ \"microsoft.insights/workbooks\" \n| extend sourceId = tostring(properties.sourceId) \n| where sourceId =~ \"Azure Active Directory\" \n| extend DisplayName = tostring(properties.displayName) \n| extend WorkbookType = tostring(properties.category), LastUpdate = todatetime(properties.timeModified) \n| where WorkbookType == \"workbook\"\n| project DisplayName, name, resourceGroup, kind, location, id, type, subscriptionId, tags, WorkbookType, LastUpdate, identity, properties",
"options": {"resultFormat": "table"},
"name": "e4774363-5160-4c09-9d71-2da6c8e3b00a"
}' | jq '.data.rows'

Azure Monitor

# Get last 10 activity logs
az monitor activity-log list --max-events 10

# Get Resource Diagnostic Settings
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.DocumentDb/databaseAccounts/<db-name>/providers/microsoft.insights/diagnosticSettings?api-version=2021-05-01-preview"

# Get Entra ID Workbooks
az rest \
--method POST \
--url "https://management.azure.com/providers/microsoft.resourcegraph/resources?api-version=2021-03-01" \
--headers '{"commandName": "AppInsightsExtension.GetWorkbooksListArg"}' \
--body '{
"content": {},
"commandName": "AppInsightsExtension.GetWorkbooksListArg"
}'

# List Log Analytic groups
az monitor log-analytics workspace list --output table

# List alerts
az monitor metrics alert list --output table
az monitor activity-log alert list --output table

参考资料

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks