標籤:

針對雲端認證的偽造攻擊技術——GOLDEN SAML

GOLDEN SAML的發現

近日,以色列的CyberArk實驗室團隊新發現了一種全新的攻擊技術,他們將其命名為「GOLDEN SAML」,攻擊者通過使用該技術,不但可以偽造一個雲端應用的身份驗證對象,而且還能對使用SAML 2.0協議作為SSO(單點登錄)機制的每個服務進行身份驗證。

在攻擊中,攻擊者不但可以獲得任何支持SAML身份驗證的應用程序(例如Azure,AWS,vSphere等)的任何許可權,而且還可以偽裝成目標應用程序的用戶。

目前,CyberArk實驗室團隊已經發布一個實現這個攻擊的滲透測試工具——shimit。

當越來越多的企業基礎構架設施被放在雲端時,Active Directory(AD)已不再是對用戶進行身份驗證和授權的最高方案了,它現在只屬於聯合身份驗證服務 (AD FS) 的一部分。

AD FS可以在不同的環境之間建立信任關係,這與微軟的Azure Active Directory,Microsoft AD, AWS等都有很大不同。例如,該信任關係會允許AD中的用戶享受SSO對AD FS中的所有可信環境的好處。在AD FS中,攻擊者將不再滿足於控制其受害者的域控制器。

說到「GOLDEN SAML」你一定會想到另一個臭名昭著的攻擊方式——Golden Ticket(黃金票據),Mimikatz工具就是利用的該攻擊技術,如果你想了解更多關於Golden Ticket的信息請點此。由名字的相似性可知這兩個攻擊技術之間一定有著某些相似性,沒錯,由於Golden Ticket可以生成任意的Kerberos票據,且攻擊者可以對這些偽造的票據使用很長一段時間,所以GOLDEN SAML也採用了這一攻擊特性。

如何使用SAML

由於有些讀者可能不熟悉SAML 2.0協議,所以我想簡要地介紹一下它是如何工作的?

SAML即安全聲明標記語言,英文全稱是Security Assertion Markup Language。它是一個基於XML的標準,用於在不同的安全域(security domain)之間交換認證和授權數據。SAML標準定義了身份提供者(identity provider,IdP)和服務提供者(service provider,SP),這兩者構成了前面所說的不同的安全域。 SAML是OASIS組織安全服務技術委員會(Security Services Technical Committee)的產品。

SAML協議或安全聲明標記語言是用於在各方之間,特別是在身份提供者和服務提供者之間交換認證和授權數據的開放標準。SAML的作用 主要包括三個方面:

1.認證申明,表明用戶是否已經認證,通常用於SSO。

2.屬性申明,表明 某個Subject 的屬性。

3.授權申明,表明 某個資源的許可權。

下圖是SAML協議工作的認證示意圖:

1.用戶會嘗試訪問一個應用程序即服務提供者,它可能是一個AWS控制台或vSphere Web客戶端。根據實現方式的不同,客戶端可能會先直接訪問IdP,然後跳過上圖中的第一步。

2.應用程序會檢測IdP以認證用戶,生成SAML AuthnRequest並將客戶端重定向到IdP。IdP即身份提供者,它可能是AD FS或Okta。

3.IdP會對用戶進行身份驗證,創建SAMLResponse並通過用戶將其發布到SP。

4.SP會檢查SAMLResponse和登錄用戶,SP必須與IdP建立信任關係。

這幾步完成後,用戶就可以使用SAML協議了。

SAML的響應架構

對於SAML攻擊,研究者最感興趣的部分就是SAML的響應架構,因為他們會把這個過程複製下來,然後對攻擊行為進行滲透測試。為了能夠正確執行此操作,我們首先要來看看在這部分發送的請求對象——SAMLResponse。 SAMLResponse對象就是IdP發送給SP的內容,而這實際上就是使SP識別和驗證用戶的數據(類似於在Kerberos中KDC生成的TGT)。 SAML 2.0中的SAMLResponse的一般結構如下所示(寫成紫色的部分表示的是結構的所有動態參數):

根據特定的IdP實現,響應斷言(Response Assertion)可能是由IdP的私鑰進行簽名或加密的。通過這種方式,SP可以驗證SAMLResponse確實是由受信任的IdP創建的。

類似於Golden Ticket,如果我們能夠獲取用於對象簽名的密鑰,那麼研究者就可以偽造這樣一個「認證對象」( TGT或SAMLResponse)並冒充任何用戶以獲得對SP的未經授權的訪問。該密鑰包含用戶身份及許可權信息,它對應黃金票據中的KRBTGT以及Golden SAML中的令牌簽名私鑰。不過我們在此要提一下另外一種關於Kerberos票據的觀點,在2014年,微軟安全專家Roger Grimes對Golden Ticket進行了重新定義,他認為Golden Ticket並不是一般所理解的Kerberos票據偽造攻擊,而是Kerberos密鑰分發中心(Key Distribution Center)實施的偽造攻擊。如果按照Roger Grimes的理解,那Golden SAML攻擊也可以定義為IdP偽造攻擊。

在IdP偽造攻擊中,攻擊者可以控制SAMLResponse對象的每個欄位(例如用戶名,許可權集,有效期等)。另外,Golden SAML還具有以下4個攻擊優勢:

1.偽造對象可以在任何位置生成,攻擊者無需使用AD FS即可生成所需的Golden SAML。

2.即使攻擊目標啟用了雙因素驗證,也不會影響攻擊的實現。

3.令牌簽名私鑰(token-signing private key)不會自動更新。

4.如果攻擊目標的登錄密碼發生了修改,是不會影響已生成的SAML。

綜上所述,AWS + AD FS + Golden SAML就等於成功的攻擊行為。

