Black Hat USA 2000 - Defending Your Network with Active Directory Services
三句話摘要
講解 Windows 2000 中 Kerberos 身份驗證系統的架構與運作機制,對比 NTLM 的安全缺陷,說明跨域互通及加密檔案系統的實現方式。 Windows 2000 Kerberos 透過票證式設計與加密會話金鑰機制從根本上消除了 NTLM 的密碼雜湊網路傳輸風險,雖然初期部署複雜度與系統同步要求較高,但其快取機制與跨域支援在大規模企業環境中提供卓越的可擴展性和安全性保證。 Kerberos 核心架構:基於三方實體(KDC、客戶端、伺服器)的票證系統。Windows 中 KDC 即網域控制站,與 Active Directory 緊密整合。客戶端登入時密碼轉為單向雜湊值作為本地加密金鑰,絕不透過網路傳輸,根本上消除了 NTLM 中雜湊值被嗅探破解的風險。
重點整理
重點- 1
Kerberos 核心架構:基於三方實體(KDC、客戶端、伺服器)的票證系統。Windows 中 KDC 即網域控制站,與 Active Directory 緊密整合。客戶端登入時密碼轉為單向雜湊值作為本地加密金鑰,絕不透過網路傳輸,根本上消除了 NTLM 中雜湊值被嗅探破解的風險。
- 2
身份驗證流程的六步設計:客戶端先獲得票據授予票據(TGT),再用 TGT 向不同伺服器取得服務票據,雙方最終共享會話金鑰通訊。每次驗證中,被加密的內容對未授權者呈現透明,確保即使流量被截獲也無法利用。
- 3
可擴展性的關鍵優勢:雖然初次驗證 6 次網路往返略多於 NTLM 的 5 次,但客戶端快取 TGT 長達 8 小時後,每次伺服器存取僅需 2 次往返。對 20 個檔案存取,Kerberos 需 40 次往返而 NTLM 需 100 次,在大規模環境中效能明顯優於。
- 4
跨域驗證與林的限制:支援多域環境,KDC 若無法尋獲跨域伺服器會返回引用票據,引導客戶端向正確 KDC 請求;系統會記錄票據通過的域路徑供稽核。但不支援跨林驗證,此時會退回到安全性較低的 NTLM,企業間合作時需特別注意。
實用技巧與重點
乾貨- 協定標準:基於 RFC 1510 與 Kerberos 5 版本
- 時間同步要求:伺服器時間差異不超過 5 分鐘,否則授權失敗
- 票據有效期:預設 8 小時(可配置)
- 密鑰演算法:客戶端公鑰使用 RSA;檔案批量加密使用 DESX(微軟開發的 DES 擴展)
- API 呼叫數量:Windows 約 15 個、Unix 約 30 個,影響應用移植成本
- DNS 記錄類型:使用標準 SRV 記錄定位 KDC
- EFS 核心元件:加密 API、EFS 服務、EFS 驅動程式、EFS 檔案系統執行時間庫
- 恢復代理要件:每個加密檔案至少需一個使用者憑證與一個復原代理憑證
- 密鑰儲存位置:本機電腦上的 RSA 資料夾,永不存儲於 Active Directory
- Netcat 工具:JD 開發支援 Kerberos 的網路連接工具,支援字元級或批量級加密
- 相容性:NT4 用戶端無法使用 Kerberos,僅支援 NTLM;跨林環境自動回退 NTLM
結論
結論“Windows 2000 Kerberos 透過票證式設計與加密會話金鑰機制從根本上消除了 NTLM 的密碼雜湊網路傳輸風險,雖然初期部署複雜度與系統同步要求較高,但其快取機制與跨域支援在大規模企業環境中提供卓越的可擴展性和安全性保證。”
完整解析
詳細Windows 2000 的 Kerberos 實現代表了微軟對身份驗證技術的根本升級。其核心創新在於放棄 NTLM 在網路上傳輸密碼雜湊的危險做法。當使用者登入時,本地安全機構(LSA)將密碼轉換為單向雜湊值,該雜湊僅作為客戶端的加密金鑰保存在本地記憶體中。系統隨後向金鑰分發中心(KDC,即網域控制站)發送明文票據授予請求,KDC 查詢 Active Directory 並返回票據授予票據(TGT)。這個 TGT 的關鍵部分由 KDC 私密金鑰加密(客戶端無法打開),但內部包含用客戶端密鑰加密的會話金鑰。客戶端解密此會話金鑰並快取 TGT,此後 8 小時內無需重新登入。
當客戶端要存取特定伺服器(如印表機伺服器)時,整個流程開始第二階段。客戶端發送包含 TGT 的伺服器請求到 KDC,KDC 驗證 TGT、查詢 Active Directory 取得伺服器的加密金鑰,並產生新的服務票據。這個服務票據的精妙之處在於雙重加密:內層用伺服器私密金鑰加密,外層用客戶端會話金鑰加密。客戶端無法觸及由伺服器金鑰保護的部分,但可解密自己的會話金鑰副本。客戶端用此會話金鑰加密服務請求並連同票據發送給伺服器。伺服器用自己的私密金鑰解鎖服務票據,取得會話金鑰,隨後驗證時間戳確保票據未過期。若驗證通過,雙方已握有相同的對稱會話金鑰,可進行加密通訊。
跨域驗證導入引用機制以支援企業多域架構。當客戶端請求不同域中的伺服器時,若本域 KDC 在 Active Directory 全域編錄中找不到該伺服器,會返回特殊的引用票據,告知客戶端應向哪個 KDC 發送實際請求。系統會自動追蹤票據經過的每個域,形成一條可稽核的路徑。然而,Windows 2000 設計上有一項重要限制:不支援跨林驗證。林是指由多個域組成的樹狀集合,若用戶端跨越不同林邊界,系統無法在 Active Directory 全域編錄中查到對方資訊,會自動降級為 NTLM 身份驗證,這在涉及多家公司合作的場景中成為安全隱患。
Kerberos 相比 NTLM 的可擴展性優勢源自快取機制。初次身份驗證看似較為繁瑣(6 次網路往返 vs NTLM 的 5 次),但客戶端會快取 TGT 長達 8 小時。此後每次伺服器存取只需 2 次往返(一次取得服務票據、一次實際請求)。若使用者一天需存取 20 個檔案,Kerberos 總共需 40 次往返,而 NTLM 每次都要完整 5 步流程,總計 100 次往返。在大規模企業環境中,這種差異轉化為顯著的網路負載與延遲降低。
Windows 與 Unix Kerberos 的實現差異影響深遠。Windows 整合度更高:使用者登入後自動取得票據而無需執行額外命令;Unix 使用者必須執行 Kinit。微軟將所有服務預設設為 Kerberos 認證,但僅限身份驗證層級,不進行資料加密;Unix 可進一步配置會話金鑰加密實際傳輸的資料。此外,Windows 實現將驗證服務(AS)與票據授予服務(TGS)混在同一伺服器內無法分離;Unix 允許將其分開部署為獨立堡壘主機,每台伺服器功能單一易於防護。API 層面差異也很大,Windows 約 15 個 API、Unix 約 30 個,使得跨平台應用移植工作量顯著增加。
加密檔案系統(EFS)採用混合加密策略以兼顧效能與安全。檔案內容本身用對稱批量加密金鑰(採 DESX 演算法)加密,該金鑰再用使用者的 RSA 公鑰加密後儲存於檔案頭部。系統為每個加密檔案建立兩個關鍵結構:資料解密金鑰(DDK)用使用者公鑰加密、資料復原金鑰(DRK)用復原代理公鑰加密。所有密鑰儲存在用戶端本機的 RSA 資料夾中,使用非分頁記憶體以防止頁面檔案洩露。檔案加密狀態與其所在位置緊密相關:若複製到非 NTFS 分割區會自動解密;但使用 Windows 2000 備份工具備份則保持加密狀態。復原代理應定期輪換並妥善歸檔其私密金鑰在離線儲存設備中,建議保留兩份副本以防單點故障。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

