關於密碼你知道多少?密碼也就是口令,通常作為身份驗證的一部分來使用,也就是說如果密碼被人盜取或者破解,那麼攻擊者就可以使用你的身份來做很多事情,這是你所不能接受的。在網際網路上幾乎每個人都有自己的密碼,通常在多個網站登入都使用同一個密碼,由於經常使用,所以密碼也經常是容易記憶的,既然容易記憶那就很可能存在一定的規律,所以今天的主要內容就是關於密碼組成的那些事,看看大家的常用密碼是否中槍。
弱口令
弱口令的存在,一個很重要的原因是方便記憶,很簡單不需要專門去記憶就完全可以記得住。還有一點是大眾的使用者不明白密碼的重要性,抱著別人又不會專門來搞我的想法,即使被提醒修改密碼也不會去修改。
針對這個的破解是最簡單的,網路上出現了很多次的密碼洩漏事件,其中有很多的明文密碼被洩漏,經過排序計算重複,排在前面的就屬於弱口令的行當,只需要提取其中的top100,說不定就能破解出很多使用者的口令。在離線破解hash的時候,可以把網路上公開的密碼字典全部收集起來,去重之後加入破解即可。
關於弱口令,freebuf上有一個文章專門做了描述:
http://www.freebuf.com/articles/web/42120.html
密碼分解的幾種方式
除開弱口令之後,我們來重點分析一下,其他比較複雜的密碼組成。通常由於數字一共有10個,所以使用純數字作為密碼的通常都可以視為弱口令,經過牌類組合之後,十位的數字密碼使用hashcat可以輕鬆跑完。所以純數字密碼不在我們的討論範圍之內。
字元和數字組合
關於這個組合,我們來看幾個常見密碼:
password123、passw0rd、0password0、123456admin、a123456a
這種密碼的組合方式也就大概這麼幾種:數字在字串後面、數字在字串中間、數字在字串兩邊、數字在字串前邊,字串在數字串兩邊等等。
對於這些密碼如何生成相應的字典來破解呢?
數字在字串後面
對於密碼:password123,我們可以分解為兩個部分,一個是常用字串一個是常用數字串。知道這個之後我們就可以透過網路上洩漏的密碼字典進行分解,提取其中比較常見的字串以及常見的數字串,然後將提取出來的兩個字典進行組合,這樣針對這種型別的密碼就可以破解出一大部分。這種方式同樣可以使用的像123456admin(數字在字串前邊)也可以使用。像0password0(數字在字串兩邊)、a123456a(字串在數字串兩邊)由於是三個部分的組合,所以使用上面講述的方法,最後三個字典檔案進行組合,結果非常大,破解時間需求很大,而且密碼破解率也不高,所以這種密碼就可以使用後面提供的方法。
數字在字串中間
對於密碼:passw0rd,這個密碼的存在通常是人們為了好記,在自己想到一個比較熟悉的字串後,將其中的字母與數字進行了替換,例如:o換為0、B換為8、e換為3、i換為1等等。所以對於這種密碼的破解,就需要了解使用者的心思,將常用的替換字母做一下總結,整理一個常用字串列表,對其中的字元一一替換生成字典,這樣,這種方式的密碼就可以在猜到使用的字串之後輕鬆破解。
數字在字串兩邊、字串在數字串兩邊
對於密碼組合比較複製的密碼,透過收集常用字串和常用數字串然後組合的方式不太現實,所以推薦一種方法,不僅僅適用於這種,幾乎可以適用於所有型別的密碼組合。
字元、數字、特殊字元
在前文的基礎上,加上特殊字元後,組合方式多了一種,在破解難度上增加了n多倍,所以使用猜測組合的方式已經不太適用,所以這種密碼的破解方式也要使用後面要講的密碼分解方式,使得密碼破解更加簡單便捷。
最終密碼分解方式
對於所有的密碼組合,在我們的能力範圍之內,能夠把小於十二位的密碼破解出來就已經很不錯了,就別說大於十二位的密碼,所以我們討論的範圍就是小於十二位密碼的密碼破解。
首先拿到幾個密碼,如:admin123!@#、123@#pass、1S@d5da3等,如何使用一種方式適用多種密碼的分解?我的做法是:
- 總結一份全網公開的密碼字典
- 使用指令碼提取所有密碼的前面的五到八位,分別存入t5.txt、t6.txt、t7.txt、t8.txt
- 使用指令碼提取所有密碼的後面的五到八位,分別存入e5.txt、e6.txt、e7.txt、e8.txt
- 對所有檔案進行排序並且計算其重複數,如果密碼字典過大可以選擇性的提取重複數大於等於幾的密碼進行使用
- 最後使用前*後的方式組合密碼,形成密碼字典進行破解
推薦hash破解工具
其實hashcat自帶的使用的mask的方式破解八位以內的密碼還是可以的,破解八位以上的就需要字典與mask、mask與mask、字典與字典的組合才能完成任務。工具如何使用,就是大家的事情了,密碼字典如何收集也是大家的事情了,之前有位同學已經發了一個關於hashcat 的文章:《密碼破解那些事》。大家有什麼經驗和建議,請大家不吝賜教。