Amazon GuardDuty 增强了对 Amazon EC2 实例凭证泄露的检测

b1cb60c73c4336dba741bc06de74af90.gif

前言

Amazon GuardDuty 

https://aws.amazon.com/guardduty/ 是一项威胁检测服务,可持续监控恶意活动和未经授权的行为,以保护您的亚马逊云科技账户、工作负载和存储在 Amazon Simple Storage Service (Amazon S3) https://aws.amazon.com/s3/ 中的数据。Amazon GuardDuty 以大量公共和亚马逊云科技生成的数据源为信息来源,并在机器学习的支持下,分析数十亿个事件,以追踪趋势、模式和异常现象,将其作为可识别的问题迹象。只需单击一下即可启用,几分钟之内便可看到第一批结果。

我们向 Amazon GuardDuty 增加了一项功能,可检测您的 Amazon Elastic Compute Cloud (Amazon EC2) https://aws.amazon.com/ec2/ 实例凭证何时被另一个亚马逊云科技账户使用。

Amazon EC2 实例凭证https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-metadata.html是当 Amazon Identity and Access Management (IAM) 

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html 角色附加到实例上时,通过 Amazon EC2 元数据服务向实例上运行的任何应用程序提供的临时凭证。

有哪些风险?

当您部署在 Amazon EC2 实例上的工作负载访问亚马逊云科技服务时,它们会使用访问密钥、私有访问密钥和会话令牌。向工作负载传递访问密钥证书的安全机制是定义工作负载所需的权限,创建一个或多个具有这些权限的 IAM 策略 https://aws.amazon.com/iam/ ,将策略附加到 IAM角色,最后将角色附加到实例。

在附加了角色的 Amazon EC2 实例上运行的任何进程都可以通过调用 Amazon EC2 元数据服务 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html 来检索安全证书:

curl 169.254.169.254/latest/meta-data/iam/security-credentials/role_name
{
  "Code" : "Success",
  "LastUpdated" : "2021-09-05T18:24:45Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "AS...J5",
  "SecretAccessKey" : "r1...9m",
  "Token" : "IQ...z5Q==",
  "Expiration" : "2021-09-06T00:44:06Z"
}

*左滑查看更多

这些凭证在时间和范围上都受到限制。它们的有效期最长为六个小时。它们仅限于附加到与 Amazon EC2 实例关联的 IAM 角色的权限范围。

所有 Amazon SDK https://aws.amazon.com/tools/ 都能自动检索和续订此类凭证。您的应用程序中不需要额外的代码。

现在想象一下,在 Amazon EC2 实例上运行的应用程序遭到破坏,恶意行为者设法访问了实例的元数据服务。恶意行为者将提取凭证。这些凭证具有您在附加到实例的 IAM 角色中定义的权限。根据您的应用程序,攻击者可能会从 Amazon S3 或 DynamoDB https://aws.amazon.com/dynamodb/ 中泄露数据,启动或终止 Amazon EC2 实例,甚至可以创建新的 IAM 用户或角色。

自推出 Amazon GuardDuty 以来,它已检测到何时从亚马逊云科技以外的 IP 地址使用此凭证。因此,聪明的攻击者可能会对另一个亚马逊云科技账户隐藏其活动,以便在 Amazon GuardDuty 视线之外进行操作。另外,Amazon GuardDuty 还将检测何时从亚马逊云科技网络内的其他亚马逊云科技帐户使用凭证。

会生成哪些警报?

与亚马逊云科技服务 API 通信的源 IP 地址可能与 Amazon EC2 实例 IP 地址不同,这可能是有正当理由的。考虑一下将流量路由到一个或多个 VPC 的复杂网络拓扑;例如 Amazon Transit Gateway https://aws.amazon.com/transit-gateway/ 

或 Amazon Direct Connect 

https://aws.amazon.com/directconnect/ 。

此外,多区域配置,或者不使用 Amazon Organizationshttps://aws.amazon.com/organizations/ ,导致检测使用凭证的亚马逊云科技账户是否属于您并非易事。大型公司已经实施了自己的解决方案来检测此类安全漏洞,但是这些类型的解决方案不容易构建和维护。只有少数公司拥有应对这一挑战所需的资源。当需要应对安全漏洞的挑战时,公司会分散在核心业务上的精力,因此我们决定解决这个问题。

自2022年1月21日起,Amazon GuardDuty 在检测到滥用 Amazon EC2 实例凭证时会生成警报。当使用来自关联账户的凭证时,警报将被标记为中等严重性。否则,将生成高危警报。关联账户是由同一 Amazon GuardDuty 管理员账户(也称为  Amazon GuardDuty 成员账户)

