【精選威脅情資】入侵 AD FS Certificates 的幾種有效方式

入侵 AD FS Certificates 的幾種有效方式

本文由奧義智慧 (CyCraft)資安卓越中心規劃建置計畫 (CCoE) 共同發布。

危害與影響

現今,許多大型企業的身分驗證有地對雲同步整合的需求,而 Active Directory Federation Services (AD FS) 為其常見的解決方案。然而,絕大多數企業並沒有將 AD FS 做為核心資產善加管理,容易忽視其安全性。因此本篇報告便以 AD FS 的重要性出發,分析攻擊者如何透過 GoldenSAML ,進而能夠攻擊信任 AD FS 簽章的服務。


分析師觀點

Federation Service (FS) 是 Active Directory Federation Services (AD FS) 的一項角色服務,也是一項相當常見的主流服務,在過往,許多網頁要串接單一簽入整合 (Single Sign-On, SSO) 時,往往會選擇使 AD FS,如今許多雲端服務的身分串接也會選擇透過 FS 進行身分驗證,利用現有的服務直接串接所有需求,而這無疑也提升了 AD FS 服務的重要性。更何況有許多 APT 攻擊案例是透過此種方式從地端攻擊到雲端。

遺憾的是,許多場域並沒有將 FS 伺服器列為重要資產進行管理和防護,有些企業甚至無法盤點主機存在與否。因此分析師特別挑選此篇文章分析其相關危害,以提升企業對於這類服務的安全意識。


描述

2022 年六月,國外資安研究員 Nestori Syynimaa 在 TROOPERS22 研討會整理了關於 AD FS 的攻擊知識。一般來說,AD FS 全名為 Active Directory Federation Services,為企業進行外部身分驗證、SSO 讓異質系統串接身分驗證的重要服務。本篇報告以該篇研討會的內容為基礎,整合目前所有攻擊 AD FS 的已知方式,以讓人了解相關的攻擊面向並進行安全評估。


在介紹攻擊AD FS前,需要先了解AD FS驗證的流程,以下為常見角色解釋:

  • Service Provider (SP):Azure AD
  • Identity Provider (IdP):On-Prem AD FS
  • Security Token (ST):簽發敘述檔Security Assertion Markup Language (SAML);透過ldP簽屬,SP會信任此簽屬者 (ldP)

驗證流程主要分為兩種,以下進行詳細說明:

方式一:透過 SP(例如Azure AD)重新導向至 ldP(例如ADFS),在 ldP 驗證完成後,User 會獲得 Security Token,再提交給 SP。

方式二:直接連線至 ldP,完成身分驗證後獲得 Security Token,使用者會被重新導向至 SP 提交 Security Token。

AD FS驗證的流程
驗證流程圖

  • GoldenSAML 偽造攻擊介紹

新型攻擊技術 GoldenSAML 首先在 2017 年時被發現,其原理在於,假設 Security Token 是透過 ldP 簽屬的,SP 就會信任此簽屬者 (ldP)。所以只要攻擊 ldP 也就是 AD FS,竊取 ldP 的 Private Key,攻擊者便可以任意偽造身分透過 SP 進行身分驗證。2017 到 2020 年間陸陸續續有相關攻擊工具釋出,而在 2020 年 Solorigate APT 事件,研究人員便發現駭客有竊取了AD FS 的 Private Key,利用 GoldenSAML 攻擊進而存取受駭單位的雲端資訊,國外多家大型企業、政府單位都深受其害。

  • 竊取 Private Key 的方式

換言之,GoldenSAML 攻擊的前提是必須竊取 AD FS 伺服器上的 Private Key。因此國外研究員將目前竊取 Private Key 的攻擊方式整理成了決策樹形式,而我們接下來會逐項針對決策的部分,了解會受到什麼樣類型的攻擊。

AD FS 攻擊路徑圖

  • Certificate Type

