內網滲透中的 Net-NTLM Relay Attack
漏洞原理
在看 Net-NTLM Relay Attack 之前,需了解一下攻擊原理是怎樣實現的。
Net-NTLM Relay 原理,它是發生在 NTLM 認證的第三步,客戶端發送使用服務端 NTLM Hash 加密的 Challenge 值,得到 Net-NTLMHash。我們就是要重放這個 Net-NTLMHash 來進行攻擊。
所以,進行NTLM Relay攻擊的第一步我們首先要獲得這個Net-NTLMHash值。那么如何能獲得這個Net-NTLMHash值呢?思路是讓受害者把 Net-NTLMhash 自己發送給攻擊者,也就是說只要是使用 SMB、HTTP、LDAP、MSSQL 等協議來進行 NTLM 認證的程序,都可以嘗試用來向攻擊者發送 Net-NTLM hash(思路很多,實際情況靈魂運用)。
通過 SMB 來進行 Relay Attack
SMB 協議的 Relay攻擊,可直接 Relay 到 smb 服務器,是最直接最有效的方法。
通過 SMB Relay Attack 我們可以在目標遠程服務器上執行命令,上傳我們的惡意 exe ,又或者到遠程服務上執行惡意代碼 ... 等等
而 Relay Attack 有兩種場景:
1:工作組環境
在工作組環境里面,工作組中的機器之間相互沒有信任關系,每臺機器的賬號密碼 Hash 只是保存在自己的 SAM 文件中,這個時候 Relay 到別的機器可能性就不大,除非兩臺機器的賬號密碼一樣,不然毫無意義。
2:域環境
我們知道在域環境下所有域用戶的賬號密碼 Hash 都保存在域控的 ntds.dit 里面。若沒有限制域用戶登錄到某臺機子,那就可以將該域用戶 Relay 到別人的機子,或者是拿到域控的請求,將域控 Relay 到普通的機子,比如域管運維所在的機器。
PS:域環境下域控默認開啟 smb 簽名
下面演示在域環境下進行 Relay Attack,將會使用幾款工具在域環從域控 relay 到普通域機器執行命令等操作。
當前環境
目標機器IP紅隊人員VPSKali Linux192.168.0.175域控制器Windows 2008192.168.0.198域內機器Windows 7192.168.0.128
通過 impacket 下的 smbrelayx.py 進行 Relay Attack
1、在紅隊人員 VPS 上執行如下命令監聽 80 和 445 端口,偽造 http 和 smb 服務:
#SMBRelay 攻擊 192.168.0.128 主機,并執行 whoami 命令 python3 smbrelayx.py -h 192.168.0.128 -c whoami

2、通過釣魚或者其他手段誘導域管理員或域用戶訪問了紅隊人員偽造的 HTTP 或 SMB 服務,訪問 http://192.168.0.175 ,并輸入賬號密碼進行認證:

3、此時就 Relay 成功獲取到 192.168.0.128 的 system 權限(當然只是 whoami 命令,實戰中可以直接遠程加載 powershell 或者其他手段反彈 Shell 到 C2,在這里就不多闡述)

通過 impacket 下的 ntlmrelayx.py 進行 Relay Attack
1、在紅隊人員 VPS 上執行如下命令監聽 80 和 445 端口,偽造 http 和 smb 服務:
# SMBRelay 攻擊 192.168.0.128 主機,并執行 whoami 命令 python3 ntlmrelayx.py -t smb://192.168.0.128 -c whoami -smb2support

2、通過釣魚或者其他手段誘導域管理員或域用戶訪問了紅隊人員偽造的 HTTP 或 SMB 服務,訪問 http://192.168.0.175 ,并輸入賬號密碼進行認證:

或者讓域控隨便訪問一個資源使用 smb 觸發:(因為它會檢查本地 host 文件,然后檢查 DNS,如果都不存在,就會通過 LLMNR 協議進行多播,在局域網中進行搜索。此時可以在攻擊機上看到 Responder 的響應,然后受害者的 Windows 機器會向攻擊者進行身份驗證)

3、此時就 Relay 成功獲取到 192.168.0.128 的 system 權限:

結尾
在內網滲透中若利用 LLMNR/NetBIOS 劫持成功并獲得了目標主機的 Net-NTLM Hash,我們可以進行爆破,但是需要有一個強大的字典,否則你很難得到明文密碼。
由于 Net-NTLM Hash 不像 NTLM-Hash,我們不能用 Net-NTLM Hash 來進行 Pass The Hash。那么不妨試一下 NTLM Relay Attack。