如何制止HASH攻擊
如今,從密碼散列入手已經(jīng)是過時(shí)的招數(shù)。當(dāng)下攻擊者們采用的是清一色的hash注入攻擊。通過這種攻擊方式,那幫混球能夠取得散列--無論是從密碼散列存儲(chǔ)數(shù)據(jù)庫(kù)中還是內(nèi)存中--并利用它們重新生成一套完整的身份驗(yàn)證會(huì)話。
密碼散列--或任何一種身份驗(yàn)證模式--是登錄行為成功與否的核心所在。這類信息是通往禁宮的鑰匙,因此幾乎每種安全保障機(jī)制都在盡力試圖防止攻擊者拿到身份驗(yàn)證資料。倘若他或她獲得了超級(jí)管理員訪問權(quán)限,那么任何操作、任何實(shí)施途徑對(duì)他們來說都是可行的,而且整個(gè)過程絕對(duì)會(huì)暢通無阻--因?yàn)閷?duì)于防御體系來說,他們是完全合法的。
hash式攻擊能夠成功攻克任何操作系統(tǒng)及任何身份驗(yàn)證協(xié)議,甚至Kerberos協(xié)議(由麻省理工學(xué)院開發(fā)的一套強(qiáng)力安全認(rèn)證系統(tǒng))對(duì)此也束手無策。此項(xiàng)技術(shù)同樣適用于智能卡類的登錄行為(因?yàn)樵谖④浀腤indows系統(tǒng)中,網(wǎng)絡(luò)終端上的密碼散列的存儲(chǔ)及調(diào)用仍然源自局域網(wǎng)管理器上的驗(yàn)證機(jī)制)。
我一直試圖向客戶們灌輸這樣的思路,即真正可怕的并不是hash攻擊本身。我們需要關(guān)注、且有能力關(guān)注的應(yīng)該是如何將那些混球制止在實(shí)施hash攻擊前所必需的準(zhǔn)備工作過程中。在攻擊者已經(jīng)獲得了超級(jí)管理員身份時(shí)還執(zhí)著于如何對(duì)抗hash攻擊,就像是在自己的車被小偷盜走后,還在心存僥幸地觀望車上的手剎是否能放緩他的腳步一樣。不過,當(dāng)hash攻擊反復(fù)來襲時(shí),它必然會(huì)引起我們--及我們的客戶--的注意。事實(shí)上,此類攻擊時(shí)下確實(shí)有愈演愈烈之勢(shì)。
抵御注入
正如我在前面提到的,能夠完全抵御hash攻擊的終極機(jī)制并不存在,但這并不意味著我們就應(yīng)該在此類侵襲面前坐以待斃。安全性畢竟并不是二進(jìn)制代碼,也不是非黑即白的二選一。安全性的真正含義是在完全安全與完全危險(xiǎn)之間取較為適中的某個(gè)平衡點(diǎn)。
我曾經(jīng)看到過通過禁用低強(qiáng)度密碼散列來對(duì)抗高級(jí)持續(xù)威脅的技術(shù),這種辦法即使在攻擊者的工具非常強(qiáng)大、能夠輕松應(yīng)對(duì)高強(qiáng)度密碼的情況下仍然能夠奏效。因?yàn)楣粽呤聦?shí)上根本不知道較弱的密碼散列已經(jīng)被禁用,因此他們認(rèn)為沒必要嘗試hash攻擊。
在林林總總的hash攻擊防御方案之中,防止攻擊者獲取超級(jí)管理員訪問權(quán)限無疑是最重要、最核心的手段。遺憾的是,在多年來的傳統(tǒng)計(jì)算機(jī)安全防御工作討論中,我已經(jīng)無數(shù)次強(qiáng)調(diào)過保持登錄用戶權(quán)限最小化、反惡意軟件工具、白名單、防火墻等等的必要性。然而,我的客戶們往往不會(huì)主動(dòng)就hash攻擊跑來求助,直到他們意識(shí)到自己的防御體系已經(jīng)形同虛設(shè)。
我們可以設(shè)下層層阻礙,令攻擊者無法順利將散列信息從內(nèi)存中提取出來。在Windows系統(tǒng)中,密碼散列能夠通過下列登錄類型從內(nèi)存中提取得到:交互、批處理、服務(wù)、解鎖、遠(yuǎn)程交互以及緩存交互。表面上看這似乎已然包括了我們耳熟能詳?shù)乃械卿涱愋停钦?qǐng)注意,網(wǎng)絡(luò)登錄并不在其中。因此,單純對(duì)共享中的NetBIOS驅(qū)動(dòng)器進(jìn)行訪問是無法從內(nèi)存中提取出密碼散列的。
另外,盡管注銷操作常常能幫我們清空內(nèi)存中的密碼散列,但應(yīng)用程序及API卻可能對(duì)其予以完整保留,因此這種作法并不完全可靠。注銷后再重新啟動(dòng)計(jì)算機(jī)的方式最為理想,它能保證內(nèi)存中不再殘留任何涉及密碼散列的信息。#p#
阻斷上述途徑
我常常提醒客戶,務(wù)必盡量減少前文提到過的各類特權(quán)賬戶登錄類型。在大多數(shù)運(yùn)行環(huán)境中,我一般會(huì)利用遠(yuǎn)程桌面協(xié)議或其它類型的交互式遠(yuǎn)程軟件來進(jìn)行管理、故障排除并訪問服務(wù)器及工作站。這種方式簡(jiǎn)單高效,但副作用也同樣明顯--高權(quán)限信息往往會(huì)殘留在運(yùn)行環(huán)境當(dāng)中,而此種狀況如果發(fā)生在存在木馬或是不受信任的機(jī)器上,后果無疑非常嚴(yán)重。
相反,我鼓勵(lì)客戶通過非交互式的方法來管理計(jì)算機(jī)。使用控制臺(tái)工具代替遠(yuǎn)程桌面協(xié)議,我們同樣能夠以遠(yuǎn)程方式連接到目標(biāo)計(jì)算機(jī)。大多數(shù)微軟管理控制臺(tái)工具能夠重新定向到新的遠(yuǎn)程目標(biāo)計(jì)算機(jī)。還有,用PowerShell腳本代替手動(dòng)輸入密碼的過程。
我有許多優(yōu)秀的同事,他們與我抱有同樣的觀點(diǎn),即盡可能取消所有具備超級(jí)管理員權(quán)限的賬號(hào)--或者最多保留一個(gè)。在微軟Active Directory體系中(我本人正是一位全職微軟員工),我們可以利用"授權(quán)"功能為指定用戶提供管理員權(quán)限,但又不像超級(jí)管理員那樣能夠掌控一切,這種方案類似于設(shè)置域管理員或是企業(yè)業(yè)務(wù)管理員。就我所知,沒有哪位域管理員或業(yè)務(wù)管理員在完全工作時(shí)真正需要超級(jí)管理員那么高級(jí)別的執(zhí)行能力。相反,只賦予工作人員必需的權(quán)限既不會(huì)影響他們的正常操作,在散列被竊取后,攻擊者也無法獲得超級(jí)管理員賬戶。
我的客戶群體中有一些將希望寄托于頻繁頻繁再頻繁地修改密碼或者使用一次性密碼。的確,如果攻擊者獲得的是此類散列,他們能夠?qū)嵤┎僮鞯臅r(shí)間會(huì)變得相對(duì)比較短。有多種供應(yīng)商工具能夠協(xié)助我們達(dá)成上述目標(biāo)。同時(shí),最大限度避免密碼重復(fù)使用也能在保障密碼散列丟失時(shí)防止其它安全區(qū)塊發(fā)生危險(xiǎn)。
最好嘗試使用最新的操作系統(tǒng)。它們總是具備一些早期版本所沒有的防御體系。舉例來說,在Vista、Windows 7以及Windows Server 2008(及之后的版本)中,傳統(tǒng)的NT散列被基于Kerberos協(xié)議的AES散列所取代。雖然hash攻擊的發(fā)起者可能最終還是能夠侵入AES,但至少目前來說他們對(duì)此還沒有太好的辦法,因?yàn)檠巯逻€沒有哪款hash攻擊工具是針對(duì)AES制作的。盡管這種安全狀態(tài)只是暫時(shí)的,不過還是要牢記安全的概念是模糊的。任何能夠有效降低hash攻擊危險(xiǎn)的方案都是很有價(jià)值的。
"彈"窗很重要
另一項(xiàng)重要建議是:管理員們應(yīng)該在執(zhí)行管理任務(wù)時(shí)抱有最大的安全性考量,且只使用受信任的計(jì)算機(jī)。大家不應(yīng)該推諉管理職責(zé),而是將其貫徹到日常的網(wǎng)頁瀏覽、電子郵件接收以及訪問社交網(wǎng)站的全部流程當(dāng)中。此外,在處理管理方面的任務(wù)時(shí)盡可能創(chuàng)建"彈"窗。這些彈窗較難(希望如此)受到影響,也就從另一個(gè)側(cè)面保護(hù)了超級(jí)管理員的散列信息。當(dāng)彈窗處于最前時(shí),管理員應(yīng)該使用非交互式遠(yuǎn)程工具來實(shí)現(xiàn)對(duì)其它對(duì)話框體的管理。這樣一來,散列內(nèi)容實(shí)際上存儲(chǔ)在另一臺(tái)計(jì)算機(jī)的內(nèi)存當(dāng)中。如果管理員以交互式方式登錄到其它某臺(tái)不受信任的計(jì)算機(jī)上時(shí),請(qǐng)確保先注銷、再重啟這一安全操作流程。
有些企業(yè)甚至將"彈出"域設(shè)置為管理員專用。他們采取單向的、有選擇性的信任方式,借以避免某類身份驗(yàn)證信息會(huì)鉆了可信任及不可信任兩種標(biāo)準(zhǔn)之間的空子。
還可以考慮利用IPsec或者AuthIP對(duì)特定計(jì)算機(jī)之間的互相登錄進(jìn)行限制,以防止攻擊者在所有計(jì)算機(jī)上使用竊取來的散列信息。最后,請(qǐng)一定記住保持可以檢測(cè)出hash攻擊工具的反惡意軟件始終處于運(yùn)行狀態(tài)。一旦發(fā)現(xiàn)潛伏于我們網(wǎng)絡(luò)周圍蠢蠢欲動(dòng)的危險(xiǎn)因素,忙碌的一天也將隨之開始。
我希望自己在這篇文章中分享的一些新方法能夠切實(shí)幫助大家減少hash攻擊帶來的種種風(fēng)險(xiǎn)。如果各位在這方面有獨(dú)到的見解或技巧,也請(qǐng)不吝指教。
【編輯推薦】