一.LLMNR協議
1.LLMNR簡介
鏈路本地多播名稱解析(LLMNR)是一個基于域名系統(DNS)數據包格式的協議,使用此協議可以解析局域網中本地鏈路上的主機名稱。它可以很好地支持IPv4和IPv6,是僅次于DNS解析的名稱解析協議。
2.LLMNR解析過程
LLMNR解析前提是本地hosts和DNS解析失敗時,會使用LLMNR解析。LLMNR解析過程如圖1-1所示。
1)主機在本地NetBIOS緩存名稱中進行查詢。
2)如果緩存名稱中沒有查詢到,則以此向配置的主備DNS服務器發送解析請求。
3)如果主備DNS服務器沒有回復,則向當前子網域發送多播,獲取對應的IP地址。
4)本地子網域的其他主機收到并檢查多播包,如果沒有響應則請求失敗。
從以上工作過程可以明白LLMNR是以多播形式進行查詢的,類似于ARP通過MAC尋找IP地址。這樣就存在一個欺騙攻擊問題。
繪圖2
3.LLMNR欺騙攻擊
假設用戶訪問一個域名xxx,如圖1-2所示,在hosts文件和DNS解析失敗,此時會通過LLMNR協議進行廣播請求,攻擊者利用該廣播請求時間向請求用戶回復響應IP地址,這時xxx映射的IP就是攻擊者IP,當用戶訪問xxx域名就會解析到攻擊IP,進而攻擊者便可以拿到net-ntlm hash。
繪圖2_backup_311867
4.LLMNR防御措施
1)點擊開始——運行——輸入命令——打開本地組策略管理器,如圖1-3所示。
gpedit.msc
圖1-3 打開本地組策略管理器
2)打開計算機配置——管理模版——網絡——DNS客戶端,如圖1-4所示。
圖1-4 打開配置DNS客戶端
3)雙擊打開“關閉多播名稱解析”,如圖1-5所示。
圖1-5 打開“關閉多播名稱解析”
4)將關閉多播名稱解析中的狀態改為“已禁用”,如圖1-6所示。
圖1-6 將關閉多播名稱解析中的狀態改為“已禁用”
二.NETBIOS協議
1. NETBIOS簡介
NetBIOS是Network Basic Input/Output System(網上基本輸入輸出系統)的縮寫,它是一種接入服務網絡的接口標準,主機系統通過WINS服務、廣播及Lmhost文件等多種模式,把NetBIOS名解析成對應的IP地址,實現信息通訊。因其占用資源小、傳輸快的特點,廣泛應用于局域網內部消息通信及資源的共享。
2.NETBIOS服務類型
NetBIOS支持面向連接(TCP)和無連接(UDP)通信。它提供三個分開的服務:命名(NetBIOS names)、會話(NetBIOS sessions)、數據報(NetBIOS datagrams)。NetBIOS names為其他兩個服務的基礎。
NetBIOS服務類型在TCP/IP上的基本架構如圖1-7所示。
IMG_295
下面我們針對三種常見的NetBIOS服務類型進行詳細說明,如表1-1所示。
表1-1 三種常見的NetBIOS報文類型
服務類型 | 端口 | 具體描述 |
---|---|---|
Net BIOS names(NetBIOS名稱服務) | UDP 137 | 鑒別資源。程序、主機都有獨特的NetBIOS名稱 |
Net BIOS datagrams(Net BIOS數據報) | UDP 138 | 無連接的將數據報發送到特定的地點、組、整個局域網。 |
Net BIOS sessions(Net BIOS會話服務) | TCP 139 | 提供給面向連接,可靠的,完全雙重的信息服務。 |
3. NETBIOS解析過程
NetBIOS 協議進行名稱解析的過程如下。
1)首先主機先檢查本地NetBIOS緩存。
2)如果緩存中沒有請求的名稱,但是配置類WINS服務器,則向WINS服務器發送請求。
3)如果沒有配置WINS服務器或WINS服務器無響應時,則和LLMNR一樣向當前子網域發送廣播。
4)如果子網域其他主機無響應,則讀取本地的lmhosts(C:\Windows\System32\drivers\etc\)文件。
NetBIOS協議是發送UDP廣播包進行解析,如果不配置WINS服務器,則和LLMNR一樣會有欺騙攻擊問題。
4. NETBIOS防御措施
1)輸入命令ncpa.cpl,打開網絡連接,如圖1-33所示。
圖1-8 輸入命令ncpa.cpl打開網絡連接
2)通過“本地連接——屬性—Internet協議版本4——屬性——高級”來配置,如圖1-9、圖1-10、圖1-11所示。
圖1-9 打開網絡連接屬性
圖1-10 配置TCP/IPV4
圖1-11 配置IP地址
3)在WINS標簽欄的NetBIOS設置中禁用NetBIOS,如圖1-12所示。
圖1-12 在WINS標簽欄中的NetBIOS設置中禁用NetBIOS
三.WPAD協議
1.Windows WPAD 簡介
WPAD全稱Web Proxy Auto-Discovery Protocol,也就是WEB代理自動發現協議(這里的代理就是我們在滲透中常用BURP的時候修改的代理設置)。它的作用是讓局域網瀏覽器自動發現內網中的代理服務器,并且自動設置成該代理進行連接企業內網或者互聯網。若系統開啟了WPAD,那么主機就會在當前連接的局域網中去尋找代理服務器,找到之后會在代理服務器中下載PAC(Proxy Auto-Config)的配置文件(其實我們在日常中經常能看見當我們使用SSR的時候就會看見PAC自動模式),這個PAC文件會定義用戶在訪問什么地址的時候,使用什么代理進行訪問,舉一個常見易懂的例子,有些公司會對訪問谷歌瀏覽器有一定的需求,那么他們就會搭建一個代理服務器,里面的PAC文件就會配置當訪問谷歌瀏覽器的時候web代理自動使用到那個代理服務器上,同時瀏覽器將下載并解析該文件,將相應的代理服務器設置到瀏覽器中。
2.WPAD實現方式
我們前面說過主機會在當前連接的局域網中自動尋找代理服務器,它的實現方式主要分為兩種。
(1)DHCP
在DHCP服務器中,DHCP服務器的252選項是被當作查詢或者注冊使用的指針,我們可以在DHCP服務器中添加一個用于查找WPAD主機的252項,內容是部署在WPAD主機上的PAC文件的URL,當客戶端Web瀏覽器要訪問某個地址時,Web瀏覽器會向DHCP服務器發送DHCP INFORM數據包來查詢PAC文件的位置,DHCP服務器收到請求以后會返回DHCP ACK數據包進行響應,其中包含了選項和配置列表,在這些返回選項中的252選項就是代理自動配置文件的位置,Web瀏覽器就可以執行下載PAC文件請求。如圖1-1所示,這是以DHCP的方式獲取PAC示意圖。
IMG_310
目前大多數內網中已經不再使用DHCP服務器對客戶端的WPAD進行配置,而是逐漸采用較為簡單的DNS服務器方式。
(2)DNS
第二種是目前使用最廣泛的方式,通過DNS方式實現WPAD的原理是:先由Web瀏覽器向DNS服務器發起WPAD+X查詢,DNS服務器接收到查詢請求后返回提供WPAD主機的IP地址,Web瀏覽器通過該IP的80端口下載wpad.dat(瀏覽器配置用文件)和wspad.dat(防火墻配置用文件)以實現自動配置。例如:用戶的計算機網絡名稱為test.xx.example.com,瀏覽器將依次嘗試下列URL,以期成功在客戶端的域中找到一個代理配置文件。如圖1-2所示。
IMG_311
3.PAC文件內容
PAC文件最主要的作用是可以控制瀏覽器如何處理使用HTTP/HTTPS的流量,其實在每個PAC文件中都會包含一個FindProxyForURL函數,用來定義Web瀏覽器是直接將流量發送到Internet,還是將流量發送到代理服務器的規則,以下是PAC文件的具體配置內容。
代碼語言:bash
復制
function FindProxyForURL(url, host) { if (shExpMatch(host, "*.example.com")){return "DIRECT";}if (isInNet(host, "10.0.0.0", "255.255.248.0")){return "PROXY fastproxy.example.com:8080";}return "PROXY proxy.example.com:8080; DIRECT";
}
1)shExpMatch將嘗試將主機名或URL與指定的shell表達式匹配,如果匹配則返回true。
2)isInNet 此函數判斷主機名的IP地址,如果在指定的子網內則返回true。如果傳遞了主機名,該函數會將主機名解析為IP地址。
代碼語言:bash
復制
if (shExpMatch(host, "*.example.com")){return "DIRECT";}
3)如果在host中匹配到了.example.com,就會返回true,DIRECT的意思是直連,那么這句話就是:如果訪問了.example.com的URL那么就會直接連接,不走代理。
代碼語言:bash
復制
if (isInNet(host, "10.0.0.0", "255.255.248.0")){return "PROXY fastproxy.example.com:8080";}
4)如果host在指定的IP范圍內,那么就會通過代理fastproxy.example.com:8080進行訪問。
作者:一只特立獨行的兔先生
原文:Windows安全認證機制之Windows常見協議-騰訊云開發者社區-騰訊云
?