不要輕率的認(rèn)為目前的密碼很安全 測試一下你密碼強(qiáng)度
原創(chuàng)【51CTO.com獨(dú)家翻譯】大多數(shù)密碼被破解情景是:攻擊者將截獲的哈希值變換為純文字的密碼形式,他們使用離線攻擊和哈希表或彩虹(rainbow)表數(shù)據(jù)庫。如果想截獲密碼的哈希值,那么攻擊者得事先做很多工作。在多數(shù)情況下,攻擊者必須具備很高 訪問權(quán)限(如管理員admin權(quán)限或root權(quán)限),從而才能得到相應(yīng)的哈希值;如果他們成功獲得哈希值,那么他們能在其他方面給受害者帶來更多的破壞。那么,為什么我們只討論密碼破解呢?
除此之外,在Windows操作系統(tǒng)的領(lǐng)域里,遠(yuǎn)程攻擊者必須獲得計(jì)算機(jī)的本地管理員訪問權(quán)限和還要能訪問NetBIOS,但是這些行為往往被外圍防火墻阻止了。盡管人們普遍樂觀,但是在今天的技術(shù)條件下,攻擊者離開了網(wǎng)絡(luò)不可能嗅探得到Windows系統(tǒng)登錄密碼的哈希值。另外,如果攻擊者得到了密碼的哈希值,他或她還可以進(jìn)行“哈希值傳遞” 攻擊("pass-the-hash" attack),這就省去了在第一時(shí)間對該哈希值進(jìn)行轉(zhuǎn)換的工作。
或許在10年前,一個(gè)復(fù)雜的、6至8個(gè)字符的密碼就已經(jīng)足夠保證用戶的安全需要了,但放在今天肯定不行,所以不要輕率的認(rèn)為自己目前的密碼很安全。我(指這篇專欄文章的作者)仔細(xì)查看過的大多數(shù)Linux/Unix操作系統(tǒng)都沒有提供相應(yīng)的帳戶鎖定機(jī)制。而對Windows操作系統(tǒng)來說,真正的管理員(Administrator)帳戶是不能被鎖定的,一些軟件程序也不會(huì)記錄帳戶鎖定機(jī)制。許多公司還都禁用了其帳戶鎖定機(jī)制,以防止能夠自動(dòng)運(yùn)行的蠕蟲(如Conficker蠕蟲)鎖定所有用戶的帳戶,從而避免造成的間接攻擊事件。
此外,大多數(shù)企業(yè)仍缺乏足夠充分的審計(jì)制度,不能有效的提醒管理員系統(tǒng)出現(xiàn)的多次失敗登錄嘗試,即便該登錄系統(tǒng)的人數(shù)超過數(shù)十萬。因此,遠(yuǎn)程攻擊者可以通過列舉出系統(tǒng)所有的外部訪問點(diǎn)(如可以訪問Web的Outlook、終端服務(wù)器、SharePoint、FTP、SSH、RDP、Telnet等等),從而對管理員帳戶密碼進(jìn)行猜測,直到密碼被破解為止。
盡管如此,如果沒有對系統(tǒng)上的這些軟件進(jìn)行密碼滲透測試,我很難向客戶證明僅有6至8個(gè)字符的密碼是多么容易被破解。我很喜歡進(jìn)行這樣的滲透測試(通常情況下,我用三天的時(shí)間就可以破解大部分的密碼),但與客戶簽訂的合同常常規(guī)定禁止我這么去做。因此,我決定做一件好事,創(chuàng)建一個(gè)基于電子表格的計(jì)算器,在這個(gè)計(jì)算器中你可以輸入自己目前的密碼策略,從而知道你的密碼在一定的時(shí)間段內(nèi)可能會(huì)面對多少次來自攻擊者的密碼猜測。你可以從這里下載該電子表格。
破解公開密碼
據(jù)我所知,這是目前唯一一個(gè)顯示現(xiàn)實(shí)世界密碼猜測攻擊成功率的計(jì)算器。通常情況下,密碼真正的保密強(qiáng)度來自于幾個(gè)方面的,包括該密碼的長度、密碼所包含的字符或符號(統(tǒng)稱為字符集)數(shù),以及字符選擇的隨機(jī)性。如果你想知道在長度和字符集確定的條件下可能的密碼數(shù)目,那么只需要計(jì)算該字符集字符數(shù)目的密碼長度次冪(字符^長度)。這將給你所有可能的密碼選擇或者說密碼空間。
然而,這一理論上的數(shù)目只是讓用戶知道自己可能選擇的所有密碼(稱為完美隨機(jī),perfect randomization)。如果要生成所有的密碼,所需要相當(dāng)痛苦的努力,除非擁有一個(gè)非常好的用戶密碼隨機(jī)生成器。大多數(shù)用戶選擇的密碼往往包含幾個(gè)部分,其中就包括以他們所使用的語言表示的文字和名字。事實(shí)上,對大多數(shù)用戶而言,即使技藝一般的攻擊者也可以通過密碼猜測,以很好的精度猜測出其密碼的各個(gè)部分來。
大多數(shù)專業(yè)的采用密碼猜測辦法的攻擊者都知道存在百分之五十的機(jī)會(huì),一個(gè)用戶的密碼將包含一個(gè)或多個(gè)元音(vowels)字符。如果密碼含有一個(gè)數(shù)字,則通常會(huì)是1或者2,而且往往會(huì)放在密碼的結(jié)尾。如果密碼包含一個(gè)大寫字母,通常會(huì)放在密碼的開始處,之后再跟一個(gè)元音(vowels)字符。一般人常用的詞匯在5萬到15萬個(gè)之間,這些詞匯有可能會(huì)被用在密碼中。女性往往在密碼中使用自己的名字,而男性通常會(huì)選擇自己的業(yè)余愛好,“Tigergolf”并非只是公司的CEO們才會(huì)想到的詞匯。即使你在你的密碼中使用了一個(gè)符號,攻擊者也知道最可能來自以下這些情況: 〜 , ! , @ , # , $ , % , & ,和 ?。
Jesper Johannson博士在他的“大辯論:密碼與密碼(Great Debates: Passwords vs. Passphrases)”一系列的論文中寫道:他從自己的調(diào)查中發(fā)現(xiàn),百分之八十的密碼使用了相同的32個(gè)字符。這類的規(guī)則在過去十年中已被每一個(gè)采用密碼猜測的攻擊者所驗(yàn)證,若應(yīng)用這些規(guī)則,原本一個(gè)非常大的密碼空間可細(xì)分成為更小的、甚至不再具有隨機(jī)性的密碼空間。(我的朋友Mark Burnet是《完美密碼》這本書的作者,他進(jìn)行過一項(xiàng)有關(guān)密碼字符分配的偉大研究。)我和Bruce Schneier對成千上萬個(gè)從MySpace上被盜的密碼進(jìn)行了一項(xiàng)類似的研究,你可以在更早前的安全顧問公告和Bruce Schneier的網(wǎng)站上看到具體的細(xì)節(jié)。
密碼的隨機(jī)性被稱為密碼的熵entropy。完整的閱讀一遍密碼的熵是一件會(huì)死很多腦細(xì)胞的事情。為了簡化這個(gè)過程,一個(gè)密碼比如說“password”或者“12345678”幾乎沒有熵這個(gè)概念;而一個(gè)像“vB%&7P條”這樣的密碼,就有一個(gè)高于平均值的熵。然而,如果你不把密碼空間的其他選擇與這個(gè)已選定使用的密碼一個(gè)個(gè)的進(jìn)行審查,想要計(jì)算出密碼真正的熵,幾乎是一件不可能完成的任務(wù)。但一些攻擊者還能提出的更加智能的猜測辦法,使得你所依靠的密碼熵模型對整個(gè)密碼政策保護(hù)的成功與否產(chǎn)生重大的影響。
輸入電子表格
在這個(gè)具備密碼猜測計(jì)算器功能的電子表格中,我允許用戶從四個(gè)不同的密碼熵模型中進(jìn)行選擇:一個(gè)是由美國國家標(biāo)準(zhǔn)與技術(shù)研究所開發(fā)的模型;一個(gè)是由C.E. Shannon開發(fā)的模型,C.E. Shannon是一位著名的語言熵研究員;一個(gè)是由Johannson開發(fā)的模型;還有一個(gè)是叫做“完美熵“(Perfect Entropy)的模型。我認(rèn)為最準(zhǔn)確的密碼熵模型是來自美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST Publication 800-63,附錄A,表A.1,53頁),但我在這份電子電子表格中也包含了其他模式以供參考,并且還有更多的空間可以進(jìn)行擴(kuò)充。需要重點(diǎn)指出的是,所有包含在內(nèi)的密碼熵模型可能都有存在著各自的缺陷,但這已經(jīng)是我們能做到的最好的嘗試了,因?yàn)槲覀兪孪炔⒉恢涝谔囟艽a空間條件下所有會(huì)被真正采用的密碼。根據(jù)我的經(jīng)驗(yàn),我認(rèn)為即使是美國國家標(biāo)準(zhǔn)與技術(shù)研究所的模型也過于保守,并且高估密碼猜測破解的能力。
在該電子表格中,用戶可以輸入自己的密碼政策(包括長度、字符集、最大年齡、是否啟用復(fù)雜度標(biāo)準(zhǔn)),選擇一個(gè)熵模型,并輸入攻擊者每分鐘可以嘗試的密碼猜測數(shù)目。
我碰到的最常見的問題是:每分鐘最現(xiàn)實(shí)的猜測攻擊數(shù)目是多少?這得取決于一系列因素,其中包括從源頭到目的地的帶寬是多少、源頭和目的地計(jì)算機(jī)資源的使用情況、是什么應(yīng)用程序遭到攻擊、鎖定規(guī)則、受到攻擊的系統(tǒng)是什么類型、其他的防御機(jī)制,還包括用于攻擊的線程數(shù)目。
有許多的攻擊工具(包括Brutus和THC的Hydra)可以讓多線程同時(shí)啟動(dòng)。使用這些工具,攻擊者可以從多個(gè)源頭對一個(gè)目標(biāo)同時(shí)發(fā)起攻擊,而攻擊線程的數(shù)目則會(huì)迅速的增長。當(dāng)我在進(jìn)行滲透測試時(shí),在一分鐘之內(nèi)就可以輕易產(chǎn)生幾百個(gè)用于密碼猜測的線程,但更需要引起重視的是,大多數(shù)的系統(tǒng)在此時(shí)會(huì)開始陷入癱瘓,許多系統(tǒng)甚至?xí)耆罎?。所以,你不得不使用自?dòng)化工具進(jìn)行自己的現(xiàn)實(shí)世界密碼猜測測試,從而確定應(yīng)該輸入電子表格的有效范圍。
你可以使用這個(gè)密碼猜測電子表格來模擬各種情形的攻擊,但我常常展示的一種攻擊情況包含以下這些輸入:8個(gè)字符的密碼、使用復(fù)雜性選擇、94符號的字符集、每過90天更改一次密碼。在一般情況下,攻擊者每分鐘只需進(jìn)行65次猜測就可以破解這一政策下的密碼,這并不是一件很難完成的任務(wù)。
事先聲明,我不對我的這一電子表格可能會(huì)產(chǎn)生的錯(cuò)誤負(fù)責(zé),因?yàn)樗赡馨罅康腻e(cuò)誤,不能完全依賴產(chǎn)生的測試結(jié)果。你應(yīng)該進(jìn)行自己的密碼審計(jì)測試,從而作出相應(yīng)的決定。除此之外,這個(gè)電子表格完全沒有考慮其他一些真正構(gòu)成的密碼強(qiáng)度的因素(系統(tǒng)控制、其他防御機(jī)制、物理安全、終端用戶的大腦)和所有其他各種各樣的密碼攻擊,如按鍵記錄、側(cè)通道(side-channel)攻擊、社會(huì)工程學(xué)、釣魚、嗅探和搜尋垃圾(dumpster diving)。
這也就是說,它只是一個(gè)可以考慮的、有趣的電子表格。我打算以后對它進(jìn)行更新,讓它具有更好的信息、更高的準(zhǔn)確性,并使它具備更好的熵模型。
如果不在這里提及我強(qiáng)烈推薦給大家的密碼政策,那么這篇專欄文章將是不完整的。普通用戶的密碼最少應(yīng)有10至12個(gè)字符(最好是12個(gè)或更多);特權(quán)帳戶密碼應(yīng)該有至少15個(gè)字符,而且每90天至120天就應(yīng)更改一次。禁用強(qiáng)度不高的哈希算法,從而避免密碼被攻擊者破解。我不是一個(gè)支持密碼復(fù)雜性的粉絲,因?yàn)樗⒉荒芴峁┤藗兯谕哪欠N保護(hù)能力,但你通常不得不把它納入到自己的密碼政策里,以滿足審計(jì)的要求。
希望各位玩這個(gè)電子表格能夠玩得愉快!
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請注明出處及作者!】
【編輯推薦】