1.簡介
本篇將上篇文章的坑補一個椎咧,就是windows局域網環(huán)境下的攻擊手法涉及到的其他協(xié)議。
2.windows 名稱解析簡介
TCP 協(xié)議的通信是基于 IP 地址的颠悬,“名稱解析”就是把需要訪問的計算機的名字解析為 IP 地址的過程忧额。
Windows 中的名稱類型
在 Windows 操作系統(tǒng)中,有兩種名稱拷橘,分別為:主機名稱 和 NetBIOS 名稱。
2.1.主機名稱
從狹義上來說喜爷,主機名稱正如它的字面意思一樣就是一臺主機的名字冗疮。從廣義來說,它又不僅僅包含計算機的名字檩帐,也包含互聯(lián)網中的域名术幔。
由于域名是以樹狀的形式所表現的,同時也是主機名稱的一種轿塔,所以主機名稱是有層次的特愿,最大長度為 255 個字符仲墨,允許的字符有 A~Z勾缭,a~z 和字符“-”。在域名系統(tǒng)中有一種標識一臺主機的 DNS 名字的域名叫做 完全限定域名(FQDN)目养,FQDN 是由“.”連接主機名字和主域名后綴組合成的俩由,例如,seclab.hahaha.org 的 FQDN 名稱就是 seclab 癌蚁。
2.2.NetBIOS 名稱
在 Windows 系統(tǒng)中的另外一種名稱就是 NetBIOS 名稱幻梯,準確的說 NetBIOS 名稱并非是一種名字系統(tǒng)兜畸,而是 Windows 操作系統(tǒng)網絡的一個編程接口,允許主機之間使用 NetBIOS 名稱進行通信碘梢,通信過程是建立在 NetBIOS 協(xié)議之上的咬摇。在安裝完 Windows 系統(tǒng)后系統(tǒng)會默認使用計算機的名字做為當前主機的 NetBIOS 名稱。它的最大長度為 16 個字符煞躬,其中最后一位是不可配置的肛鹏,用于指定 NetBIOS 的服務類型。如果計算機名稱不足 15 位則使用空格補全到 15 位恩沛,反之在扰,如果計算機名稱超過 15 位 則會截取前 15 位。
使用nbtstat -n命令查看本機的 NetBIOS 名稱雷客。
3.Windows 名稱解析相關協(xié)議
在 Windows 系統(tǒng)中有三種與名稱解析相關的協(xié)議芒珠。
3.1.DNS協(xié)議
DNS 協(xié)議是一種最主要的也是操作系統(tǒng)首選的進行名稱解析的協(xié)議,幾乎每一種操作系統(tǒng)都支持 DNS 協(xié)議搅裙,DNS 協(xié)議在實現名稱解析的過程中皱卓,在客戶機上沒有任何本地的數據庫文件,完全依賴于 DNS 服務器呈宇,所監(jiān)聽的端口是 UDP/53
DNS數據包結構如下圖:
DNS 的名稱解析過程如下:
● 讀取本機 DNS 緩存(已經包含本機 hosts 文件內容)
● 如果緩存中沒有好爬,則會請求網絡配置中配置的 DNS 服務器
● 如果 DNS 服務器未作出響應,則請求失敗甥啄。反之存炮,DNS 服務器則會處理用戶請求。
3.2.NetBIOS 協(xié)議(NBNS)
NBNS是NetBIOS name service的縮寫蜈漓,是NetBIOS的命名服務穆桂,用于將NetBIOS名稱映射到IP地址上,是NetBIOS-over-TCP(NBT)協(xié)議族的一份子融虽。NBT 服務監(jiān)聽的端口為 UDP/137享完,會話層協(xié)議。其進行名稱解析的形式為向當前主機所在的子網域發(fā)送廣播包有额。所以般又,當你使用抓包工具在局域網中抓包時總會收到很多 NBNS 數據包。但由于 NetBIOS 協(xié)議進行名稱解析是發(fā)送的 UDP 廣播包巍佑。這樣做雖然速度快且無需額外的配置茴迁,但是廣播包不能跨越網域同時也會增加一些網絡流量,因此微軟在后來推出了 WINS(Windows Internet Name Service)服務器萤衰,當計算機配置為使用 WINS 服務器進行名稱解析時堕义,客戶機將直接和 WINS 服務器進行單播通訊,這樣就可以彌補 NetBIOS 協(xié)議使用廣播進行名稱解析的不足脆栋。
NetBIOS 協(xié)議進行名稱解析的過程如下:
● 檢查本地 NetBIOS 緩存
● 如果緩存中沒有請求的名稱且已配置了 WINS 服務器倦卖,接下來則會向 WINS 服務器發(fā)出請求
● 如果沒有配置 WINS 服務器或 WINS 服務器無響應則會向當前子網域發(fā)送廣播
● 如果發(fā)送廣播后無任何主機響應則會讀取本地的 lmhosts 文件
lmhosts 文件位于C:\Windows\System32\drivers\etc\
目錄中洒擦。
使用nbtstat -c
命令查看本機的 NetBIOS 緩存
使用nbtstat -R
命令清除本機的 NetBIOS 緩存
NetBios的三種服務:
Service Name | Port | Protocol | Short Name |
---|---|---|---|
NetBIOS Name service | 137 | UDP/TCP | NBNS |
NetBIOS Datagram | 138 | UDP | NBND |
NetBIOS Session service | 139 | TCP | NBSS |
解釋:
● NetBIOS-Nname Service:為了啟動會話和分發(fā)數據報,程序需要使用Name Server注冊NETBIOS名稱怕膛,可以告訴其他應用程序提供什么服務熟嫩,默認監(jiān)聽UDP137端口,也可以使用TCP 137端口褐捻。
● Datagram distribution service(數據報分發(fā)服務):無連接邦危,負責錯誤檢測和恢復,默認在UDP 138端口舍扰。
● Session Server(會話服務):允許兩臺計算機建立連接倦蚪,默認在TCP 139端口。如果連接已建立边苹,則建立會話的計算機會向連接發(fā)送"會話請求"包陵且,其中包含建立會話的應用程序的 NetBIOS 名稱和將要建立會話的 NetBIOS 名稱。TCP 可處理所有會話服務包的流量控制和轉載个束,以及將數據流分割到足夠小到足以容納鏈接層數據包的數據流慕购。
需要注意的是,windows下WINS解析是默認開啟的
每一個網卡會有一個NetBios的表(我的計算機只有一塊網卡):
3.3.LLMNR 協(xié)議
DNS 協(xié)議的名稱解析雖然高效但是需要在局域網中單獨配置一臺服務器作為 DNS 服務器茬底,NetBIOS 協(xié)議的名稱解析在一些情況下也需要單獨配置一臺 WINS 服務器沪悲,而且 NetBIOS 協(xié)議不支持 IP v6。因此阱表,為了彌補這些不足殿如,微軟在 Windows Vista 之后推出了基于端到端的名稱解析協(xié)議 — 本地鏈路多播名稱解析(Link-Local Multicast Name Resolution)簡稱為 LLMNR。
LLMNR 也稱作多播 DNS 最爬,因為其數據包格式類似于 DNS 的數據包涉馁。監(jiān)聽的端口為 UDP/5355,支持 IP v4 和 IP v6 爱致,并且在 Linux 上也實現了此協(xié)議烤送。其解析名稱的特點為端到端,IPv4 的廣播地址為 224.0.0.252糠悯,IPv6 的廣播地址為 FF02:0:0:0:0:0:1:3 或 FF02::1:3帮坚。
LLMNR 進行名稱解析的過程為:
檢查本地 NetBIOS 緩存
如果緩存中沒有則會像當前子網域發(fā)送廣播
當前子網域的其他主機收到并檢查廣播包,如果沒有主機響應則請求失敗
工作原理:
當一臺主機想要訪問到另一臺主機時互艾,主機在自己的內部名稱緩存中查詢名稱试和,如果在緩存中沒有找到名稱,那么主機就會向自己配置的DNS服務器發(fā)送查詢請求忘朝,如果主機沒有收到回應或收到了錯誤信息灰署,即DNS解析會失敗判帮,那么就會轉為使用LLMNR鏈路本地多播名稱解析局嘁。使用鏈路本地多播名稱解析時溉箕,主機會通過 UDP 向局域網內發(fā)送多播查詢,查詢主機名對應的IP悦昵,查詢范圍被限制在本地子網內肴茄。本地子網內每臺支持LLMNR的主機在收到這個查詢請求后,收到該請求的主機會判斷自己的主機名是不是這個查詢的主機名但指。如果是寡痰,這臺主機會回復自己IP地址給請求該查詢的主機;如果不是棋凳,則丟棄該請求拦坠。
4.Windows 系統(tǒng)名稱解析順序
值得注意的是:Windows 2K , XP , 2K3 只支持 DNS 和 NetBIOS。 所以此類版本的 Windows 都是先進行 DNS 名稱解析剩岳,如果 DNS 解析名稱失敗贞滨,才會進行 NetBIOS 名稱解析。
Windows Vista 之后(包括 2K8 拍棕, Win7晓铆,Win8.x,Win 10)都支持上述三種協(xié)議绰播,在這類 Windows系統(tǒng)中的名稱解析順序為:先進行 DNS 名稱解析骄噪,如果 DNS 解析名稱失敗,則會使用 LLMNR 進行名稱解析蠢箩,最后才會使用 NetBIOS 名稱解析链蕊。
5.利用 Windows 名稱解析機制的缺陷進行內網攻擊
首先說明一下,在上篇文章中已經展示了通過Inveigh進行投毒+中繼的攻擊方式谬泌,這里僅展示一下獲取NTLMv2 hash的過程示弓,其原理就是上述內容。
攻擊思路很簡單:受害者訪問一個不存在的主機的共享呵萨,計算機就會先進行 DNS 名稱解析奏属,這里DNS 解析名稱失敗,則會使用 LLMNR 進行名稱解析潮峦,由于用戶進行的操作為dir \\qwewqe\c$
囱皿,那么計算機就會帶著用戶的憑證去請求,也就是下圖的NTLMv2 hash忱嘹。所以嘱腥,我們可以通過Inveigh抓取到NTLMv2 hash。(responder這款工具原理也是如此)