彩虹表破譯 | Hashcat

LALAAYANG發表於2020-10-30

問題概述

  1. 破譯如下8位小寫字母加數字的口令(SHA1(passwd)):
    eb1d44e685e37f25e877d11f2c557ddc76ae9269(7h9eez0y)
    bdba993c7b4b1f5f407f9e24483a407ed85cbc3a(qsqq1wz9)

  2. 破譯如下3位數字salt,6位小寫字母的口令(SHA1(passwd+salt))
    a65493b136d58e1051fe83d3d975c745ff9edda2(cdopyq912)

分析

原理(無salt)

  1. SHA1演算法原理:對於長度小於2^64位的訊息,SHA1會產生一個160位的訊息摘要。當接收到訊息的時候,這個訊息摘要可以用來驗證資料的完整性。在傳輸過程中,資料很可能會發生變化,此時就會產生不同的訊息摘要。對於任意長度的明文,SHA1首先對其進行分組,使得每一組的長度為512位然後對這些明文分組重複處理。對於每個明文分組的摘要生成過程如下:
    (1)將512位的明文分組劃分為16個子明文分組,每個子明文分組為32位。
    (2) 申請5個32位的連結變數,記為A、B、C、D、E。
    (3)16份子明文分組擴充套件為80份。
    (4)80份子明文分組進行4輪運算。
    (5) 連結變數與初始連結變數進行求和運算。
    (6) 連結變數作為下一個明文分組的輸入重複進行以上操作。
    (7) 最後,5個連結變數裡面的資料就是SHA1摘要。

  2. 破譯方法及原理:
    利用hashcat進行爆破。Hashcat包含的破譯的密碼型別多,正確率很高,是一個實用的密碼破譯工具,且可將GPU利用起來,這也提高了運算的速度。破譯的原理主要是通過爆破進行碰撞比較,匹配出相應的明文。密碼破譯的成功率主要取決於字典和採取的攻擊模式組合。字典很重要,一個好的字典可以輕鬆破譯出幾十萬甚至上百萬密碼口令,但同時需要結合規則模式、掩碼模式等。

破譯過程(無salt)

(1)eb1d44e685e37f25e877d11f2c557ddc76ae9269破譯(無salt)
命令列指令如下圖,“-a 3”使用掩碼攻擊,“-m 100”sha1型別,定義字符集為小寫字母與數字的8位隨機組合。
在這裡插入圖片描述

破譯結果如下,口令為7h9eez0y,共計用時28分05秒。
在這裡插入圖片描述

(2)bdba993c7b4b1f5f407f9e24483a407ed85cbc3a破譯(無salt)
命令列指令如下圖。“-a 3”使用掩碼攻擊,“-m 100”sha1型別,定義字符集為小寫字母與數字的8位隨機組合。
在這裡插入圖片描述
破譯結果如下圖,解密得,qsqq1wz9。共計用時14分20秒。

在這裡插入圖片描述

原理(有salt)

加鹽的實現過程通常是在需要雜湊的欄位的特定位置增加特定的字元,打亂原始的字串,使其生成的雜湊結果產生變化。對於使用者使用的密碼經過SHA1雜湊後得出的結果,由於密碼位數不夠長,該結果很容易被彩虹表破解,因此要在使用者的密碼中新增特定的字串,從而改變雜湊結果。

Salt的作用:只需要salt是隨機的,那麼就可以使攻擊者無法事先知道salt是什麼,無法查表和彩虹表。不同系統的salt是不一樣的,甚至是動態的,那麼使攻擊者陷入只能窮舉的境地。

破譯方法及原理:
仍舊利用hashcat進行爆破。破譯的原理是通過爆破進行碰撞比較,匹配出相應的明文。

破譯過程(有salt)

在這裡插入圖片描述

破譯結果為cdopyq912,執行時間為40秒。

在這裡插入圖片描述

報錯處理

使用hashcat破譯sha1型別口令。過程中出現的問題如下:

  1. 錯誤資訊:Custom-charset 1 is undefined.
    定義字符集之後仍提示未定義,檢查後發現命令列指令錯誤將“1”與“l”混淆。
    在這裡插入圖片描述

  2. 錯誤資訊: Temperature limit on GPU #3 reached, aborting…
    爆破過程中GPU溫度過熱,被迫中止,之後採取破解一段時間暫停一下,之後再繼續破解的方式來防止溫度過高。
    在這裡插入圖片描述

相關文章