上次的月賽中,遇到了一個經典的MS08-067的漏洞,這是一個經典的教科書的漏洞。但是僅限於使用metasploit來攻擊這個漏洞。現在我想簡單寫一些關於139和445端口的東西。
首先提到的是NetBios,NetBios是Network Basic Input/Output System的縮寫,提供了一種允許局域網內不同電腦能夠通信的功能。嚴格來說,NetBios是一套API,而並不是一個網絡協議。
如今,我們使用的網絡協議棧是TCP/IP協議棧,在Windows操作系統上,NetBios運行在NetBios over TCP/IP的協議上,NetBios over TCP/IP(簡稱NBT或者NetBT)是一個網絡協議,允許以前使用NetBios API的應用程序能夠在現代的TCP/IP網絡中。如下圖:
再說SMB,SMB是Server Message Block的縮寫,作為一個應用層的協議,主要提供一個網絡中文件共享、文件打印和進程間通信等功能,如今SMB的使用主要存在於Windows系統中。
SMB協議是運行在會話層之上的網絡層協議,有兩種運行方式,第一種通過NetBios API,如下圖:
使用的是UDP的137和138端口以及TCP的137和139的端口。
第二種是直接運行在TCP和UDP協議之上,使用的是445端口,可以稱為"Direct hosting of SMB over TCP/IP"。
總結一下,Windows主機上文件打印、文件共享等都通過SMB協議來實現,而SMB通過兩種方式運行在139和445端口之上。我們可以通過手段使得SMB只通過第二種方式運行,而不通過NetBios API。本地連接屬性àInternet協議版本4屬性à高級àWINSà禁用TCP/IP上的NetBios.這樣的話SMB就只運行在445端口之上了。
禁用前:
禁用后:
參考:
https://en.wikipedia.org/wiki/NetBIOS
https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP
https://en.wikipedia.org/wiki/Server_Message_Block
http://www.dslreports.com/forum/r5486656-MICROSOFT-DS-What-is-this
https://support.microsoft.com/en-us/kb/204279