我是如何破解你的WINDOWS密碼的 ?(1)

我是如何破解你的WINDOWS密碼的 ?(1)

 

密碼可以看作我們主要,甚至某些情況下唯一可用於防範***的防線。就算***者無法在物理上接觸到計算機,對於對外的Web應用,他們依然可以通過遠程桌面協議或身份驗證功能訪問到服務器上的服務。 本文的主要是爲了告訴您Windows創建和存儲密碼哈希(Hash)的方式,以及這些哈希的破解方式。在介紹瞭如何破解Windows密碼後,我還將介紹一些技巧,幫助您防範此類***。

介紹

密碼可以看作我們主要,甚至某些情況下唯一可用於防範***的防線。就算***者無法在物理上接觸到計算機,對於對外的Web應用,他們依然可以通過遠程桌面協議或身份驗證功能訪問到服務器上的服務。
本文的主要目的是爲了告訴您Windows創建和存儲密碼哈希(Hash)的方式,以及這些哈希的破解方式。在介紹瞭如何破解Windows密碼後,我還將介紹一些技巧,幫助您防範此類***。

Windows是如何存儲密碼的

運行Windows的計算機使用兩種方法對用戶密碼創建哈希,這兩種方法在本質上有着不同的安全意義。這兩種方法分別是LAN Manager (LM)以及NT LAN Manager第二版(NTLMv2)。哈希是一種加密功能所獲得的結果,這種加密需要獲取任意大小的字符串數據,並用算法對其進行加密,然後返回一個固定大小的字符串。

LM密碼哈希

LAN Manager哈希是Windows操作系統最早使用的密碼哈希算法之一,並且在Windows 2000、XP、Vista和7中使用了更先進的NTLMv2之前,這也是唯一可用的版本。這些新的操作系統雖然可以支持使用LM哈希,但主要是爲了提供向後兼容性,不過在Windows Vista和Windows 7中,該算法默認是被禁用的。

密碼的LM哈希需要使用下列六個步驟計算獲得:

  1. 將用戶的密碼全部轉換爲大寫字母

  2. 給密碼添加空(null)字符,直到密碼長度等於14個字符

  3. 將新獲得的密碼拆分爲兩組7位的字符值組

  4. 使用這些值創建兩個DES加密密鑰,併爲每一組添加一個奇偶校驗位,這樣即可創建出64位的密鑰

  5. 使用每個DES密鑰加密一個預定義的ASCII字符(KGS!@#$%),這樣即可獲得兩個8字節Ciphertext值

  6. 這兩個8字節的Ciphertext值結合組成一個16字節的值,也就是最終獲得的LM哈希

舉例來說,如果使用“PassWord123”作爲密碼,在上述操作中這個密碼會被分別轉換爲:

  1. PASSWORD123

  2. PASSWORD123000

  3. PASSWOR和D123000

  4. PASSWOR1和D1230001

  5. E52CAC67419A9A22和664345140A852F61

  6. E52CAC67419A9A22664345140A852F61

20100121080108_58948[1]    
圖1: 將密碼轉換爲LM哈希

LM存儲的密碼有一些明顯的不足。首先是,加密工作是基於數據加密標準(DES)的,DES最初來源於IBM在二十世紀七十年代的一個項目,該項目最終被NIST進行了改進,並獲得了NSA的支持,於1981年作爲一項ANSI標準發佈。多年以來,DES都被認爲是足夠安全的,但由於這種小型密鑰只有56位,因此從九十年代開始,已經變得不那麼安全。到了1998年,Electronic Frontier Foundation只需要大概23小時即可破解DES。因此,DES開始變得不夠安全,並逐漸被三重DES(Triple-DES)以及AES所取代。簡單來說,這些都屬於其他加密標準,但由於現代計算機的強大性能,很快也被破解。

LM哈希最大的弱點可能就是DES密鑰的創建過程。在這個過程中,用戶提供的密碼會被自動轉換爲全部大寫,並通過補充變爲14個字符(這也是LM哈希密碼的最大長度),隨後會被分爲兩組7位字符的值。對於由14個可印刷的ASCII字符組成的密碼,有95的14次方種可能性,而一旦將其腰斬爲兩組7位的字符,可能性就降低爲95的7次方種,而如果您只允許使用大寫的ASCII字符,可能性將進一步降低爲69的7次方種。因此從本質上將,就算您使用不同的大小寫字符,並使用長密碼,一旦密碼被保存成LM哈希,所有的努力都將付諸東流,在暴力破解面前,LM哈希將不堪一擊。

NTLMv2密碼哈希

NT LAN Manager (NTLM)是由微軟開發,用於取代LM的身份驗證協議。最終通過改進,從Windows NT 4開始,NTLMv2被用作全新的身份驗證方法。

NTLMv2哈希(下文簡稱爲NT哈希)的創建在操作系統實際參與的工作上更加簡單,並需要使用MD4哈希算法,通過一系列數學計算創建哈希。MD4算法需要使用三次,這樣才能產生NT哈希。舉例來說,“PassWord123”這個密碼的MD4哈希就可以表示爲“94354877D5B87105D7FEC0F3BF500B33”。

20100121090123_58948[1]    
圖2: 將密碼轉換爲NTLMv2哈希

MD4通常比DES更加健壯,因爲可以接受更長的密碼,可允許同時使用大寫和小寫的字母,並且並不需要將密碼拆分爲更小,更易於破解的片段。

對於使用NTLMv2創建的哈希,可能最大的不足在於Windows無法使用一種名爲Salting的技術。Salting這種技術可以用於生成隨機數,並將該隨機數用於計算密碼的哈希。這意味着完全相同的密碼可能會具有完全不同的哈希值,這纔是最理想的情況。

在這種情況下,用戶就可以創建所謂的Rainbow Table。Rainbow table並不是指五顏六色的咖啡桌,實際上是一種表格,其中包含了由某一數量的字符所能組成的每一種可能密碼的每一個哈希值。通過使用Rainbow table,我們就可以從目標計算機提取密碼的哈希值,並在表中進行檢索。一旦在表中找到相同的內容,就等於知道了密碼。正如您所想的,就算由很少字符組成的Rainbow table,整個表也會非常龐大。這意味着此類表的創建、存儲,以及檢索都是很麻煩的工作。

結論

在本文的第一部分中,我們介紹了密碼哈希的概念,以及Windows用於創建和存儲這些數值的機制。另外我們還介紹了每種方法的侷限性,以及可以用於破解這些密碼的可能途徑。在後續的內容中,我們將介紹獲取和破解這些哈希的方法,並證明侷限性的存在。在介紹完之後,我還將提供一些技巧,讓您獲得更進一步的保護,並創建滿足所需強度的密碼。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章