簡(jiǎn)介
LLMNR&NBT-NS 欺騙攻擊是一種經(jīng)典的內(nèi)部網(wǎng)絡(luò)攻擊,然而由于一方面了解它的人很少,另一方面在Windows中它們是默認(rèn)啟用的,所以該攻擊到現(xiàn)在仍然是有效的。在本文中,我們首先為讀者解釋什么是LLMNR&NBT-NS攻擊,然后介紹如何通過(guò)該攻擊進(jìn)行滲透測(cè)試,最后,給出針對(duì)該漏洞的防御措施。
什么是LLMNR和NetBIOS名稱服務(wù)器廣播?
當(dāng)DNS名稱服務(wù)器請(qǐng)求失敗時(shí),Microsoft Windows系統(tǒng)就會(huì)通過(guò)鏈路本地多播名稱解析(LLMNR)和Net-BIOS名稱服務(wù)(NBT-NS)試圖在本地進(jìn)行名稱解析。
LLMNR和Netbios NS廣播有什么問(wèn)題嗎?
當(dāng)DNS名稱無(wú)法解析的時(shí)候,客戶端就會(huì)將未經(jīng)認(rèn)證的UDP廣播到網(wǎng)絡(luò)中,詢問(wèn)它是否為本地系統(tǒng)的名稱。 事實(shí)上,該過(guò)程是未被認(rèn)證的,并會(huì)廣播到整個(gè)網(wǎng)絡(luò),從而允許網(wǎng)絡(luò)上的任何機(jī)器響應(yīng)并聲稱是目標(biāo)機(jī)器。
什么是LLMNR / NBT-NS中毒攻擊?
通過(guò)偵聽LLMNR和NetBIOS廣播,攻擊者可以偽裝成受害者(客戶端)要訪問(wèn)的目標(biāo)機(jī)器,從而讓受害者乖乖交出相應(yīng)的登陸憑證。在接受連接后,攻擊者可以使用Responder.py或Metasploit等工具將請(qǐng)求轉(zhuǎn)發(fā)到執(zhí)行身份驗(yàn)證過(guò)程的流氓服務(wù)(如SMB TCP:137)。 在身份驗(yàn)證過(guò)程中,受害者會(huì)向流氓服務(wù)器發(fā)送用于身份認(rèn)證的NTLMv2哈希值,這個(gè)哈希值將被保存到磁盤中,之后就可以使用像Hashcat或John Ripper(TJR)這樣的工具在線下破解,或直接用于 pass-the-hash攻擊。
在Windows中,LLMNR和NBT-NS是默認(rèn)啟用的,并且了解這種攻擊的人很少,所以我們可以在內(nèi)部滲透測(cè)試中利用該攻擊來(lái)收集憑據(jù)。為此,我們可以在使用其他攻擊手段進(jìn)行測(cè)試的過(guò)程中,可以讓Responder.py一直運(yùn)行著。
Linux和蘋果用戶是否受該攻擊的影響?
是的,Linux和蘋果客戶端也使用類似的協(xié)議,即多播DNS(mDNS),該協(xié)議會(huì)監(jiān)聽TCP:5353端口。有關(guān)mDSN的更多信息,請(qǐng)參閱mDNS的維基百科頁(yè)面。
典型的LLMNR / NetBIOS名稱服務(wù)器攻擊
下圖顯示了用戶因?yàn)闊o(wú)法解析服務(wù)器名稱而遭受這種攻擊的典型場(chǎng)景。
攻擊過(guò)程詳解
1. 用戶發(fā)送不正確的SMB共享地址\\ SNARE01
2. DNS服務(wù)器響應(yīng)\\SNARE01 - NOT FOUND
3. 客戶端進(jìn)行LLMNR / NBT-NS廣播
4. 響應(yīng)者告訴客戶端它是SNARE01并接受NTLMv2哈希值
5. 響應(yīng)者將錯(cuò)誤發(fā)送回客戶端,因此最終用戶如果不是精于此道的話,通常不會(huì)引起警覺(jué)
實(shí)例:使用Kali&Responder.py
下面,我們通過(guò)一個(gè)實(shí)際例子來(lái)演示此攻擊的危害性:使用Kali Linux和Responder.py在內(nèi)部滲透測(cè)試期間從網(wǎng)絡(luò)捕獲用戶憑據(jù)。
從github安裝最新版本的responder軟件:
123456root@kali:~# git clone https://github.com/SpiderLabs/Responder.git
Cloning into 'Responder'...
remote: Counting objects: 886, done.
remote: Total 886 (delta 0), reused 0 (delta 0), pack-reused 886
Receiving objects: 100% (886/886), 543.74 KiB | 0 bytes/s, done.
Resolving deltas: 100% (577/577), done.
運(yùn)行Responder.py,使用您的本地接口和IP地址,具體如下所示:
12root@kali:~# cd Responder/
root@kali:~/Responder# python Responder.py -i 192.168.210.145 -I eth0
這樣就可以啟動(dòng)Responder.py了:
Responder.py運(yùn)行后,我們模擬一個(gè)用戶鍵入錯(cuò)誤的SMB服務(wù)器名稱,比如使用SNARE01而不是SHARE01。
下面,從客戶端計(jì)算機(jī)輸入錯(cuò)誤SMB服務(wù)器名稱:
注意:實(shí)驗(yàn)室環(huán)境中的客戶端計(jì)算機(jī)是Windows 2008 Server R2
在客戶端廣播不正確的服務(wù)器名稱的幾秒鐘時(shí)間內(nèi),Responder.py就完成了對(duì)這個(gè)廣播請(qǐng)求的應(yīng)答,并將NTLMv2哈希值寫入了硬盤。
最后一步是破解NTLMv2哈希值,這一步成功與否取決于目標(biāo)環(huán)境中的密碼策略的復(fù)雜性,這可能需要等待一些時(shí)間。 當(dāng)密碼策略是已知的,或者懷疑密碼安全性較高的時(shí)候,ocl-hashcat將是離線破解的上上之選。由于在測(cè)試實(shí)驗(yàn)室環(huán)境中我們故意使用了不安全的密碼,因此這里使用john來(lái)破解NTLMv2哈希值:
如何保護(hù)網(wǎng)絡(luò)免受LLMNR / NBT-NS中毒攻擊
好消息是:這種攻擊是相當(dāng)容易預(yù)防的。注意,為此需要禁用LLMNR和NetBIOS名稱服務(wù),如果您只禁用LLMNR的話,則Windows將無(wú)法解析的名稱轉(zhuǎn)移到NetBIOS名稱服務(wù)器以進(jìn)行解析。
禁用NetBIOS名稱服務(wù)
似乎沒(méi)有辦法使用GPO來(lái)禁用NetBIOS名稱服務(wù)(如果你知道的話,請(qǐng)?jiān)诨貜?fù)中告訴我們?。?,其手冊(cè)說(shuō)明如下所示。
1. 請(qǐng)依次打開:控制面板\網(wǎng)絡(luò)和Internet \網(wǎng)絡(luò)連接
2. 右鍵單擊網(wǎng)絡(luò)接口,選擇屬性,雙擊“Internet Protocol Version 4 TCP/IPv4”
3. 在下一個(gè)屏幕上,單擊高級(jí),然后選擇WINS選項(xiàng)卡
4. 單擊“Disable NetBIOS over TCP/IP”旁邊的單選按鈕
具體操作,請(qǐng)參閱下面的屏幕截圖:
禁用LLMNR
幸運(yùn)的是,您可以使用GPO來(lái)禁用LLMNR,具體如下所示:
1. Start => Run => gpedit.msc
打開“Local Computer Policy”=>“Computer Configuration”=>“Administrative Templates”=>“Network”=>“DNS Client”
2. 單擊“Turn Off Multicast Name Resolution”,并將其設(shè)置為“Enabled”
小結(jié)
本文介紹了一種經(jīng)典的內(nèi)部網(wǎng)絡(luò)攻擊方法,雖然這種方法由來(lái)已久,但是由于了解這種攻擊的人非常少,另外由于相關(guān)設(shè)置在Windows中是默認(rèn)啟用的,所以到目前為止,這種攻擊手段仍然行之有效。
【本文原創(chuàng)作者:shan66,本文屬安全客原創(chuàng),安全脈搏yuyang編整理發(fā)布】
聯(lián)系客服