假設你是一個攻擊者,且眼下已經確定了你的目標域,而你現在急需的就是找出下一步攻擊該如何實施?,如果我是你,我就會使用Golden SAML,進一步發起攻擊。

AD FS是微軟提出的一種標準域服務,允許可信業務合作夥伴之間安全共享身份信息。該服務是域環境中的一種服務,可以為聯邦環境中的其他SP提供域用戶身份認證服務。

假設AWS認為你已經攻破了域環境,那麼你就可以通過Golden SAML手法輕鬆獲取雲環境中的任意許可權。要執行Golden SAML攻擊,你還需要對SAML對象的私鑰進行簽名,這類似於需要在Golden Ticket中使用KRBTGT。所以攻擊者無需獲取域管理員訪問許可權,只需掌握AD FS用戶賬戶,就能獲取這個私鑰。

在對Golden SAML進行滲透攻擊測試時,研究者首先掌握了如下7個關鍵信息:

1.令牌簽名私鑰;2.IdP公共證書;3.IdP名稱;4.角色(Role)名稱;5.域名及用戶名;6.AWS中的角色會話名(Role session name);7.Amazon賬戶ID。

其中又以前4項信息最為關鍵。

那問題來了,你如何才能得到這些信息呢?就拿私鑰來說吧,為了得到你需要訪問的AD FS帳戶的私鑰,你需要從個人存儲區中導出私鑰數據,也可以使用諸如mimikatz之類的工具來導出這段數據。而對於其它信息,你可以導入PowerShell管理單元(snapin)的Microsoft.Adfs.Powershell並按以下方式進行操作,不過前提是你必須使用ADFS用戶身份。

獲取ADFS公共證書:

獲取IdP名稱:

獲取角色名稱:

一旦獲取了必備的信息,你就可以直接實施攻擊。首先,你要來檢查一下目標設備上是否有有效的AWS憑據。

如上圖所示,經過檢查,目標設備上沒有有效的AWS憑據,不過接下來你要做的就是在目標設備上生成有效的AWS憑據。現在,你可以使用shimit來生成SAMLResponse並對其進行簽名。

下圖就是使用shimit.py執行Golden SAML攻擊的過程:

具體過程的解釋如下:

1. shimit首先會生成一個與用戶提供的參數相匹配的斷言。在本文的滲透測試中,研究者提供了用戶名,Amazon賬戶ID和角色名稱。然後,shimit會使用用戶指定的私鑰文件來對該斷言進行簽名。最後,通過連接到SP上,然後調用AWS提供的AssumeRoleWithSAML API。

2.從AWS STS獲取訪問密鑰和會話令牌,STS可以為AD FS提供臨時憑證。

3. 將該會話應用於命令行環境,其中已包含aws-cli環境變數,以便用戶使用AWS命令行介面(CLI)。

不過,要注意的是,本文所列舉的Golden SAML攻擊情境具有一定的實驗局限性。儘管研究者可以生成一個SAMLResponse,且在使用-SamlValidity設置的攻擊時間段都有效,但在其它攻擊環境中,AWS會專門檢查這個響應是否是在五分鐘之內生成的,如果是,就不會驗證用戶,如果超過五分鐘,AWS會拒絕用戶的認證請求。正常情況下,伺服器在執行正常檢測過程之前,會先執行這一響應檢查,以確保數據沒有過時。

總結

Golden SAML並不依賴SAML 2.0協議中的漏洞,它不是AWS/ADFS中的漏洞,也不是其他SP或IdP中存在的漏洞。

研究者認為,Golden Ticket並不是漏洞,因為攻擊者必須具有域管理員許可權才能執行。這就是為什麼設備供應商一直沒有解決此問題的原因。退一步講,即使把這個問題解決了,攻擊者還是可以通過各種方法獲得所需的訪問許可權(域管許可權),然後通過Golden Ticket進行持久性攻擊。

Golden SAML與Golden Ticket很相似,也意味著它本身並不是一個漏洞。但攻擊者還是可以利用Golden SAML,在未經授權訪問的AD FS中,獲取所需的任何許可權,然後進行持久性攻擊。

所以,目前還沒有什麼方法能很好地發現此類攻擊行為。如果攻擊者進入了網路環境,那很可能會對最有價值的目標,如DC、AD FS以及其他IdP設施進行破壞。因此,通過本文的測試案例,研究者的安全建議有兩個方面:

1.密切監視並嚴格管理AD FS賬戶的訪問許可權,除此之外,還應周期性地更新簽名密鑰。

2.在部署端點安全解決方案時,把防禦重點放在許可權管理方面,以阻止攻擊者對令牌簽名證書等重要信息進行利用。

對於防禦者來說,我們知道如果這個攻擊是正確的,那麼在你的網路中檢測是非常困難的。此外,根據「假設違約」範式,攻擊者可能會瞄準組織中最有價值的資產(DC,AD FS或任何其他IdP)。這就是為什麼我們建議更好地監視和管理AD FS帳戶(針對此處提到的環境)的訪問許可權,並且如果可能,定期自動滾動簽名私鑰,從而使攻擊者很難。

另外,以CyberArk的Endpoint Privilege Manager為中心,實施以許可權管理為中心的端點安全解決方案將極大地有利於阻止攻擊者擺脫重要資產,如令牌簽名證書。

本文翻譯自:cyberark.com/threat-res,如若轉載,請註明原文地址: 4hou.com/mobile/8739.ht 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

如何高效清除電腦里的惡意軟體?
中國黑客界發生過什麼事?
將計就計,騙一個騙子的錢!
利用動態鏈接共享對象庫進行Linux提權
您是Docs.com用戶嗎?注意你的密碼可能已經泄露了

TAG:信息安全 |