Kerberos能抵御哈希值傳遞攻擊嗎?
在上篇“如何防御哈希值傳遞攻擊”發(fā)表后,很多朋友詢問Kerberos身份驗證是否能夠有效抵御哈希值傳遞攻擊。本文我們將討論Kerberos抵御哈希值傳遞攻擊的問題,Kerberos是用于各種計算機系統(tǒng)的一種開放式身份驗證協(xié)議,Kerberos在多方參與的服務間傳遞加密密鑰保護的身份驗證“票”,密碼哈希既不被發(fā)送也不被存儲,所以無法被獲取或者重復利用。
Kerberos是部署在Windows2000中的默認身份驗證協(xié)議,現(xiàn)在很多操作系統(tǒng)使用Kerberos連接到Windows 2000和更高版本的Kerberos保護的資源和服務。在現(xiàn)在的Windows網(wǎng)絡中,Kerberos身份驗證廣泛使用,它可能能夠減少哈希值傳遞風險,但是并不像很多人想象的那么強大。
首先,哈希值傳遞攻擊只針對互動的登錄,在windows系統(tǒng)中,哈希密碼既沒有被發(fā)送也沒有被存儲在遠程服務器或者windows內(nèi)通過網(wǎng)絡連接(除RDP連接外)的主機程序中,無論是使用NTLM/NTLMv2還是Kerberos。攻擊者只能捕捉存儲在SAM中本地計算機或者Active Directory數(shù)據(jù)庫中的密碼哈希,或者用戶以交互式方式登錄時的密碼哈希。攻擊者能夠獲取對服務器電腦的高權(quán)限訪問并捕捉網(wǎng)絡中每個連接用戶的密碼的說法是不現(xiàn)實的,在大多數(shù)情況下,Kerberos并不提供比NTLM/NTLMv2更多的保護。
其次,當用戶以交互方式登錄到使用Kerberos的計算機,他/她的NT密碼哈希被存儲在計算機的內(nèi)存中并且可能被竊取。這是因為所有的windows計算機必須支持至少一種其他身份驗證協(xié)議,例如LanManager、NTLM或者NTLMv2。在windows server 2008之前,NT哈希是用于被稱為“Kerberos前身”的協(xié)議中,在W2K8和更高的操作系統(tǒng)中使用的是AES。
值得注意的是,從Windows 7和Windows Server2008 R2開始,除Kerberos外的身份驗證協(xié)議可以通過Restrict NTLM功能來關(guān)閉,不過,這很難部署到最常用的操作系統(tǒng)中。
在大多數(shù)網(wǎng)絡中,運行的都是較舊的身份驗證協(xié)議。例如,很多應用程序和服務并不理解Kerberos或者接受它們的驗證票。有些應用程序(例如微軟的sharepoint)能夠理解Kerberos但是默認啟用的是NTLM以達到兼容目的。很多代理服務器和負載平衡器不允許Kerberos運行,卻隨時允許NTLM通過。默認情況下,IP地址提及的網(wǎng)絡服務器(而不是DNS或者NetBIOS名)不會使用Kerberos,較舊的或者未配置的Samba安裝不會使用underconfigured。
網(wǎng)絡沒有運行大量的NTLM身份驗證是極其罕見的情況。在大多數(shù)情況下,NT哈希被存儲在初始計算機中,即時只有使用Kerberos時。
同樣需要記住的是,獲取哈希值首先需要高級別訪問。如果攻擊者可以訪問并查看NT哈希,他/她就能夠獲取Kerberos TGT(票證授權(quán)票)并通過驗證。
Kerberos還是具備一定保護能力的,目前似乎還沒有工具可以攻擊Kerberos,攻擊者也很難制作這樣的工具,但是攻擊者可以輕松地利用內(nèi)存掃描儀或者拆卸(例如IdaPro)來進行攻擊。(注意:NT哈希存儲在Kerberos TGT中,并可以從中獲取該NT哈希,除了在最新的windows操作系統(tǒng)上外。)
身份驗證者捕捉或者重復使用是所有對稱型身份驗證系統(tǒng)面臨的問題,包括大部分Kerberos部署系統(tǒng)。在Unix、Linux和BSD中,Kerberos能夠以非對稱形式被使用,但大部分情況卻不能這樣使用。你同樣可以使用其他非對稱身份驗證程序,如Sesame、智能卡、加密密鑰卡和生物識別設備等,但每種方法都有自己的缺點和局限性。例如,很多智能卡使用的是密碼哈希,很多生物識別技術(shù)要求使用密碼來運行。計算機安全比表面看起來更復雜。
有些人還吹捧crypto key fobs的反重放機制,Kerberos確實有反重放功能,但哈希值傳遞攻擊并不屬于重放攻擊,哈希值傳遞攻擊利用的是最終身份驗證要素:密碼哈希,并將哈希用于新會話。
Kerberos可能在某些特定情況下能夠緩解哈希值傳遞攻擊,但在大多數(shù)環(huán)境中它并不能明顯減少哈希值傳遞的風險。我們可以列舉出很多理由(性能、其他安全保護、相互驗證等)來說明應該使用Kerberos驗證而不是較舊的驗證協(xié)議,大家應該注意這一點。
【編輯推薦】