Golden SAML:针对云应用认证机制的新型攻击技术

黑客与极客 / 2018年01月27日 09:10

互联网+

网络安全公司CyberArk Labs研究人员于近期研发了一种新型入侵攻击技术——GoldenSAML,以SAML2.0协议作为SSO(单点登录)认证机制的任何服务都受此攻击方法影响,该技术允许黑客创建虚假的企业信息后伪造身份验证,从而窃取云应用资源。并且CyberArk已推出一款可以实现GoldenSAML攻击技术的黑客工具“shimit”。

一、SAML概述

Golden SAML”并非是一种黑客攻击进入安全防护企业的工具,而是在入侵一家企业之后使用的一种技术。它是“GoldenTicket”攻击方法(Pass-the-Ticket)的变种,最早由BenjaminDelpy研究员(Mimikatz工具的制作者)发现。这两种技术具有极其相似的攻击性质。据悉,后者在Kerberos 环境中可持久性获得任一类型访问权限并且可通过操纵WindowsServer Kerberos身份验证框架,完全控制目标IT基础设施。

Golden SAML使用SAML2.0协议作为SSO机制的所有服务验证,从而获取用户最高特权。在这种攻击场景中,如果应用支持SAML认证(如AzureAWSvSphere等),那么攻击者可以获得该应用的所有访问权限,也可伪装成目标应用上的任何用户。

二、SAML协议介绍

SAML为SecurityAssertion Markup Language(安全声明标记语言)的简称,是不同安全域之间交换认证及授权数据的一种开放标准协议。SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。SAML具备以下几层含义:

基于XML的一种标记语言(用于Assertions断言等);

基于XML的一组协议信息;

一组协议信息的绑定;

一组配置信息(涵盖以上所有内容)。

SAML协议的工作流程如下图,常用于Web浏览器的单点登录(singlesign-onSSO)。

1、首先,用户尝试访问某个应用(即服务提供商),比如AWS控制台、vSphere web客户端等。根据具体实现方式的不同,客户端可能会直接访问IdP,跳过图1中的第一个步骤。

2、然后应用检测IdP(即身份提供商,如ADFS、Okta等)以认证用户身份,生成SAML身份认证请求,将客户端重定向至IdP。

3、IdP对用户进行身份认证,生成SAML响应(SAMLResponse),并通过用户发送给SP。

4SP检查SAML响应(SAMLResponse),检查通过后允许用户登录。SPIdP之间必须建立信任关系,然后用户可以正常使用服务。

三、 SAML 响应结构

Golden SAML攻击主要利用SAML认证过程的第3个步骤,为了成功实施攻击,我们先来分析这一步骤中发送的数据:SAMLResponseIdP会将SAMLResponse对象发送给SP,然后SP使用这一数据来识别并认证用户身份。在SAML2.0协议中,SAMLResponse的常见结构如下所示(结构中的动态参数部分已用紫色标注出来):

响应断言可能会经过IdP私钥的签名或者加密,具体使用哪种方案由IdP的实现方式所决定。通过这种方式,SP可以验证SAMLResponse是否由可信IdP所生成。

与Golden Ticket攻击场景类似,若能获取用于对象签名的密钥(包含用户身份及权限信息,该密钥对应Golden Ticket中的KRBTGT以及Golden SAML中的令牌签名私钥),那么就可以伪造这种“身份认证对象”(即TGT或SAMLResponse),冒充任何用户身份,未经授权便可访问SP。与此类似的是,我们也可以将Golden SAML攻击定义成一种IdP伪造攻击。

在这种攻击场景中,攻击者可以控制SAMLResponse对象中的任何字段(如用户名、权限集、有效期等)。此外,Golden SAML还具备如下优势:

1、可以在任何位置生成伪造对象。攻击者无需参与目标域或者其它联盟(federation)环境中,即可生成所需的Golden SAML。

2、可绕过2FA(双因素身份验证)。

3、令牌签名私钥(token-signingprivate key)不会自动更新。

4、修改用户密码不会影响已生成的SAML。

AWS+ AD FS + Golden SAML = 成功的攻击。

假设我们已突破目标域环境想要进一步实施攻击,可以继续使用Golden SAML来突破目标环境设施。

假设在联盟(federation)环境中,AWS信任已突破的那个域环境,那么可利用这种攻击方法获取云环境中的任意权限。为了实施这种攻击,需要掌握对SAML对象实施签名的那个私钥(如Golden Ticket攻击中需要获取KRBTGT)。我们无需具备域管访问权限,只需掌握AD FS用户账户就能获取这个私钥。

实施Golden SAML攻击时,需要具备以下信息:

1、令牌签名私钥;

2、IdP公共证书;

3、IdP名称;

4、角色名称;

5、域名\用户名;

6、AWS中的角色会话名称;

7、Amazon账户ID。

前四个为必备条件,剩下的可随意输入。

为了得到私钥,需要具备AD FS账户的访问权限,然后从个人存储区中导出私钥数据(可利用mimikatz之类的工具)。也可使用Microsoft.Adfs.Powershell这个PowerShell管理单元(snapin),以ADFS用户身份运行如下命令来获取其他数据:

获取ADFS公共证书:

获取IdP名称:

获取角色名称:

获取所需的所有数据后便可直接进入攻击流程。首先,我们来看一下目标主机中是否已保存有效的AWS凭据。

同预想一致,目标主机中没有保存任何凭据。现在利用shimit来生成SAMLResponse并对其进行签名。

Golden SAML攻击场景中,客户端将成为攻击者,而身份验证过程将被修改为如下图所示:

整个攻击过程分为三步:

1、准备阶段。

(1)生成与用户提供的参数匹配的一个断言(assertion)。演示案例中提供的参数包含用户名、Amazon账户ID以及所需的角色(使用的是第一个角色)。

(2)使用用户提供的私钥文件签名该断言。

(3)连接到SP上,然后调用AWS提供的AssumeRoleWithSAMLAPI。

2、通过AWS STS服务获得访问密钥以及会话令牌(STS服务可以为(federation)用户提供临时凭据)。

3、将该会话应用于命令行环境(使用aws-cli环境变量),以便用户使用AWS命令行界面(CLI)。

在这种环境中实施Golden SAML攻击仍存在一些限制条件。虽然我们可以生成SAMLResponse,并通过SamlValidity来设置该对象的有效时间,但AWS会检查响应数据的生成时间是否在5分钟之内,超过这个时长AWS会拒绝用户的身份认证请求。服务器在执行正常检测流程之前,会先执行该检查流程,以确保响应数据没有过期。

四、总结

研究人员表示,这些攻击的先决条件极其重要,如果攻击者以正确的方式实施此类攻击,防御方很难在网络环境中找到这种攻击行为的蛛丝马迹。此外,攻击者一旦突破目标网络环境,很有可能会瞄准环境中最有价值的目标(如DC、AD FS以及其他IdP设施)。

该攻击方法既不依赖 SAML 2.0 漏洞,也未通过AWS /ADFS漏洞进行,攻击者主要通过获取域管理员访问权限实施此类活动。此外,一旦该攻击技术被恶意使用,其系统将很难检测出来。

防御方应部署端点安全解决方案,重点关注权限管理方面内容(如部署CyberArkEndpointPrivilege Manager解决方案),以阻止攻击者获取类似令牌签名证书之类的重要资产。

*本文投稿作者:JingleCats,参考来源:CYBERARK BleepingComputer,转载请注明来自FreeBuf.COM 返回搜狐,查看更多

责任编辑:

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。