AWS - GuardDuty Enum

支持 HackTricks

GuardDuty

根据文档:GuardDuty 结合了机器学习、异常检测、网络监控和恶意文件发现,利用 AWS 和行业领先的第三方来源,帮助保护 AWS 上的工作负载和数据。GuardDuty 能够分析数十亿事件,跨多个 AWS 数据源,例如 AWS CloudTrail 事件日志、Amazon Virtual Private Cloud (VPC) 流日志、Amazon Elastic Kubernetes Service (EKS) 审计和系统级日志,以及 DNS 查询日志。

Amazon GuardDuty 识别账户内的异常活动,分析活动的安全相关性,并提供调用活动的上下文。这使得响应者可以确定是否应该花时间进行进一步调查。

警报会出现在 GuardDuty 控制台 (90 天) 和 CloudWatch 事件中。

当用户禁用 GuardDuty时,它将停止监视您的 AWS 环境,并且不会生成任何新的发现,现有的发现将丢失。 如果只是停止它,现有的发现将保留。

发现示例

  • 侦察:活动表明攻击者进行侦察,例如异常的 API 活动、可疑的数据库登录尝试、VPC 内部端口扫描、异常的失败登录请求模式,或来自已知恶意 IP 的未阻止的端口探测。

  • 实例被入侵:表明实例被入侵的活动,例如加密货币挖矿、后门命令和控制 (C&C) 活动、使用域生成算法 (DGA) 的恶意软件、出站拒绝服务活动、异常高网络流量量、异常的网络协议、实例与已知恶意 IP 的出站通信、外部 IP 地址使用的临时 Amazon EC2 凭证,以及使用 DNS 进行数据外泄。

  • 账户被入侵:表明账户被入侵的常见模式包括来自异常地理位置或匿名代理的 API 调用、尝试禁用 AWS CloudTrail 日志记录、削弱账户密码策略的更改、异常的实例或基础设施启动、在异常区域部署基础设施、凭证窃取、可疑的数据库登录活动,以及来自已知恶意 IP 地址的 API 调用。

  • 存储桶被入侵:表明存储桶被入侵的活动,例如显示出异常数据访问模式,表明凭证被滥用,来自远程主机的异常 Amazon S3 API 活动,来自已知恶意 IP 地址的未经授权的 S3 访问,以及从以前未访问过该存储桶的用户或从异常位置调用的用户中检索 S3 存储桶中的数据的 API 调用。Amazon GuardDuty 持续监视和分析 AWS CloudTrail S3 数据事件 (例如 GetObject、ListObjects、DeleteObject) 以检测所有 Amazon S3 存储桶中的可疑活动。

发现信息

发现摘要:

  • 发现类型

  • 严重程度:7-8.9 高,4-6.9 中,01-3.9 低

  • 区域

  • 账户 ID

  • 资源 ID

  • 检测时间

  • 使用的威胁列表

正文包含以下信息:

  • 受影响资源

  • 操作

  • 操作者:IP 地址、端口和域

  • 附加信息

所有发现

访问所有 GuardDuty 发现的列表:https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

多账户

邀请方式

您可以邀请其他账户加入不同的 AWS GuardDuty 账户,以便每个账户都从同一个 GuardDuty 进行监控。主账户必须邀请成员账户,然后成员账户的代表必须接受邀请。

通过组织

您可以指定组织内的任何账户为GuardDuty 委派管理员。只有组织管理账户可以指定委派管理员。

被指定为委派管理员的账户将成为 GuardDuty 管理员账户,在指定的 AWS 区域中自动启用 GuardDuty,并且还具有启用和管理该区域内所有账户的 GuardDuty 权限。组织中的其他账户可以被视为并添加为与该委派管理员账户关联的 GuardDuty 成员账户。

枚举

# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

GuardDuty绕过

一般指导

尽量了解将要使用的凭据的行为:

  • 使用次数

  • 位置

  • 用户代理/服务(可能是从awscli、webconsole、lambda等使用)

  • 常用权限

有了这些信息,尽量重现与访问权限相同的场景:

  • 如果是用户或用户访问的角色,尝试在相同的时间段使用,来自相同的地理位置(甚至是相同的ISP和IP,如果可能的话)

  • 如果是服务使用的角色,在相同的区域创建相同的服务,并在相同的时间范围内使用

  • 始终尝试使用此主体已使用的相同权限

  • 如果需要使用其他权限或滥用权限(例如,下载1,000,000个cloudtrail日志文件),请缓慢进行,并与AWS进行最少量的交互(有时awscli在写入之前会调用多个读取API)

突破GuardDuty

guardduty:UpdateDetector

使用此权限可以禁用GuardDuty以避免触发警报。

aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

拥有此权限的攻击者可以使用过滤器自动存档发现:

aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

iam:PutRolePolicy, (guardduty:CreateIPSet|guardduty:UpdateIPSet)

具有上述权限的攻击者可以通过将其IP地址添加到其中来修改GuardDuty的受信任IP列表,从而避免生成警报。

aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv

guardduty:DeletePublishingDestination

攻击者可以移除目的地以防止警报:

aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

删除此发布目的地将不会影响 GuardDuty 控制台中发现的生成或可见性。GuardDuty 将继续分析您的 AWS 环境中的事件,识别可疑或意外行为,并生成发现。

特定发现绕过示例

请注意,GuardDuty 有数十个发现,但作为红队人员,并非所有发现都会影响您,更好的是,您可以在https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html中找到每个发现的完整文档,在采取任何行动之前,请查看以避免被发现。

以下是几个特定 GuardDuty 发现绕过示例:

GuardDuty 检测常见渗透测试工具发出的 AWS API 请求,并触发一个渗透测试发现。 它是通过 API 请求中传递的用户代理名称来检测的。 因此,修改用户代理可以防止 GuardDuty 检测到攻击。

为了防止这种情况发生,您可以搜索botocore软件包中的session.py脚本并修改用户代理,或者将 Burp Suite 设置为 AWS CLI 代理并使用 MitM 更改用户代理,或者只需使用 Ubuntu、Mac 或 Windows 等操作系统即可防止此警报触发。

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

从元数据服务中提取 EC2 凭据并在 AWS 环境之外使用这些凭据会触发UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS警报。相反,从您的 EC2 实例使用这些凭据会触发UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS警报。然而,在同一帐户中的另一个受损 EC2 实例上使用这些凭据不会被检测到,不会触发任何警报。

因此,请在发现凭据的机器内部使用被提取的凭据,以避免触发此警报。

参考资料

支持 HackTricks

Last updated