mitm6 - 通過IPv6攻破IPv4網路

前言

眾所周知,儘管IPv6的採用量在不斷增加,但它在內網的使用量依然很少。而實際上自Windows Vista以來的所有Windows版本(包括伺服器版本),都默認啟用IPv6。

在本文中,我們會介紹一款名為mitm6的工具。它可以利用IPv6的默認屬性,通過DNS欺騙將流量重定向到攻擊者指定的埠。之後,攻擊者會設法拿到身份憑證,並將其傳遞給網路上的各種伺服器。

IPv6攻擊

這個工具是SLAAC攻擊的一個局部版本。SLAAC是Alex Waters提出的一種攻擊思路,它的主要思想是創建一個惡意IPv6路由器,通過各種服務對目標網路進行中間人(man-in-the-middle)劫持。

它的缺點在於,它試圖通過IPv4網路,為所有設備創建一個IPv6覆蓋網路。而且,它需要相當多的外部軟體包和服務才能正常工作。

為了解決這種問題,mitm6應運而生。mitm6安裝方便,可以有選擇性地攻擊主機、偽造DNS響應數據,同時也能最大限度地減少對目標網路的影響。

mitm6攻擊

攻擊階段1 – 控制主DNS伺服器

首先,mitm6會在攻擊者主機的主介面上監聽,並通過DHCPv6請求IPv6配置。從Windows Vista之後,每台Windows計算機都默認定期請求此配置信息,你可以從Wireshark抓取的數據包看到:

mitm6會響應這些DHCPv6請求,為受害主機分配本地鏈路範圍內的IPv6地址。而實際上,在IPv6網路中,這些地址由主機自動分配,不需要由DHCP伺服器配置。這使得我們有機會將我們的IP設置為默認IPv6 DNS伺服器。

mitm6不公布自己作為網關,因此主機不會嘗試與本地網段或VLAN之外的IPv6主機通信。同時,由於mitm6不會對網路中所有流量進行中間人劫持,而是只針對目標主機,所以它對網路的影響很小。

mitm6的攻擊過程如下圖所示。它自動檢測攻擊者主機的IP配置,應答本網路內客戶端發送的DHCPv6請求報文,然後指定攻擊者的IP為DNS伺服器地址。它還有一個可選功能,即周期性地發送RA(Router Advertisment)報文,提醒客戶端當前環境中存在一個IPv6網路,需要通過DHCPv6協議獲取IPv6地址。一般情況下,如果目標網路中部署了諸如RA Guard之類的防禦機制來防護SLAAC攻擊,可以啟用該功能。

攻擊階段2 - DNS欺騙

在受害主機上,你可以看到我們的伺服器被配置為DNS伺服器。由於Windows對IP協議的偏好,IPv6 DNS伺服器的優先順序高於IPv4 DNS伺服器,因此IPv6 DNS伺服器將用於查詢A(IPv4)和AAAA(IPv6)記錄。

接下來,我們要讓客戶端連接到攻擊者主機,我們的最終目標是讓用戶或瀏覽器自動向攻擊者主機發起身份驗證請求,這就是為什麼我們在testsegment.local這個內部網路進行URL欺騙的原因 。在步驟1的屏幕截圖中,你會看到客戶端在分配IPv6地址後,會立即請求wpad.testsegment.local的相關信息,我們會在本次攻擊中利用到這一現象。

利用WPAD

利用WPAD的歷史

WPAD(Windows Proxy Auto Discovery :Windows代理自動發現)功能一直是一個很有爭議的東西,多年來,它一直被滲透測試人員利用。

正常情況下,企業可以利用這一功能自動探測網路代理,通過該代理訪問互聯網。保存相關信息的wpad.dat文件由某個伺服器提供,一開始,該伺服器的地址需要使用DNS來解析。如果DNS無法解析這一地址,那麼系統會通過不安全的廣播協議(如LLMNR協議)解析伺服器地址。

此時你可以應答這些廣播協議,宣稱WPAD文件位於他們控制的伺服器上,要求身份認證來訪問WPAD文件。而在默認情況下,Windows會自動進行身份認證,無需與用戶交互。如此一來,你就獲取到該主機上已登錄用戶的NTLM憑據。接下來,你可以通過NTLM中繼攻擊,利用竊取的憑證通過其它服務的身份認證。

MS16-077發布後WPAD的利用歷史

2016年,為了緩解上述攻擊,微軟發布了安全補丁MS16-077,添加了兩項重要的保護措施:

