New

The executive guide to generative AI

Read more

使用外部 KMS 密钥的 AWS S3 对象加密

编辑

使用外部 KMS 密钥的 AWS S3 对象加密

编辑

识别在 S3 存储桶中使用来自外部账户的 AWS KMS 密钥进行加密的 CopyObject 事件。 拥有访问权限的攻击者可能会利用配置错误的 S3 存储桶和适当的权限,使用外部 KMS 密钥对对象进行加密,从而阻止受害者访问他们自己的数据。

规则类型: esql

规则索引: 无

严重性: 中

风险评分: 47

运行频率: 5 分钟

搜索索引范围: now-9m ( 日期数学格式,另请参阅 额外回溯时间)

每次执行的最大警报数: 100

参考资料:

标签:

  • 域: 云
  • 数据源: AWS
  • 数据源: Amazon Web Services
  • 数据源: AWS S3
  • 数据源: AWS KMS
  • 用例: 威胁检测
  • 策略: 影响

版本: 2

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查使用外部 KMS 密钥的 AWS S3 对象加密

此规则检测到使用了外部 AWS KMS 密钥来加密 S3 存储桶中的对象。 拥有访问权限的攻击者可能会利用配置错误的 S3 存储桶,使用外部密钥复制存储桶中的对象,并阻止受害者访问他们自己的数据。 此规则使用 ES|QL 来查找 CopyObject 操作的使用情况,其中目标存储桶的 cloud.account.id 与从用于加密的 AWS KMS 密钥中解析出来的 key.account.id 不同。

可能的调查步骤

  • 识别行为者: 查看 aws.cloudtrail.user_identity.arnaws.cloudtrail.user_identity.access_key_id 字段,以识别执行该操作的人员。 验证此行为者是否通常执行此类操作,以及他们是否具有必要的权限。
  • 查看请求详情: 检查 aws.cloudtrail.request_parameters,以了解 CopyObject 操作的具体详情。 查找任何可能表明未经授权或恶意修改或使用未知 KMS 密钥 ID 的异常参数。
  • 分析请求来源: 调查 source.ipsource.geo 字段,以确定请求的地理来源。 外部或意外的位置可能表明凭据已泄露或存在未经授权的访问。
  • 通过时间戳进行上下文关联: 使用 @timestamp 字段来检查对象何时被复制。 在非工作时间或常规维护窗口之外进行的更改可能需要进一步审查。
  • 与其他活动关联: 搜索此操作之前和之后的相关 CloudTrail 事件,以查看同一行为者或 IP 地址是否参与了其他潜在的可疑活动。
  • 检查对象删除或访问: 查找可能表明攻击者正在访问和销毁对象(包括较旧的对象版本)的对同一 S3 存储桶的 DeleteObjectDeleteObjectsGetObject API 调用。
  • 询问相关人员: 如果复制事件是由用户发起的,请与负责管理 S3 存储桶的人员或团队核实此操作的意图和授权。

误报分析

  • 合法的管理操作: 确认 CopyObject 操作是否与变更管理系统中记录的计划更新、维护活动或合法的管理任务一致。
  • 一致性检查: 将该操作与用户或组织内执行的类似活动的的历史数据进行比较。 如果该操作与过去合法的活动一致,则可能表明是误报。

响应和补救

  • 立即审查: 如果该活动未经授权,请搜索 S3 存储桶中可能放置的勒索说明,并查看存储桶的访问日志中是否存在任何可疑活动。
  • 增强监控和警报: 调整监控系统,以便对类似的 CopyObject 操作发出警报,尤其是涉及敏感数据或不寻常文件扩展名的操作。
  • 教育和培训: 对拥有管理权限的用户进行额外培训,让他们了解有关 S3 存储桶管理的安全最佳实践的重要性,以及勒索软件的风险。
  • 审计 S3 存储桶策略和权限: 对所有 S3 存储桶策略和相关权限进行全面审计,以确保它们遵守最小权限原则。
  • 事件响应: 如果有恶意意图或安全漏洞的迹象,请启动事件响应协议,以减轻任何损害并防止将来发生。

其他信息

有关管理 S3 存储桶安全性和防范勒索软件的更多指导,请参阅 AWS S3 文档和 AWS 安全最佳实践。 此外,请参阅以下资源,了解有关 S3 勒索软件保护的具体详细信息:- ERMETIC 报告 - 野外 AWS S3 勒索软件暴露 - S3 勒索软件第 1 部分:攻击向量

设置

编辑

需要在 CloudTrail 跟踪配置中启用 AWS S3 数据事件类型。

规则查询

编辑
from logs-aws.cloudtrail-* metadata _id, _version, _index

// any successful copy event
| where event.dataset == "aws.cloudtrail"
    and event.provider == "s3.amazonaws.com"
    and event.action == "CopyObject"
    and event.outcome == "success"

// abstract key account id, key id, encrypted object bucket name and object name
| dissect aws.cloudtrail.request_parameters "{%{?bucketName}=%{target.bucketName},%{?x-amz-server-side-encryption-aws-kms-key-id}=%{?arn}:%{?aws}:%{?kms}:%{?region}:%{key.account.id}:%{?key}/%{keyId},%{?Host}=%{?tls.client.server_name},%{?x-amz-server-side-encryption}=%{?server-side-encryption},%{?x-amz-copy-source}=%{?bucket.objectName},%{?key}=%{target.objectName}}"

// filter for s3 objects whose account id is different from the encryption key's account id
// add exceptions based on key.account.id or keyId for known external accounts or encryption keys
| where cloud.account.id != key.account.id

// keep relevant fields
| keep @timestamp, aws.cloudtrail.user_identity.arn, cloud.account.id, event.action, target.bucketName, key.account.id, keyId, target.objectName

框架: MITRE ATT&CKTM

Was this helpful?
Feedback