云AKSK (即云API密钥) 是用户访问云上资源的重要身份凭据,由于开发的不规范和安全漏洞,AKSK被外部攻击者获取进行恶意利用。
开源工具测试
当我们通过各种方式获得了一个拥有高权限的aksk密钥进行利用后,常见的就是列出查看和利用对应拥有的云服务,之后可能为了方便写报告或者利于可视化展示危害的时候就会考虑新建子账号登录控制台。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
往往这个时候主账号绑定的消息接收人就会收到对应的短信提醒如下创建子账户成功的短信。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
然后你再登录下对应的控制台可能他绑定的微信小程序就会收到异地登录的提醒,主要也是因为现在的云厂商越来越重视云密钥泄露导致的安全问题了,后面看了下对应的异地登录的提醒也无法关闭。
https://cloud.tencent.com/document/product/378/54637
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
以腾讯云为例通常通过以下方式进行api的调用测试,这里主要介绍演示API Explorer和tccli的方式。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
-
API Explorer:
打开对应API Explorer界面里面会有很多云服务,这边主要关注下CAM访问管理服务进行测试,在签名示例中输入aksk密钥后生成签名就会临时生成对应命令进行api的调用。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
-
TCCLI:
在CLI示例子中会根据我们输入的参数生成对应TCCLI的命令,在配置了对应aksk密钥的环境中进行api的调用。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
这里列出了常见的云服务获取到aksk密钥之后攻击人员会进行的常见的高危敏感接口的调用信息。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
对于上面的高危接口的可疑调用云厂商基本都会进行异常行为的调用检测主要体现在了如下的检测:
-
和业务正常调用不同的异常IP, 异常地理, 异常UA
-
业务非常用的接口调用行为和敏感操作
-
接口调用偏离7天的历史基线
-
不同于业务调用的非正常时间访问
-
标记的恶意云账号和恶意IP调用
-
相同IP短期调用多个AKSK
列出访问秘钥(ListAccessKeys):tccli cam ListAccessKeys --cli-unfold-argument现在大多数云厂商一个用户最多生成2个秘钥了,我们获得访问秘钥之后如果只有一个秘钥我们可以自己新建一个。
创建访问秘钥(CreateAccessKey):tccli cam CreateAccessKey --cli-unfold-argument当对应用户多于2个秘钥就会出现限制。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
列出用户关联策略(ListAttachedUserAllPolicies):当我们没有设置用户组和对应权限策略的关联时候可以看下对应用户关联的策略使用查看,这里需要注意的是下面这几个高权限的策略AdministratorAccess、QcloudCamFullAccess 、QCloudResourceFullAccess 、QCloudFinanceFullAccess。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
拉取子用户(ListUsers):tccli cam ListUsers --cli-unfold-argument看到所有已经创建的子用户。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
查询子用户(GetUser):tccli cam GetUser --cli-unfold-argument --Name xxx这个里面需要注意这个接口返回的详细信息比上面拉取子用户(ListUser)信息要多,主要就是子用户的登录ip(RecentlyLoginIP)和最近登录时间(RecentlyLoginTime),可以考虑挂对应子用户的登录地其他地点的ip代理避免常用地的微信告警通知。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
更新子用户(UpdateUser),这里可以进行重置已有子用户的密码。这个测试过了没有收到更新控制台密码的短信,但是毕竟重置对方密码对于黑盒测试不太合适。
费用中心(BILLING)订单管理相关接口,可以查询对应账户的收支账单、订单等数据。比如这里DescribeDealsByCond就通过订单数据查找到2023年的云服务的订单数据,比如这个主要使用购买的云服务就是OCR文字识别。
为什么要做上面这些主要是在日常云密钥泄露检测场景中发现较多高权限的密钥,为了详细收集该账号所有使用购买的云服务而不仅仅是云服务器、云数据库、对象存储等热门常见应用,也更加方便甲方在云安全能力建设阶段由于部门云安全职责划分不完善导致的云资源收集不完整不对等的问题。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
创建子用户(AddUser)和绑定策略到子用户(AttachUserPolicy)就是我们前面通过api方式收集足够信息之后创建子账户的方式步骤了。下面的图中我们绑定了刚刚新建的子用户对应的AdministratorAccess策略对应的Policyid是1。
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
![【云安全】云密钥Key扩展利用 【云安全】云密钥Key扩展利用]()
原文始发于微信公众号(安全驾驶舱):【云安全】云密钥Key扩展利用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/3324558.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论