一、暴力破解
暴力破解可分為純粹式暴力破解和字典式暴力破解,一般暴力破解工具都會同時實現這兩種暴力破解方式。
注意暴力破解不只是指解猜用戶名密碼,解猜壓縮文件解壓口令、猜解word文檔讀寫口令、猜解系統后台管理地址等只要是猜的都屬於暴力破解。
一般而言,猜解隨機生成的短信驗證碼等適合使用純粹式暴力破解(隨機生成不受人方便記憶影響不同密碼出現的概率是一樣的),猜解人為設定的口令則適合使用字典式暴力破解(人為設定受人方便記憶影響不同密碼出現的概率是不一樣的)。
常用暴力破解工具:hydra(各種服務用戶名密碼聯網猜解工具)、Advanced Office Password Recovery(常見文檔讀寫猜解工具)、aircrack-ng(wifi密碼猜解工具)
1.1 純粹式暴力破解
純粹式暴力破解是指在要輸入密碼時,臨時按照設定的長度、選定的字符集生成用於測試的密碼。
如下圖選定,那么密碼依次是:aaaaaaaa、aaaaaaab、aaaaaaac...如此下去直到8個空格。
如下圖選定,那么密碼依個數一共是:A(26+26+10+14+1,8) = A(77,8) = 848416382352000
假設一秒猜測10000次,那么需要時間:848416382352000 / (3600 * 10000 ) = 23567121.732(小時) = 981963.40 (天) = 2690.31(年)
1.2 字典式暴力破解
純粹式暴力破解就好像是地毯式搜索,如果密碼在設定的密碼集內那么一定是可以找出來的。
但如前面我們已將每秒猜測次數設置為比較大的10000次,但要破解當前主流的8位密碼竟然需要2600多年,這超出了可接受范圍;如果要減少字符集,那么又會大大降低准確度。
從另一個角度分析,同是8位長度的密碼出現的概率是不相同的,比如12345678、abcd1234、qwertyui做為密碼的概率比ferghtsa做為密碼的概率要高得多,可以說就比一層最常出現的密碼占據了9層9的出現概率。
字典暴力破解,就是將出現頻率最高的密碼保存到文件中,這文件就是字典,暴破時就使用字典中的這些密碼去猜解。字典式暴力破解較純粹式暴力破解,使用了較小的命中率損失節省了較多的時間。
不同大小的字典,是選取密碼不一樣,比如小一點的是常見密碼top100,大一點的是top1000,再大一點的是top10000就這意思。
二、彩虹表攻擊
狹義上,彩虹表一般是指以“hash值:原始值”為行組成的文件,如下圖所示。廣義上,只要能從hash值找到對應原始如,形式怎么變都能稱為彩虹表;如果要我將彩虹表寫入數據庫,那表字段應該:password、md5_value、sha1_value、sha256_value...
hash算法,可以是標准的md5、sha1、sha256、sha512;也可以是其他混合變種,如mysql、md5(upper($pass))、md5(md5($pass))等等。
彩虹表攻擊是指,拿着獲取到的hash值通過查詢彩虹表找出其原始值的攻擊方式。
實際操作來說,獲取一個hash的原始值不一定要事先准備彩虹表,也可以像字典式攻擊一樣准備一個字典,攻擊時再使用hash算法計算字典的hash值兩相比。但計算是耗時間的本來暴力破解由於次數很多就耗很長時間,再耗同樣長的時間在計算hash值上,那暴力破解更加緩慢。這也是人們說彩虹表攻擊默認都是指事先准備好彩虹表的形式而不是中途計算hash值的形式的原因(不過john就是這種)。
常見的彩虹表攻擊有:使用各種網站在線破解一般hash值、使用ophcrack破解windows密碼、使用john破解linux密碼。
三、暴力破解與彩虹表攻擊的區別
暴力破解和彩虹表攻擊寬泛來說都屬於口令破解,但他們使用的場景完全是不一樣的。
暴力破解:完全不知道密碼----通過系統提供的認證接口不斷認證----獲取原始口令----處於進入系統前
彩虹表攻擊:已知密碼hash值----通過自己的工具及彩虹表不斷查找----獲取原始口令----處理進入系統后
參考: