Kerberos 是一種網路認證協定,旨在透過秘密金鑰加密(Secret Key Cryptography)技術,為使用者與伺服器提供強驗證(Strong Authentication)。它是微軟 Active Directory (AD) 的基礎,也是目前企業環境中最常見的單一登入(SSO)解決方案。

本文整理 Kerberos 的運作原理、在安全架構中的定位,以及相關的漏洞利用方式。


一、Kerberos 協定核心:三方互動架構

Kerberos 是一個基於「可信任第三方」的互動系統,其安全性依賴於以下三個核心元件的協作:

  1. 主體(Principal): 發起請求的實體,包括使用者、工作站電腦或服務應用程式。

  2. 目的端伺服器(Endpoint Destination Server): 提供應用程式或資訊資源的伺服器(如檔案伺服器、Web 伺服器)。

  3. 金鑰發佈中心(Key Distribution Center, KDC): Kerberos 的核心信任中心,通常位於網域控制站(DC)。KDC 包含兩個功能模組:

    • 驗證伺服器(AS, Authentication Server):負責驗證主體身分。
    • 票證授予伺服器(TGS, Ticket-Granting Server):負責發放存取服務所需的票證。


二、驗證與票證交換流程

Kerberos 的運作邏輯類似於「換票機制」,主要分為三個階段:




1. 初始驗證:取得 TGT

  • 流程:使用者向 KDC 的 AS 發送請求。AS 使用資料庫中儲存的主體秘密金鑰(通常為密碼雜湊值)進行驗證。
  • 結果:驗證通過後,AS 發放票證授予票證(TGT, Ticket-Granting Ticket)
    技術說明:TGT 使用 KDC 自身的金鑰加密,用戶端無法解密或偽造,僅作為「已通過身分驗證」的憑證。

2. 請求服務:取得 ST

  • 流程:當使用者需要存取特定資源時,將 TGT 提交給 TGS。
  • 結果:TGS 驗證 TGT 有效後,產生並發放服務票證(ST, Service Ticket)

    技術說明:ST 使用「TGS 與目標伺服器共享的金鑰」加密,並包含雙方通訊所需的 Session Key。

3. 資源存取

  • 流程:使用者將 ST 提交給應用程式伺服器。
  • 結果:伺服器解密 ST,確認票證有效後,授予資源存取權。

4. 單一登入(SSO)機制

    使用者取得 TGT 後,在票證有效期內存取網域內其他服務時,僅需重複「請求 ST」的步驟,無需再次輸入密碼。


三、協定安全性與限制

Kerberos 的設計雖然嚴謹,但在實作與環境配置上仍有以下限制:

  • 依賴對稱加密:安全性基礎在於 KDC 與各參與者之間共享的秘密金鑰。
  • 時間同步要求嚴格:為防止重放攻擊(Replay Attack),票證包含時間戳記。若用戶端與伺服器的時間誤差過大(預設通常為 5 分鐘),驗證將失敗。這也意味著 NTP(網路校時協定)服務的穩定性至關重要。
  • 僅提供驗證,不強制傳輸加密:Kerberos 主要負責「身分驗證」。雖然它會協商 Session Key 供後續加密使用,但資料傳輸是否加密(Confidentiality),取決於應用程式層的實作或是否搭配 IPSec 等協定。


四、Kerberos 在身分管理中的定位

在企業 IT 架構中,Kerberos 扮演以下角色:

  • SSO 解決方案:解決使用者需記憶多組密碼的問題。
  • 身分儲存庫整合:與 LDAP/Active Directory 深度整合,作為身分驗證的標準協定。
  • AAA 功能實作:完整支援認證(Authentication)、授權(Authorization)與審計(Accounting)。


五、Kerberos 漏洞利用(Exploitation)分析

儘管 Kerberos 協定設計完善,但其集中化管理的特性與實作細節,使其成為攻擊者的高價值目標。目前的攻擊手法主要可分為架構風險、密碼破解、憑證竊取與票證偽造四大類。

1. 架構風險:KDC 單點故障

KDC 是整個 Kerberos 架構中的單點故障(Single Point of Failure, SPoF)所在。

  • 服務可用性:若 KDC 服務中斷,全網的驗證機制將停擺,導致使用者無法存取資源。
  • 全面淪陷風險:若 KDC 被入侵,攻擊者將取得全網資源的控制權。因此,KDC 需具備最高級別的實體隔離與邏輯防護。

2. 密碼猜測與破解攻擊

這類攻擊主要針對密碼強度不足或加密設定較弱的帳戶。

  • Kerberoasting 攻擊:這是一種針對服務帳戶的離線密碼猜測攻擊

    • 原理:攻擊者向 KDC 請求綁定特定服務主體名稱(SPN)的服務票證(ST)。
    • 手法:由於 ST 是使用目標服務帳戶的密碼雜湊進行加密,攻擊者取得票證後,可將其導出並在離線環境下進行暴力破解。一旦破解成功,即可獲取該服務帳戶的明文密碼。

3. 票證竊取與重用攻擊

攻擊者不直接破解密碼,而是竊取現有的有效票證進行非法存取。

  • 重放攻擊(Replay Attack)

    • 原理:若網路時間同步視窗設定不當或快取機制有漏洞,攻擊者可攔截網路上傳輸的 TGT 或 ST 並重複發送。
    • 影響:即便攻擊者不知道密碼,仍能在票證有效期內,利用截獲的票證欺騙伺服器以通過驗證。

  • 票證傳遞(Pass the Ticket, PtT)

    • 原理:Windows 系統會將 Kerberos 票證暫存於記憶體中的 LSASS(Local Security Authority Subsystem Service)處理程序。
    • 手法:攻擊者透過工具(如 Mimikatz)從 LSASS 記憶體中竊取已驗證的 TGT 或 ST。
    • 影響:攻擊者可直接將這些票證注入自己的連線階段(Session),偽裝成合法使用者存取資源,完全繞過密碼驗證程序。

4. 票證偽造與權限維持

這是最高級別的攻擊,攻擊者透過竊取關鍵金鑰,自行「印製」票證以達到權限維持(Persistence)。

  • 銀票證(Silver Ticket)—— 偽造服務票證

    • 條件:攻擊者取得特定服務帳戶的密碼雜湊值。
    • 手法:攻擊者可繞過 KDC,自行簽發偽造的服務票證(ST)。
    • 影響:攻擊者擁有該服務在目標伺服器上的所有權限。由於不經過 KDC,此類攻擊較難被網域控制站的日誌偵測。

  • 黃金票證(Golden Ticket)—— 偽造票證授予票證
    • 條件:攻擊者取得 KDC 服務帳戶 krbtgt(Key Distribution Center Service Account) 的密碼雜湊值。
    • 手法:攻擊者可偽造任意使用者的票證授予票證(TGT)。
    • 影響:這相當於取得了整個網域的「萬能鑰匙」。攻擊者可將自己偽裝成網域管理員,設定極長的票證有效期(例如 10 年),且因 TGT 是由攻擊者自行簽發,即便使用者修改密碼也無法阻斷其存取權限。


結語

Kerberos 作為企業網路安全的基石,提供了高效且集中的驗證機制。然而,管理者必須理解其運作原理與潛在弱點(如票證竊取與權限維持攻擊),才能正確配置防護策略,確保身分驗證系統的完整性。