官术网_书友最值得收藏!

1.6 使用GetHashes軟件獲取Windows系統Hash密碼值

對入侵者來說,獲取Windows的口令是整個攻擊過程至關重要的一環,擁有系統原來用戶的口令,將使得內網滲透和守控更加容易。Windows系統中的Hash密碼值主要由LM-HASH和NTLM-HASH值兩部分構成,一旦入侵者獲取了系統的Hash值,通過LC5以及彩虹表等破解工具可以很快地獲取系統的密碼。本文主要探討如何使用Gethashes工具來獲取系統的Hash值,并對Hash值的生成原理等知識進行了介紹,最后還介紹了一些有關Hash破解方面的技巧。

1.6.1 Hash基本知識

(1)Hash定義

Hash,一般翻譯為“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一地確定輸入值。簡單地說,就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

(2)Hash的應用

Hash主要用于信息安全領域中加密算法,它把一些不同長度的信息轉化成雜亂的128位的編碼里,叫做Hash值。也可以說,Hash就是找到一種數據內容和數據存放地址之間的映射關系。

1.6.2 Hash算法在密碼上的應用

MD5和SHA1可以說是目前應用最廣泛的Hash算法,而它們都是以 MD4 為基礎設計的。那么他們都是什么意思呢?這里簡單說一下。

(1)MD4

MD4(RFC 1320)是由MIT的Ronald L. Rivest 在 1990 年設計的,MD是 Message Digest 的縮寫。它適用在32位字長的處理器上用高速軟件實現,它是基于 32 位操作數的位操作來實現的。

(2)MD5

MD5(RFC 1321)是 Rivest于1991年對MD4的改進版本。它仍以512位分組來輸入,其輸出是4個32位字的級聯,與 MD4 相同。MD5比MD4來得復雜,并且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好。

(3)SHA1及其他

SHA1是由NIST NSA設計為同DSA一起使用的,它對長度小于264的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA1設計基于和MD4相同原理,并且模仿了該算法。

Hash算法在信息安全方面的應用主要體現在以下的3個方面。

(1)文件校驗

我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這兩種校驗并沒有抗數據篡改的能力,它們在一定程度上能檢測并糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。MD5 Hash算法的“數字指紋”特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)算法,不少UNIX系統提供計算MD5 Checksum的命令。

(2)數字簽名

Hash算法也是現代密碼體系中的一個重要組成部分。由于非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對Hash值,又稱“數字摘要”進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。

(3)鑒權協議

鑒權協議又被稱作挑戰—認證模式:在傳輸信道時可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

1.6.3 Windows下Hash密碼值

(1)Windows系統下的Hash密碼格式

Windows系統下的Hash密碼格式為:用戶名稱:RID:LM-Hash值:NT-Hash值,例如:

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23A A724774CE6CC:::表示

用戶名稱為:Administrator

RID為:500

LM-Hash值為:C8825DB10F2590EAAAD3B435B51404EE

NT-Hash值為:683020925C5D8569C23AA724774CE6CC

(2)Windows下LM-Hash值生成原理

假設明文口令是“Welcome”,首先全部轉換成大寫“WELCOME”,再將口令字符串大寫轉后的字符串變換成二進制串:

“WELCOME” -> 57454C434F4D4500000000000000

技巧:可以將明文口令復制到UltraEdit編輯器中,使用二進制方式查看,即可獲取口令的二進制串。

如果明文口令經過大寫變換后的二進制字符串不足14字節,則需要在其后添加0x00補足14字節。然后切割成兩組7字節的數據,分別經str_to_key()函數處理得到兩組8字節數據:

57454C434F4D45 -str_to_key()-> 56A25288347A348A
00000000000000 -str_to_key()-> 0000000000000000

這兩組8字節數據將作為DESKEY對魔術字符串“KGS!@#$%”進行標準DES加密

"KGS!@#$%" -> 4B47532140232425。
56A25288347A348A -對4B47532140232425進行標準DES加密-> C23413A8A1E7665F
0000000000000000 -對4B47532140232425進行標準DES加密-> AAD3B435B51404EE

將加密后的這兩組數據簡單拼接,就得到了最后的LM Hash。

LM Hash: C23413A8A1E7665FAAD3B435B51404EE

關于str_to_key()函數見最后附錄1。

1.6.4 Windows下NTLM Hash生成原理

IBM設計的LM Hash算法存在幾個弱點,微軟在保持向后兼容性的同時提出了自己的挑戰響應機制,NTLM Hash便應運而生。假設明文口令是“123456”,首先轉換成Unicode字符串,與LM Hash算法不同,這次不需要添加0x00補足14字節

"123456" -> 310032003300340035003600。

從ASCII串轉換成Unicode串時,使用little-endian序,微軟在設計整個SMB協議時就沒考慮過big-endian序,ntoh*()、hton*()函數不宜用在SMB報文解碼中。0x80之前的標準ASCII碼轉換成Unicode碼,就是簡單地從0x??變成0x00??。此類標準ASCII串按little-endian序轉換成Unicode串,就是簡單地在原有每個字節之后添加0x00。對所獲取的Unicode串進行標準MD4單向哈希,無論數據源有多少字節,MD4固定產生128-bit的哈希值,16字節310032003300340035003600-進行標準MD4單向哈希->32ED87BDB5FDC5E9 CBA88547376818D4,就得到了最后的NTLM Hash

NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4。

與LM Hash算法相比,明文口令大小寫敏感,無法根據NTLM Hash判斷原始明文口令是否小于8字節,擺脫了魔術字符串"KGS!@#$%"。MD4是真正的單向哈希函數,窮舉作為數據源出現的明文,難度較大。

1.6.5 使用GetHashes獲取Windows系統的Hash密碼值

GetHashes目前最高版本是v1.4,它是InsidePro公司早期的一款Hash密碼獲取軟件,其公司地址為:http://www.InsidePro.com,該公司還有“SAMInside”、“PasswordsPro”以及“Extreme GPU Bruteforcer”三款密碼破解軟件。

(1)GetHashes命令使用格式

GetHashes <SAM registry file> [System key file] Or GetHashes $Local

一般使用“GetHashes $Local”來獲取系統的Hash密碼值,該命令僅在system權限下才能執行成功。通常根據個人愛好,可以將“GetHashes.exe”工具軟件命名為其他名稱,例如在后面案例中,就將其命名為“getpw”。

(2)使用GetHashes獲取系統Hash值實例

將GetHashes重命名為getpw,然后將其復制到欲獲取hash密碼值的系統盤中,然后執行“getpw $local”,如圖1-44所示,順利獲取其密碼Hash值,在本案例中使用的是Radmin的Telnet,單擊“文本”-“保存為”將結果保存為一個新文件,然后使用UltraEdit編輯器進行編輯,僅僅保存Hash密碼值部分,后面可使用LC5導入Hash密碼值,即可破解系統的密碼值。

圖1-44 獲取系統Hash密碼值

注意:

(1)使用“GetHashes”來獲取系統的Hash密碼值,必須要在System權限下,也就是在反彈Shell或者telnet下。

(2)如果系統中安裝有殺毒軟件或者防火墻,有可能由于殺毒軟件和防火墻的保護而導致密碼獲取失敗。通過研究發現,由于Gethashes軟件威力巨大,主要用在入侵過程中獲取系統的Hash密碼值,因此絕大多數殺毒軟件已經將GetHashes軟件加入到病毒庫中,Castlecops網站提供的關于各大殺毒軟件針對GetHashes所做的病毒庫版本以及更新結果,如圖1-45所示。

圖1-45 殺毒軟件已經將Gethashes作為病毒處理

(3)InsidePro公司在其網站上還提供了一個Hash產生器,通過輸入一些參數值能夠生成經過某種加密算法處理的口令密碼值,如圖1-46所示,有興趣的讀者可以去嘗試,該功能在研究系統的Hash密碼值生成中可以進行相互驗證。

圖1-46 Hash生成器

(4)Hash密碼值在線查詢

在網站http://hash.insidepro.com/中還可以在線查詢Hash密碼值的原始明文口令,如圖1-47所示,將獲取的MD5加密后的Hash值輸入后,單擊“Search”按鈕,如果數據庫中存在則會在下面給出查詢結果。

圖1-47 在線破解Hash密碼值

1.6.6 使用GetHashes獲取系統Hash值技巧

使用GetHashes來獲取系統的Hash值一般是在獲得了系統的部分或者全部控制權限后,即通常是在新漏洞利用工具出來后,例如Ms08067漏洞利用工具,當存在Ms0867漏洞時,通過使用Ms08067漏洞利用工具獲得存在漏洞計算機的一個反彈Shell,然后再將“GetHashes”軟件上傳到系統中來執行“GetHashes $Local”命令。對GetHashes工具的使用,筆者將一些經驗技巧進行總結。

(1)在獲得反彈Shell的情況下,首先查看系統是否存在殺毒軟件;如果存在,則嘗試是否可以關閉,如果不能關閉,則放棄使用GetHashes來獲取Hash密碼值,轉向第二步。

(2)查看系統是什么系統,是否開啟3389遠程終端,如果未開啟3389終端,可否直接開啟3389終端。如果可以利用3389終端,則直接添加一個具有管理員權限的用戶,然后使用用戶登錄到系統。

(3)關閉殺毒軟件,再次通過Shell或者其他控制軟件的telnet執行“GetHashes $Local”命令來獲取Hash密碼值,然后刪除新添加到用戶。

1.6.7 相關免費資源

(1)在線Hash密碼值破解:http://hash.insidepro.com/

(2)在線生成Hash密碼值:http://www.insidepro.com/hashes.php?lang=eng

(3)免費字典下載:http://www.insidepro.com/eng/download.shtml

(4)SAMInside http://www.insidepro.com/download/saminside.zip

(5)PasswordsPro http://www.insidepro.com/download/passwordspro.zip

(6)Extreme GPU Bruteforcer http://www.insidepro.com/download/egb.zip

主站蜘蛛池模板: 当阳市| 樟树市| 大田县| 赤水市| 泸水县| 奎屯市| 永昌县| 永州市| 宁津县| 衡水市| 宿松县| 和硕县| 双牌县| 福海县| 鄱阳县| 潞西市| 虎林市| 西乌珠穆沁旗| 永吉县| 汨罗市| 泽州县| 广丰县| 民权县| 女性| 星子县| 桂东县| 拉孜县| 河西区| 二手房| 五峰| 云和县| 樟树市| 九寨沟县| 普陀区| 龙口市| 东阿县| 沙河市| 贡觉县| 洛宁县| 夏津县| 河间市|