作者:reber
個人博客:http://wyb0.com/posts/responder-and-ntml-hash/
0x00 一些概念
Windows認證協議
分為:基於NTML的認證和基於kerberos的認證
什麼是NTLM Hash?
早期IBM設計的LM Hash算法存在弱點,微軟在保持向後兼容性的同時提出了自己的挑戰響應機制,即NTLM Hash
什麼是Challenge-Response挑戰/響應驗證機制?
- Client輸入username、password、domain,然後將用戶名及密碼hash後存在本地,並將username發送到DC
- DC生成一個16字節的隨機數,即Challenge(挑戰碼), 然後傳回Client
- Client收到Challenge後將密碼hash和challenge混合hash,混合後的hash稱為response,然後將challenge、 response和username發送給Server
- Server將收到的3個值轉發給DC, 然後DC根據傳過來的username到域控的賬號數據庫ntds.list找到對應的密碼hash,將hash和Client傳過來的challenge混合hash,將這個混合hash與Client傳過來的response進行對比驗證
- DC返回驗證結果給Server
- Server將提示客戶端是否驗證成功
NTLM Hash與Net-NTLM Hash
NTLM Hash通常是指Windows系統下Security Account Manager中保存的用戶密碼hash, 通常可從Windows系統中的SAM文件和域控的NTDS.dit文件中獲得所有用戶的hash(比如用Mimikatz提取),“挑戰/響應驗證”中的用戶名及密碼hash就是NTLM Hash,Net-NTLM Hash通常是指網絡環境下NTLM認證中的hash,“挑戰/響應驗證”中的response中包含Net-NTLM hash,用Responder抓取的就是Net-NTLM Hash
關於Responder
由Laurent Gaffie撰寫的 Responder 是迄今為止,在每個滲透測試人員用於竊取不同形式的證書(包括Net-NTLM hash)的最受歡迎的工具。 它通過設置幾個模擬的惡意守護進程(如SQL服務器,FTP,HTTP和SMB服務器等)來直接提示憑據或模擬質詢 – 響應驗證過程並捕獲客戶端發送的必要 hash。 Responder也有能力攻擊LLMNR,NBT-NS和mDNS等協議。
什麼是NTLM中繼攻擊?
攻擊者可以直接通過LM Hash和NTLM Hash訪問遠程主機或服務,而不用提供明文密碼。
0x01 軟件環境
可以從(https://github.com/lgandx/Responder)下載Responder
域內主機:Win7(10.11.11.20)
域控主機:Win2008(10.11.11.18)
被控主機:Ubuntu14.04(10.11.11.11)和目標機同一網段
0x02 通過SMB服務獲取Net-NTLM hash
對於SMB協議,客戶端在連接服務端時,默認先使用本機的用戶名和密碼hash嘗試登錄,所以可以模擬SMB服務器從而截獲hash,執行如下命令都可以得到hash
被控主機執行:$ sudo python Responder.py -I eth0 -v
0x03 通過文件包含獲取Net-NTLM hash
被控主機執行:$ sudo python Responder.py -I eth0 -v
0x04 通過XSS獲取Net-NTLM hash
被控主機執行:$ sudo python Responder.py -I eth0 -v
0x05 WPAD代理服務器抓取Net-NTLM hash
WPAD用於在windows中自動化的設置ie瀏覽器的代理,從Windows 2000開始該功能被默認開啟。
開啟Responder的WPAD後,當PC瀏覽網站時即可抓取到NTLM hash
加-F參數即可開啟WPAD抓取 hash,而且當主機重啟時也能抓到NTLM hash
被控主機執行:$ sudo python Responder.py -I eth0 -v -F
0x06 使用hashcat解密
安裝hashcat(參考https://www.phillips321.co.uk/2016/07/09/hashcat-on-os-x-getting-it-going)
利用hashcat暴力猜解密碼
-m:hash-type,5600對應NetNTLMv2
得到密碼為123456
0x07 通過NTLM中繼攻擊添加用戶
這裡就用到了NTLM中繼攻擊,相當於是中間人攻擊,攻擊者獲取高權限的主機的hash,然後將hash轉發給低權限主機並執行命令
這裡就是抓取域控的hash,然後執行命令得到域內主機的信息
修改Responder.conf,不啟動SMB和HTTP,然後啟動Responder
利用Responder的MultiRelay模塊獲取shell
Reference(侵刪):
- https://apt404.github.io/2016/08/11/ntlm-kerberos
- http://www.4hou.com/system/9383.html
- https://3gstudent.github.io/Windows下的密碼hash-NTLM-hash和Net-NTLM-hash介紹
- https://gist.github.com/anonymous/70f792d50078f0ee795d39d0aa0da46e
- https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes
- https://medium.com/@canavaroxum/xxe-on-windows-system-then-what-76d571d66745
- https://www.anquanke.com/post/id/85004
- https://www.phillips321.co.uk/2016/07/09/hashcat-on-os-x-getting-it-going