密碼強度的測試方法
2020-10-27 20:40:20
供稿:網友
大多數密碼被破解情景是:攻擊者將截獲的哈希值變換為純文字的密碼形式,他們使用離線攻擊和哈希表或彩虹(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們才會想到的詞匯。即使你在你的密碼中使用了一個符號,攻擊者也知道最可能來自以下這些情況: ? , ! , @ , # , $ , % , & ,和 ?。