分為 Managed 與 Custom 兩種形式。Managed 為預設模式,會將 Private Key儲存在配置管理資料庫 (Configuration management database, CMDB),使用 DKM Key(儲存在 AD 結構上)進行加密,因此攻擊者必須獲得 Config 和 DKM Key 才能獲得完整的 Private Key。至於 Custom,即為我們常見的 Windows 儲存金鑰的方式,會將 Private Key 儲存在 certificate store 中。

  • Certificate Type — Custom: Priv Key Exportable

以 Certificate 類型為 Custom 的模式來看,由於金鑰會儲存在 certificate store 內,因此當原本的 AD FS 設定成不可輸出 Private Key 時,攻擊者必須透過工具,例如 Mimikatz 進行竊取。反之,如果原先設定為可以輸出,攻擊者透過內建工具即可完成金鑰竊取。

  • Certificate Type — Managed: Access Key

如果攻擊者沒有成功獲得 AD FS 的主機控制權,但獲得了適當的 LDAP 權限,攻擊者就可以透過 LDAP 進行遠端竊取。另一方面,如果攻擊者已獲得 AD FS 的主機控制權,就可以透過 .NET Reflection 竊取金鑰。此手法就如同 NOBELIUM 的 FoggyWeb 惡意程式。該惡意程式也有被研究人員關聯到 Solorigate APT 事件,顯見該攻擊手法的濫用程度。

  • Certificate Type — Managed: Access Config

如果攻擊者對 AD FS 有存取權限,便可用 SQL Client 進行存取或是透過 WMI 對 AD FS 存取設定資訊,或是用 .NET Reflection 讀取設定。攻擊者若是採用遠端存取的方式,就需要知道 AD FS 將設定存放在預設的 WID 或是 SQL Server。而獲得 SQL 存取權限、AD FS 服務帳號或本地管理員帳號,都能進行遠端存取。最後,將 Key 與 Config 結合在一起就可以解出 Private Key,並用於 GoldenSAML 攻擊中,詳細組合流程可以參考 Douglas Bienstock (@doughsec) 和 Austin Baker (@BakedSec) 在 TROOPERS19 研討會的分享。


緩解措施

以下幾種方式可以緩解相關攻擊帶來的威脅:

  1. 將 AD FS 伺服器與其 SQL 伺服器當作核心資產保護。
  2. 在 Azure AD 或是其他 SP 上強制執行多重要素驗證 (Multi-Factor Authentication) 機制。如此一來,即使被 ldP 驗證過,也能夠防止 GoldenSAML 攻擊繞過 MFA 的驗證機制。
  3. 針對 Managed Certificate,對防火牆進行合適的設定,例如只允許 AD FS 與其 Proxy 存取。
  4. 針對 Custom Certificate,對防火牆進行合適的設定,例如只允許 AD FS Proxy,憑證則建議存放於硬體加密器 (Hardware Security Module, HSM)。

參考資料
  1. DrAzureAD. “Eight ways to compromise AD FS certificates” Accessed August 9, 2022.
  2. TROOPERS. “I am AD FS and so can you: Attacking Active Directory Federated Services” Accessed August 9, 2022.

Writer: CyCraft

關於 CyCraft

奧義智慧科技(CyCraft Technology)是一家專注於 AI 自動化技術的資安科技公司,成立於2017年。總部設於台灣,在日本和新加坡均設有子公司。為亞太地區的政府機關、警政國防、銀行和高科技製造產業提供專業資安服務。獲得華威國際集團(The CID Group)和淡馬錫控股旗下蘭亭投資(Pavilion Capital)的強力支持,並獲得國際頂尖研究機構 Gartner、IDC、Frost & Sullivan 的多項認可,以及海內外大獎的多次肯定。同時也是多個跨國資安組織和台灣資安社群的成員和合作夥伴,長年致力於資安產業的發展。

訂閱奧義智慧電子報

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
點擊此按鈕,即表示您同意奧義智慧的隱私權政策,並同意奧義智慧使用您所提供的資訊並寄送資訊給您。您隨時可以取消訂閱。