AWS - CloudWatch Enum
学习和实践 AWS 黑客技能:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技能:
HackTricks 培训 GCP 红队专家 (GRTE)
CloudWatch
CloudWatch 收集监控和运营数据,以日志/指标/事件的形式提供对 AWS 资源、应用程序和服务的统一视图。 CloudWatch 日志事件每行有256KB 的大小限制。 它可以设置高分辨率警报,将日志和指标并排可视化,执行自动操作,解决问题,并发现优化应用程序的见解。
例如,您可以监视来自 CloudTrail 的日志。监视的事件包括:
安全组和 NACL 的更改
启动、停止、重启和终止 EC2 实例
IAM 和 S3 中安全策略的更改
AWS 管理控制台登录尝试失败
导致授权失败的 API 调用
在 CloudWatch 中搜索的筛选器:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
关键概念
命名空间
命名空间是 CloudWatch 指标的容器。它有助于对指标进行分类和隔离,使其更易于管理和分析。
示例:AWS/EC2 用于 EC2 相关指标,AWS/RDS 用于 RDS 指标。
指标
指标是随时间收集的数据点,代表 AWS 资源的性能或利用率。指标可以从 AWS 服务、自定义应用程序或第三方集成中收集。
示例:CPUUtilization、NetworkIn、DiskReadOps。
维度
维度是指标的键值对。它们有助于唯一标识指标并提供附加上下文,最多可与指标关联 30 个维度。维度还允许根据特定属性过滤和聚合指标。
示例:对于 EC2 实例,维度可能包括 InstanceId、InstanceType 和 AvailabilityZone。
统计
统计是对指标数据执行的数学计算,以便随时间总结数据。常见统计包括平均值、总和、最小值、最大值和样本计数。
示例:计算一小时内的平均 CPU 利用率。
单位
单位是与指标关联的测量类型。单位有助于为指标数据提供上下文和含义。常见单位包括百分比、字节、秒、计数。
示例:CPUUtilization 可能以百分比为单位,而 NetworkIn 可能以字节为单位。
CloudWatch 功能
仪表板
CloudWatch 仪表板提供可定制的AWS CloudWatch 指标视图。可以创建和配置仪表板以可视化数据并在单个视图中监视资源,结合来自各种 AWS 服务的不同指标。
关键功能:
小部件:仪表板的构建块,包括图形、文本、警报等。
自定义:布局和内容可定制以适应特定的监控需求。
示例用例:
显示整个 AWS 环境的关键指标的单个仪表板,包括 EC2 实例、RDS 数据库和 S3 存储桶。
指标流和指标数据
AWS CloudWatch 中的指标流使您能够将 CloudWatch 指标连续流式传输到您选择的目的地,实时性接近。这对于使用 AWS 之外的工具进行高级监控、分析和自定义仪表板特别有用。
指标数据指的是正在流式传输的实际测量值或数据点。这些数据点代表 AWS 资源的各种指标,如 CPU 利用率、内存使用情况等。
示例用例:
将实时指标发送到第三方监控服务进行高级分析。
将指标存档在 Amazon S3 存储桶中,以进行长期存储和合规性。
警报
CloudWatch 警报监视您的指标并根据预定义阈值执行操作。当指标违反阈值时,警报可以执行一个或多个操作,如通过 SNS 发送通知、触发自动扩展策略或运行 AWS Lambda 函数。
关键组件:
阈值:触发警报的值。
评估周期:评估数据的周期数。
达到警报的数据点:需要触发警报的达到阈值的周期数。
操作:当触发警报状态时发生的操作(例如,通过 SNS 发送通知)。
示例用例:
监控 EC2 实例的 CPU 利用率,如果连续 5 分钟超过 80%,则通过 SNS 发送通知。
异常检测器
异常检测器使用机器学习自动检测指标中的异常。您可以将异常检测应用于任何 CloudWatch 指标,以识别可能指示问题的与正常模式偏离的模式。
关键组件:
模型训练:CloudWatch 使用历史数据训练模型并建立正常行为的模式。
异常检测带:指标值预期范围的可视表示。
示例用例:
检测 EC2 实例中不寻常的 CPU 利用率模式,这可能表明安全漏洞或应用程序问题。
洞察规则和托管洞察规则
洞察规则允许您使用强大的数学表达式在您的指标数据中识别趋势、检测峰值或其他感兴趣的模式,以定义应采取行动的条件。这些规则可以帮助您识别资源性能和利用率中的异常或异常行为。
托管洞察规则是由 AWS 提供的预配置洞察规则。它们旨在监视特定 AWS 服务或常见用例,并且可以在无需详细配置的情况下启用。
示例用例:
监控 RDS 性能:启用一个用于 Amazon RDS 的托管洞察规则,监视 CPU 利用率、内存使用情况和磁盘 I/O 等关键性能指标。如果这些指标中有任何超出安全操作阈值的情况,规则可以触发警报或自动化缓解操作。
CloudWatch 日志
允许聚合和监视来自应用程序和系统的日志,包括来自 AWS 服务(包括 CloudTrail)和应用程序/系统的日志(CloudWatch 代理可安装在主机上)。日志可以根据日志组设置无限期地存储,并且可以导出。
元素:
日志组 | 共享相同保留、监视和访问控制设置的一组日志流 |
日志流 | 具有相同来源的日志事件序列 |
订阅过滤器 | 定义与特定日志组中的事件匹配的过滤模式,将其发送到 Kinesis Data Firehose 流、Kinesis 流或 Lambda 函数 |
### CloudWatch 监控与事件 |
CloudWatch 基本 每 5 分钟聚合一次数据(详细 每 1 分钟)。聚合后,它会 检查警报的阈值,以确定是否需要触发警报。 在这种情况下,CloudWatch 可以准备发送事件并执行一些自动操作(AWS Lambda 函数,SNS 主题,SQS 队列,Kinesis 流)
代理安装
您可以在您的机器/容器内安装代理,自动将日志发送回 CloudWatch。
创建 一个 角色 并将其 附加 到具有允许 CloudWatch 从实例收集数据的权限的 实例 上,另外还可以与 AWS 系统管理器 SSM 交互(CloudWatchAgentAdminPolicy 和 AmazonEC2RoleforSSM)
下载 并 安装 代理到 EC2 实例(https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)。您可以从 EC2 内部下载,或者使用 AWS 系统管理器自动安装,选择包 AWS-ConfigureAWSPackage
配置 并 启动 CloudWatch 代理
一个日志组有许多流。一个流有许多事件。在每个流内部,事件保证按顺序排列。
后渗透 / 绕过
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
拥有这些权限的攻击者可以显著破坏组织的监控和警报基础设施。通过删除现有警报,攻击者可以禁用关键警报,通知管理员关键性能问题、安全漏洞或操作失败。此外,通过创建或修改度量警报,攻击者还可以用虚假警报误导管理员或消除合法警报,有效掩盖恶意活动并阻止对实际事件的及时响应。
此外,拥有 cloudwatch:PutCompositeAlarm
权限的攻击者可以创建一个复合警报的循环或循环,其中复合警报 A 依赖于复合警报 B,而复合警报 B 也依赖于复合警报 A。在这种情况下,无法删除循环中的任何复合警报,因为始终还有一个依赖于您要删除的警报的复合警报。
以下示例显示如何使度量警报失效:
此度量警报监视特定 EC2 实例的平均 CPU 利用率,每 300 秒评估一次该度量,并需要 6 个评估周期(总共 30 分钟)。如果平均 CPU 利用率在这些周期中至少 4 个周期超过 60%,则警报将触发并发送通知到指定的 SNS 主题。
通过将阈值修改为大于 99%,将周期设置为 10 秒,将评估周期设置为 8640(因为 8640 个 10 秒周期等于 1 天),将数据点设置为警报也设置为 8640,需要 CPU 利用率在整个 24 小时内每 10 秒超过 99% 才能触发警报。
潜在影响:对关键事件缺乏通知,可能存在未被检测到的问题,误报警报,抑制真实警报,并可能错过对真实事件的检测。
cloudwatch:DeleteAlarmActions
、cloudwatch:EnableAlarmActions
、cloudwatch:SetAlarmState
cloudwatch:DeleteAlarmActions
、cloudwatch:EnableAlarmActions
、cloudwatch:SetAlarmState
通过删除警报操作,攻击者可以阻止在达到警报状态时触发关键警报和自动响应,例如通知管理员或触发自动扩展活动。不当地启用或重新启用警报操作也可能导致意外行为,无论是重新激活先前禁用的操作,还是修改触发哪些操作,可能导致混乱和误导的事件响应。
此外,拥有权限的攻击者可以操纵警报状态,能够创建虚假警报以分散和混淆管理员的注意力,或者消除真实警报以隐藏正在进行的恶意活动或关键系统故障。
如果在复合警报上使用**
SetAlarmState
**,则不能保证复合警报会返回到其实际状态。只有在其任何子警报改变状态时,它才会返回到其实际状态。如果更新其配置,它也会重新评估。
潜在影响:对关键事件缺乏通知,可能存在未被检测的问题,误报警报,抑制真实警报并可能错过对真实事件的检测。
cloudwatch:DeleteAnomalyDetector
,cloudwatch:PutAnomalyDetector
cloudwatch:DeleteAnomalyDetector
,cloudwatch:PutAnomalyDetector
攻击者可以破坏检测和响应指标数据中异常模式或异常的能力。通过删除现有的异常检测器,攻击者可以禁用关键的警报机制;通过创建或修改它们,可以配置错误或制造虚假阳性,以分散注意力或淹没监控。
以下示例显示如何使指标异常检测器失效。该指标异常检测器监视特定 EC2 实例的平均 CPU 利用率,只需添加带有所需时间范围的“ExcludedTimeRanges”参数,就足以确保异常检测器在该期间不分析或警报任何相关数据。
潜在影响:对检测异常模式或安全威胁产生直接影响。
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
攻击者可以通过创建、修改或删除仪表板来危害组织的监控和可视化能力。这些权限可以被利用来削弱对系统性能和健康状况的关键可见性,修改仪表板以显示不正确的数据或隐藏恶意活动。
潜在影响:监控可见性丧失和误导性信息。
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
洞察规则用于检测异常、优化性能和有效管理资源。通过删除现有的洞察规则,攻击者可以移除关键的监控能力,使系统无法发现性能问题和安全威胁。此外,攻击者可以创建或修改洞察规则以生成误导性数据或隐藏恶意活动,导致错误的诊断和运维团队做出不当响应。
潜在影响:难以检测和应对性能问题和异常,导致决策失误,可能隐藏恶意活动或系统故障。
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
通过禁用关键的洞察规则,攻击者可以有效地使组织对关键性能和安全指标视而不见。相反,通过启用或配置误导性规则,可能会生成虚假数据,制造噪音,或隐藏恶意活动。
潜在影响:运维团队混淆,导致对实际问题的延迟响应和基于虚假警报的不必要操作。
cloudwatch:DeleteMetricStream
,cloudwatch:PutMetricStream
,cloudwatch:PutMetricData
cloudwatch:DeleteMetricStream
,cloudwatch:PutMetricStream
,cloudwatch:PutMetricData
拥有**cloudwatch:DeleteMetricStream
,cloudwatch:PutMetricStream
**权限的攻击者可以创建和删除度量数据流,从而危及安全性、监控和数据完整性:
创建恶意流:创建度量流以将敏感数据发送到未经授权的目的地。
资源操纵:创建具有过多数据的新度量流可能产生大量噪音,导致错误警报,掩盖真实问题。
监控中断:删除度量流,攻击者将中断监控数据的持续流动。这样,他们的恶意活动将被有效隐藏。
同样,拥有**cloudwatch:PutMetricData
**权限,可以向度量流添加数据。这可能导致拒绝服务攻击,因为添加了大量不正确的数据,使其变得完全无用。
例子:向特定的 EC2 实例添加相应于 70% CPU 利用率的数据:
潜在影响:监控数据流中断,影响异常和事件检测,资源操纵以及由于创建过多指标流而导致成本增加。
cloudwatch:StopMetricStreams
,cloudwatch:StartMetricStreams
cloudwatch:StopMetricStreams
,cloudwatch:StartMetricStreams
攻击者可以控制受影响的指标数据流的流动(如果没有资源限制,则是每个数据流)。通过权限**cloudwatch:StopMetricStreams
**,攻击者可以通过停止关键指标流来隐藏其恶意活动。
潜在影响:监控数据流中断,影响异常和事件的检测。
cloudwatch:TagResource
,cloudwatch:UntagResource
cloudwatch:TagResource
,cloudwatch:UntagResource
攻击者可以向CloudWatch资源(目前仅限警报和Contributor Insights规则)添加、修改或移除标签。这可能会破坏基于标签的组织访问控制策略。
潜在影响:破坏基于标签的访问控制策略。
参考资料
学习并练习AWS黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习并练习GCP黑客技术:
HackTricks 培训 GCP 红队专家 (GRTE)
Last updated