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