🔐 什麼是 Pass-the-Hash?
在 Windows 身份驗證體系中,NTLM Hash 本身即等同於密碼。Pass-the-Hash(PtH)攻擊讓攻擊者無需破解明文密碼,直接竊取記憶體中的 Hash 值,向目標系統發起重放驗證,完成橫向移動。這是滲透測試與 APT 攻擊中最常見的內網擴散手段之一。
⚙️ 攻擊流程與技術原理
NTLM 驗證流程採用「挑戰—回應」機制,伺服器驗證的是 Hash 運算結果,而非明文密碼本身。攻擊者首先透過 Mimikatz 等工具從 LSASS 進程記憶體中傾印 NTLM Hash,再利用 Impacket(如 psexec.py)或 CrackMapExec 將 Hash 直接注入驗證請求。只要目標主機存在相同帳號,即可在無需知道明文的情況下完成登入,實現橫向移動(Lateral Movement)。
🛠️ 實作範例
以下示範使用 Impacket 的 psexec.py 執行 Pass-the-Hash 攻擊(格式:LM:NTLM):
# 步驟一:從 LSASS 傾印 Hash(需管理員權限)
mimikatz # sekurlsa::logonpasswords
# 步驟二:使用 Hash 進行橫向移動
python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c \
Administrator@192.168.1.100
💡 重點整理
- Hash 即憑證:NTLM Hash 無需解密,可直接用於身份驗證。
- 主要擷取工具:Mimikatz 從 LSASS 記憶體傾印,需本機管理員權限。
- 防禦核心對策:啟用 Protected Users 群組與 Credential Guard,阻斷 LSASS 記憶體存取。
- 偵測指標:監控 Event ID 4624(Logon Type 3)異常來源 IP,及 LSASS 異常存取行為。
🛡️ 結語
Pass-the-Hash 揭示了 NTLM 協議的根本性弱點。遷移至 Kerberos、部署 MFA,並嚴格限制本機管理員帳號的跨主機共用,是降低 PtH 攻擊面的最有效路徑。
📚 參考文獻
- Microsoft — Credentials Protection and Management(官方防禦指南)
- MITRE ATT&CK — T1550.002: Pass the Hash(技術分類與行為描述)
- Impacket GitHub — 開源網路協議攻擊工具集
留言
張貼留言