iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
Security

Kali Linux 工具筆記系列 第 21

Day 21 Password Attacks - 密碼攻擊(hash-identifier, john)

前言

昨天我們用sqlmap突破了防守,取得了一些看起來像是帳號密碼的東西
user_id | user | password
------------- | -------------
1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 (password)
2 | gordonb | e99a18c428cb38d5f260853678922e03 (abc123)

看到可能會讓人很害怕,各種猜忌從心中冒出開始懷疑整個世界可能有的惡意

我的密碼是明碼儲存?
這樣網站管理者不就也能看到我的密碼了嗎?
完蛋了,我有其他網站也是一樣的帳號密碼該怎麼辦?

先說結論,有些網站的確還存在著明碼儲存,像是有些網站提供了忘記密碼的功能,點下去就能收到信並帶有完整的明碼密碼。但通常密碼是不會以明碼形式儲存在資料庫裡的,上面sqlmap之所以能夠取得密碼是因為雖然經過雜湊方法對密碼整形成5f4dcc3b5aa765d61d8327deb882cf99這種形式,但是密碼太簡單,屬於常見且極度危險的廢物密碼,有太多工具或是密碼字典檔能夠將雜湊結果還原成原始密碼,就跟明碼一樣在裸奔,所以sqlmap才能在找到資料同時,判斷出他的雜湊形式並且破解。

這邊推薦邦友的文章,非常詳細的解釋了密碼與雜湊的關係
https://ithelp.ithome.com.tw/articles/10277332

工具介紹 (hash-identifier)

第一個介紹的工具是hash-identifier,他不是用來破解,而是用來判斷使用的雜湊方式,不過因為是根據雜湊的特性去猜測,所以結果也不一定準確。

這邊直接使用hash-identifier來對5f4dcc3b5aa765d61d8327deb882cf99進行猜測,這個字串是來自password的雜湊形式

hash-identifier  
   #########################################################################
   #     __  __                     __           ______    _____           #
   #    /\ \/\ \                   /\ \         /\__  _\  /\  _ `\         #
   #    \ \ \_\ \     __      ____ \ \ \___     \/_/\ \/  \ \ \/\ \        #
   #     \ \  _  \  /'__`\   / ,__\ \ \  _ `\      \ \ \   \ \ \ \ \       #
   #      \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \      \_\ \__ \ \ \_\ \      #
   #       \ \_\ \_\ \___ \_\/\____/  \ \_\ \_\     /\_____\ \ \____/      #
   #        \/_/\/_/\/__/\/_/\/___/    \/_/\/_/     \/_____/  \/___/  v1.2 #
   #                                                             By Zion3R #
   #                                                    www.Blackploit.com #
   #                                                   Root@Blackploit.com #
   #########################################################################
--------------------------------------------------
 HASH: 5f4dcc3b5aa765d61d8327deb882cf99

Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))

判斷結果猜測是MD5,這邊由於我們知道密碼是password,所以可以透過另一個工具md5sum來反向測試一下,下面的-n是為了忽略echo預設有的換行,這樣將password字串餵給md5sum來得到雜湊過的值

echo -n 'password' | md5sum

會得到結果,證明了hash-identifier的猜測結果是對的

5f4dcc3b5aa765d61d8327deb882cf99  -

工具介紹 (john)

接下來介紹一位好人john,他可以幫我們暴力破解弱密碼,但首先我們需要準備需要破解的hash給他,所以我們先編輯一個檔案/tmp/hash,檔名可以隨意,內容就填想要破解的hash,這邊我們就拿上面出現過的兩個

5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03

接著呼叫幫手,--wordlist是指定字點檔,這邊使用內建的,當然也可以使用自己編輯過的,接著--format=raw-md5來縮小範圍,最後放剛才編輯好的檔案/tmp/hash,這樣john就會根據字典檔去暴力破解這兩個hash了

john --wordlist=/usr/share/john/password.lst --format=raw-md5 /tmp/hash 

結果如下,john破解了兩組

Using default input encoding: UTF-8
Loaded 2 password hashes with no different salts (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
abc123           (?)
password         (?)
2g 0:00:00:00 DONE (2021-10-06 08:19) 100.0g/s 19200p/s 19200c/s 38400C/s 123456..larry
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed

這邊要注意一下,如果對同樣的hash破解,可能就會出現以下內容

No password hashes left to crack (see FAQ)

這是因為破解過的內容都被記錄在/home/kali/.john/john.pot,想重新破解,可以刪除這個檔案再執行一次,如果只是單純想看破解過的內容,可以執行以下命令

john --show --format=raw-md5 /tmp/hash

就會顯示破解過的內容

?:password
?:abc123

2 password hashes cracked, 0 left

結語

體驗這兩個工具的過程中,我們能了解到某些老雜湊法已經不再安全了,即使資料經過整形也不能保證不會被逆向解析,所以漸漸地也有些改良性的雜湊法出現,但同樣地,攻擊者的工具與技術也是不斷進步,孰勝孰負還未可知。


上一篇
Day 20 資料庫評估 - Database Assessment (sqlmap, SQLite database browser)
下一篇
Day 22 Password Attacks - 密碼攻擊(hashcat)
系列文
Kali Linux 工具筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言