https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_accounts.html 监控的账户,他们可能是你的 Amazon Organizations 的一部分,也可能不是。

在实践中

为了了解它是如何工作的,让我们从我的一个 Amazon EC2 实例中捕获并泄露一组 Amazon EC2 凭证。我使用 SSH 连接到我的一个实例,我使用 curl 来检索凭证,如下所示:

curl 169.254.169.254/latest/meta-data/iam/security-credentials/role_name
{
  "Code" : "Success",
  "LastUpdated" : "2021-09-05T18:24:45Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "AS...J5",
  "SecretAccessKey" : "r1...9m",
  "Token" : "IQ...z5Q==",
  "Expiration" : "2021-09-06T00:44:06Z"
}

*左滑查看更多

实例拥有一个 IAM 角色,该角色具有允许读取此亚马逊云科技账户中 Amazon S3 存储桶的权限。我复制并粘贴了凭证。然后,我连接到在不同的亚马逊云科技账户中运行的另一个 Amazon EC2 实例,该账户不隶属于同一 Amazon GuardDuty 管理员账户。我使用 SSH 连接到另一个实例,然后使用泄露的凭证配置 Amazon CLI。我尝试访问私有 Amazon S3 存储桶。

# 首先验证我没有访问权限 
[ec2-user@ip-1-1-0-79 ~]$ aws s3 ls s3://my-private-bucket

调用 ListObjectsV2 操作时发生错误 (AccessDenied):访问被拒绝

# 然后我使用泄露的凭证配置 CLI
[ec2-user@ip-1-1-0-79 ~]$ aws configure
AWS Access Key ID [None]: AS...J5
AWS Secret Access Key [None]: r1...9m
Default region name [None]: us-east-1
Default output format [None]:

[ec2-user@ip-1-1-0-79 ~]$ aws configure set aws_session_token IQ...z5Q==

# 最后,我再次尝试访问 S3
[ec2-user@ip-1-1-0-79 ~]$ aws s3 ls s3://my-private-bucket
                     PRE folder1/
                     PRE folder2/
                     PRE folder3/
2021-01-22 16:37:48 6148 .DS_Store

*左滑查看更多

不久之后,我使用亚马逊云科技管理控制台访问我窃取了证书的亚马逊云科技账户中的 Amazon GuardDuty。我可以验证是否生成了高危警报。

726a438fec8d3c9e459add9ae3d0fe4e.png

然后呢?

当攻击者在实例上具有远程代码执行 (RCE) 

https://owasp.org/www-community/attacks/Code_Injection 、

本地存在或利用 Server Side Request Forgery (SSRF) 

https://owasp.org/www-community/attacks/Server_Side_Request_Forgery 

和 XML External Entity (XXE) 

https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing 

注入等应用程序级漏洞时,他们可能会提取凭证。有多种方法可以缓解 RCE 或本地访问,包括从安全且已修补的 AMI 重建实例以消除远程访问、轮换访问凭证等。当漏洞位于应用程序级别时,您或应用程序供应商需要修补应用程序代码以消除漏洞。

当您收到提示凭证被泄露风险的警报时,首先要做的是验证账户 ID。它是否是贵公司的账户?在分析过程中,如果业务案例允许,您可以终止受危害的实例或关闭应用程序 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html。这可防止攻击者在过期时提取已续订的实例凭证。如有疑问,请使用举报亚马逊云科技滥用表格https://aws.amazon.com/forms/report-abuse或联系 abuse@amazonaws.com,与亚马逊云科技信任与安全团队联系。提交请求时,请提供所有必要的信息,包括可疑的亚马逊云科技账户 ID、明文日志等。

可用性

此新功能在所有亚马逊云科技区域均可使用,无需额外付费。当您的亚马逊云科技账户上已启用 Amazon GuardDuty 时,默认情况下会启用此功能。

否则,请立即启用 Amazon GuardDuty,然后开始 30 天的试用期。

https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_settingup.html

本篇作者

827e2cea964a2f324e24e3e6fcab95be.png

Sébastien Stormacq

首席布道师

自80年代中期第一次接触Commodore 64以来,Sébastien一直在编写代码,他的兴趣是软件架构、开发工具和移动计算。他使用他的激情、热情、客户支持、好奇心和创造力激励开发者们释放自己在亚马逊云科技的价值。

2e5ca6abe067e8765966080f4dc68914.gif

078cf1afff9363611f8b43145fa0ff14.gif

听说,点完下面4个按钮

就不会碰到bug了!

5228f2ff7f7cf38cf61e91792f399236.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值