變異字典檔

 變異字典檔

讀取 rockyou.txt 密碼字典檔前 10 筆

head /usr/share/wordlists/rockyou.txt

可以看到都是小寫英文或是數字,不符合密碼複雜性原則的密碼



可以使用規則函數來改變單詞字典檔以適應密碼策略

先建立一個 passwordattacks 資料匣,進入資料匣

head /usr/share/wordlists/rockyou.txt > demo.txt

將剛剛 rockyou.txt 字典檔的前 10 筆寫入到 demo.txt

使用 sed 指令帶參數 -i 執行 '/^1/d',cat 檔案後發現都變異了且剩下五筆

所有純數字序列已被刪除(不符合密碼策略),是因為 sed 和 ^1 引用以 "1" 開頭的所有行

再使用 d 刪除它們,所以異動與抓取都包含在兩個單引號之間

sed -i '/^1/d' demo.txt



sed 指令最主要的功能為自動化的修改文字檔

$ echo 'This is a book' | sed 's/is/IS/g' --> 將字串〝is〞改為〝IS〞(單字前沒加空隔)

ThIS IS a book

$ echo 'This is a book' | sed 's/ is/ IS/g' --> 樣板和取代前加一空格

This IS a book

$ echo 'This is a book' | sed 's/\<is\>/IS/g' --> 用正規化表示法的單字配匹

This IS a book

$ sed 's/\<is\>/IS/g' file1 --> 檔案〝file1〞把〝is〞改為〝IS〞

$ sed 's/\<is\>/IS/g' file1 file2 file3 --> 也可以一次輸入好幾個檔案

sed 處理完需要透過輸出,若是要就地編輯修改某檔案就是使用 -i 參數

以 a 為開頭進行刪除 └─$ sed -i '/^a/d' demo.txt



建立一個 demo.rule 的檔案,內容寫入 "$1"




透過 hashcat 指令將原有檔案透過 rule 來進行合併

指令 hashcat -r demo.rule --stdout demo.txt

可以看到在每個密碼後面都加上數字 1 了,但原有檔案 demo.txt 是不會被改變的喔




再學習另外一個,規則檔案為 demo1.rule 內容為 $1 c ,c 表示第一個英文字母改大寫

└─$ hashcat -r demo1.rule --stdout demo.txt




再學習另外一個,規則檔案為 demo2.rule 內容為 $1 c(但有斷行) ,c 表示第一個英文字母改大寫

└─$ hashcat -r demo2.rule --stdout demo.txt

斷行表示各別處理,所以總計會輸出 10 行

每個密分別先處理再最後面加上數字 1 輸出,再處理第一個字母改成大寫後輸出





接著來看連續三個指令但排列不同的輸出結果

 - demo3.rule : $1 c $! --> 先加上數字 1、第一個字母改大寫、再加上一個 ! 符號

 - demo4.rule : $! $1 c --> 先加上符號 !、再加上數字 1、最後將第一個字母改成大寫

這也表明了規則是由左至右依序套用的




另外透過 hashcat 破解 HASH 時第一步要先確認要破解的 HASH 是哪一種格式 mode

可以參考此網站 https://hashcat.net/wiki/doku.php?id=example_hashes

預設的 MD5 就是 mode 0



現今很多密碼都要求複雜性密碼,要有數字、特殊符號與大寫字母,經研究如下

 - 對於數字絕大機率使用 1 or 2 or 123

 - 對於特殊符號使用鍵盤上對應數字 1 的 !

 - 要求的大寫字母,幾乎都第一個英文字母

基於上述的統計學,我們可以創建一個 demo5.rule 如下的三條規則

 - 密碼第一個字改大寫,後面接上 1!

- 密碼第一個字改大寫,後面接上 2!

- 密碼第一個字改大寫,後面接上 123!



接著讓我們來破解這一串 HASH "f621b6c9eab51a3e2f4e167fee4c6860"

指令可以使用下列兩種方式

└─$ hashcat -m 0 f621b6c9eab51a3e2f4e167fee4c6860 /usr/share/wordlists/rockyou.txt -r demo5.rule 

└─$ hashcat -m 0 crackme.txt /usr/share/wordlists/rockyou.txt -r demo5.rule

crack.txt 文字檔的內容就是該 hash 值
透過 hashcat 跑過的 hash 會有 cache ,要看結果要用 --show 參數


正常輸出原始如下

hashcat (v6.2.5) starting
...
Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 43033155

f621b6c9eab51a3e2f4e167fee4c6860:Computer123!            
                                                          
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 0 (MD5)
Hash.Target......: f621b6c9eab51a3e2f4e167fee4c6860
Time.Started.....: Tue May 24 14:34:54 2022, (0 secs)
Time.Estimated...: Tue May 24 14:34:54 2022, (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Mod........: Rules (demo3.rule)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  3144.1 kH/s (0.28ms) @ Accel:256 Loops:3 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
...


hashcat 預設就有許多自己的 rule 可以套用路徑 /usr/share/hashcat/rules/



好用的變異字典檔 rockyou-30000.rule、best64.rule


留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)