Blackhat2023解读——规避云中的日志记录:AWS CloudTrail绕过

一、什么是AWS CloudTrail

CloudTrail 是AWS一项服务[1],可对用户的AWS账户进行合规审计、运营审计和风险审计。用户可以通过CloudTrail记录、监控、存储与AWS服务相关的账户活动,包括通过Amazon控制台、Amazon SDKs、命令行工具和其他 AWS服务执行的操作。CloudTrail简化了安全分析、资源更改跟踪和故障排除。CloudTrail在用户创建AWS账户时自动启用,用户可以在CloudTrail控制台中查看过去90天内的账户活动事件记录。

AWS CloudTrail的优势:

简化合规:CloudTrail自动记录和存储在AWS账户中执行的操作的事件日志,从而简化合规性地审核。

用户资源活动可见CloudTrail通过Amazon管理控制台及API调用的方式提高用户对账户、资源活动的可见性。

安全分析与故障排除CloudTrail通过捕获指定时间段内AWS账户活动历史,发现敏感、危险操作,进行故障排除。

安全自动化AWS CloudTrail允许用户跟踪并自动响应威胁AWS资源安全的账户活动。

二、AWS CloudTrail绕过

绕过CloudTrail帮助攻击者规避运维、安全人员对其在AWS账户中执行操作的审计,隐藏自己的攻击行为,做到“来无影,去无踪”。在该议题中,作者Nick Frichette分享了三种CloudTrail绕过方式,分别为协议更改、未记录API以及非生产Endpoits。

  • 绕过方式1:协议更改

Nick Frichette发现一些AWS服务通过API调用时存在枚举权限的漏洞,且枚举过程不会CloudTrail所监控。该漏洞影响40种不同AWS服务中的645种不同API操作。这些服务均有以下三个特点[2]:

  1. 使用 JSON 1.1 协议
  2. API 操作根据权限集返回唯一的错误代码
  3. 与该操作关联的资源设置为“*”

该漏洞这是通过设置不正确的Content-Type请求头来触发的。具体来说,通过API方式调用这些服务前将请求头Content-Type的值由application/x-amz-json-1.1更改为application/x-amz-json-1.0,在1.1兼容服务上使用 application/x-amz-json-1.0会导致调用服务后AWS的响应会根据该凭证的真实权限进而发生改变。若该凭证没有调用服务API的权限,则AWS会响应403。若该凭证拥有调用服务API的权限,则AWS会响应404。

图1 不同权限、协议类型对CloudTrail记录的影响

由于这是技术上的“协议版本错误”请求,这些请求不会被记录到CloudTrail中。因此,攻击者可通过该漏洞“隐匿”枚举给定角色是否拥有相关服务的API调用权限。

  • 绕过方式2未记录endpoints

未记录的API是一种存在与AWS中但未出现在AWS公共文档和SDK中的API,这些API虽然未被官方记录,但仍可能存在安全风险。未被记录的API通常出现在AWS 控制台中。Nick Frichette从AWS控制台的JavaScript中提取的模型并发现未被AWS记录的API。许多AWS控制台服务使用与应用程序访问服务相同的API,诸如IamAdmin这样的未记录的服务接口,如下所示。

图2-1 控制台中泄露的API

图2-2 控制台中泄露的API

iamadmin接口能够使AWS用户配置访问角色、用户和策略的界面,且该接口执行的所有操作未在 CloudTrail 中记录为任何事件。iamadmin接口与传统的iam接口存在一一映射关系,如下图所示:

图3 iamadmin与传统iam操作映射关系

此外,Nick Frichette还发现了另外几个未被记录的API——amplify:GetDistributionDetails、apprunner:ListVpcConnectorsForAccount和apprunner:ListObservabilityConfigurationsForAccount。Nick Frichette通过amplify:GetDistributionDetails实现了与cloudfront关联AWS用户Account ID的泄漏;通过apprunner:ListVpcConnectorsForAccount和apprunner:ListObservabilityConfigurationsForAccount接口实现了跨租户攻击——通过其他用户account id可能泄露其VPC连接器的安全组ID、子网ID和VPC连接器ARN,以及可观察性配置[3,4]。

  • 绕过方式3非生产endpoints

非生产endpoints诸如ssm-gamma.us-east-1.amazonaws.com等。这些endpoints不一定能够对AWS Service资源进行操作,但它们拥有与生产环境相同的授权中间件。非生产endpoints使通过这些非生产endpoints绕过cloudtrail隐匿枚举AWS账户权限成为可能。

图4 非生产endpoints

上图展示了AWS中存在的一些非生产endpoints。Nick Frichette发现通过这些非生产endpoints调用对应服务的API的操作会导致CloudTrail产生以下两种结果[5,7]:

  • CloudTrail不会记录相关操作事件;
  • 混淆CloudTrail记录事件的事件源,如执行AWS 命令行指令:

aws ivs list-channels \

–region ap-northeast-1 \

–endpoint-url https://ivs-gamma.ap-northeast-1.amazonaws.com

CloudTrail的事件记录如下图所示;

图5 被混淆的事件源

以上两种结果都能使攻击者绕过CloudTrail监控,从而进行隐匿化的恶意攻击,如枚举AWS凭证、账户拥有拥有权限。

三、总结

作者Nick Frichette建议相关研究人员通过以下三个思路找寻更多的AWS CloudTrail绕过方式[6]:

  1. 使用Certificate Transparency日志来查找感兴趣的Endpoints
  2. 从boto库和控制台的JavaScript中提取模型
  3. 尝试跨协议请求

不仅仅是AWS,其他公有云服务提供商应该重视审计日志绕过这个攻击面,站在攻击者的视角采取相应措施,及时规避可能出现的安全问题。

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author