- WPAD文件的位置不再需要系統通過廣播協議來解析,只需通過DNS協議完成。

- 即使伺服器主動要求身份認證,系統也不會自動發送憑證。

更新補丁後,默認情況下Windows不再提供憑據,所以我們需要做更多的工作。在受害主機請求一個WPAD文件時,我們為受害主機提供一個有效的WPAD文件。在這個文件中,我們把自己的主機設置為代理伺服器。接下來,只要受害主機訪問網路,就會使用我們的主機作為代理伺服器。

這種方法適用於大部分瀏覽器(諸如Edge、IE、Firefox以及Chrome瀏覽器等 ),因為它們都默認遵守WPAD系統設置。

現在,當受害主機連接到我們的「代理」伺服器,我們可以通過使用CONNECT HTTP動作或者GET請求來識別。我們回復一個HTTP 407錯誤(需要代理驗證),它與用於身份驗證請求的代碼HTTP 401 不同。即使在最新的Windows版本上,IE / Edge和Chrome(使用IE設置)也會自動向代理髮送身份驗證請求。在Firefox中,你可以配置此設置,但它在默認情況下啟用。

Windows頻繁地把NTLM質詢/響應發送給攻擊者,你可以將其轉發給不同的服務。你可以以受害者的身份對各個服務進行身份驗證,然後訪問網站和共享信息。如果受害者擁有足夠的許可權,你甚至可以在計算機上執行代碼、接管整個Windows域。

完整攻擊流程

整個攻擊流程非常簡單。首先,我們啟動mitm6,它開始響應DHCPv6請求,然後向DNS請求內部網路中的名稱。

接下來,我們使用中繼攻擊工具ntlmrelayx。這個工具是Core Security提供的impacket Python庫的一部分,它是著名的smbrelayx工具的改進版,支持多種協議進行中繼。Core Security和Fox-IT最近共同致力於改進ntlmrelayx,又增加了幾項新功能,使其能夠通過IPv6進行中繼,提供WPAD文件,自動檢測代理請求並提示受害者進行正確的身份認證。

為了提供WPAD文件,你需要把主機信息添加到命令提示符中:-whparameter。你還要指定WPAD文件所在的主機。為了確保ntlmrelayx在IPv4和IPv6上偵聽,請使用-6。

以下截圖顯示了兩個工具的運行情況,mitm6有選擇地進行DNS欺騙,ntlmrelayx提供WPAD文件,然後將身份驗證轉發到網路中的其他伺服器。

防禦措施

學會了如何攻擊,那麼如何防禦就手到擒來了~

對於這種攻擊方式,唯一的防範措施就是禁用IPv6。這樣可以阻止Windows客戶端查詢DHCPv6伺服器,且無法通過上述接管DNS伺服器。

對於WPAD漏洞,最好的解決方案是通過Group Policy(組策略)禁用the Proxy Auto detection(代理自動檢測)。如果你的公司內部使用代理配置文件(PAC文件),我們建議你直接配置PAC網址,而不是依靠WPAD自動檢測。

最後,完全禁用NTLM中繼並把它切換到Kerberos

微信公眾號後台回復關鍵詞:mitm6,獲得mitm6的下載地址。

微信公眾號後台回復關鍵詞:ntlmrelayx,獲得ntlmrelayx的下載地址。

更多精彩

隱私防不勝防-讓你一手JavaScript又何妨 ,僅用 CSS實現網頁追蹤mp.weixin.qq.com圖標Purple Rain攻擊--躺著也能破解哈希?mp.weixin.qq.com圖標挖礦,泄密,微軟成幫凶,惡意軟體Zyklon捲土重來mp.weixin.qq.com圖標間諜軟體Skygofree潛伏4年,你的秘密還在嗎?mp.weixin.qq.com圖標內含POC | 又一個漏洞可以遠程控制你的電腦!mp.weixin.qq.com圖標

*IDEA值得分享 | 轉載註明出處

weixin.qq.com/r/00jcxCr (二維碼自動識別)

推薦閱讀:

比起在座的諸位 它才是一條真「索狗」
美洲人歷史比預想要早十萬年;如何用蟲子解決塑料污染 | 每周科技播報
新版12306客戶端右上方的 「兌」是什麼意思?
這樣的靜態3D照片是怎麼拍出來的?
隨著中國科技實力增長,歐美科學界弊端顯現?

TAG:科技 | 黑客Hacker | 破解 |