NETBIOS
IBM公司開發的區域網協議
NETBIOS協議是由IBM公司開發,主要用於數十台計算機的小型區域網。該協議是一種在區域網上的程序可以使用的應用程序編程介面(API),為程序提供了請求低級服務的統一的命令集,作用是為了給區域網提供網路以及其他特殊功能。系統可以利用WINS服務、廣播及Lmhost文件等多種模式將NetBIOS名-——特指基於NETBIOS協議獲得計算機名稱——解析為相應IP地址,實現信息通訊,所以在區域網內部使用NetBIOS協議可以方便地實現消息通信及資源的共享。因為它佔用系統資源少、傳輸效率高,所以幾乎所有的區域網都是在NetBIOS協議的基礎上工作的。
NetBIOS是Network Basic Input/Output System的簡稱,一般指用於區域網通信的一套API
(NetBIOS:Network Basic Input Output System)
NetBIOS是網路的基本輸入輸出系統。
NetBIOS 定義了一種軟體介面以及在應用程序和連接介質之間提供通信介面的標準方法。NetBIOS 是一種會話層協議,應用於各種 LAN (Ethernet、Token Ring 等)和 WAN 環境,諸如 TCP/IP、PPP 和 X.25 網路。
NetBIOS 使得應用程序無需了解包括差錯恢復(會話模式)在內的網路細節。NetBIOS 請求以網路控制塊(NCB:Network Control Block)的形式提供,NCB 中包含了信息存放位置和目標名稱等信息。
NetBIOS 提供開放系統互聯(OSI)模型中的會話層和傳輸層服務,但不支持標準幀或數據格式的傳輸。NetBIOS 擴展用戶介面(NetBEUI)支持標準幀格式,它為 NetBIOS 提供網路層和傳輸層服務支持。
NetBIOS 支持兩種通信模式:會話(session)或數據報(datagram)。會話模式是指兩台計算機為“對話”建立一個連接,允許處理大量信息,並支持差錯監測和恢復功能。數據報模式面向“無連接”(信息獨立發送)操作,發送的信息較小,由應用程序提供差錯監測和恢復功能。此外數據報模式也支持將信息廣播到區域網中的每台計算機上。
NetBIOS 名稱為 16 位元組長(必要情況下使用填充位填滿),對使用的位元組值幾乎沒有限制。對於不執行路由的小型網路,將 NetBIOS 名稱映射到 IP 地址上有三種方法:
1. IP 廣播 - 當目標地址不在本地 cache 上時,廣播一個 包含目標計算機 NetBIOS 名稱的數據包。目標計算機返回其 IP 地址。
2. lmhosts 文件 - 這是一個負責映射 IP 地址和 NetBIOS 計算機名稱的文件。
3. NBNS - NetBIOS 命名伺服器負責將 NetBIOS 名稱映射到 IP 地址上。該服務由 Linux 環境下的後台程序(nmbd daemon)執行。
NetBIOS 數據包有很多不同格式,主要取決於服務和信息類型,以及用以傳送 NetBIOS 數據包的傳輸協議。NetBIOS 包含三種基本服務:NAME、SESSION 和 DATAGRAM。作為例子,我們提供 TCP/IP 環境中的 NetBIOS 名稱數據包格式:
Header (12 bytes)
Question Entry (variable)
Answer Resource Records (variable)
Authority Resource Records (variable)
Additional Resource Records (variable)
NBTSTAT命令可以用來查詢涉及到NetBIOS信息的網路機器。另外,它還可以用來消除NetBIOS高速緩存器和預載入LMHOSTS文件。這個命令在進行安全檢查時非常有用。
用法:nbtstat [-a RemoteName] [-A IP_address] [-c] [-n] [-R] [-r] [-S] [-s] [-RR]
參數:-a 列出為其主機名提供的遠程計算機名字表。
-A 列出為其IP地址提供的遠程計算機名字表。
-c 列出包括了IP地址的遠程名字高速緩存器。
-n 列出本地NetBIOS名字。
-r 列出通過廣播和WINS解析的名字。
-R 消除和重新載入遠程高速緩存器名字表。
-S 列出有目的地IP地址的會話表。
-s 列出會話表對話。
-RR 發送數據包名稱到WINS,然後開始刷新
NBTSTAT生成的列標題具有以下含義:
Input :接收到的位元組數。
Output :發出的位元組數。
In/Out :無論是從計算機(出站)還是從另一個系統連接到本地計算機(入站)。
Life :在計算機消除名字表高速緩存表目前“度過”的時間。
Local Name :為連接提供的本地NetBIOS名字。
Remote Host :遠程主機的名字或IP地址。
Type :一個名字可以具備兩個類型之一:unique or group
在16個字元的NetBIOS名中,最後一個位元組往往有具體含義,因為同一個名可以在同一台計算機上出現多次。這表明該名字的最後一個位元組被轉換成了16進位。
State
NetBIOS連接將在下列“狀態”(任何一個)中顯示:
狀態含義:
Accepting: 進入連接正在進行中。
Associated: 連接的端點已經建立,計算機已經與IP地址聯繫起來。
Connected: 這是一個好的狀態!它表明您被連接到遠程資源上。
Connecting: 您的會話試著解析目的地資源的名字-IP地址映射。
Disconnected: 您的計算機請求斷開,並等待遠程計算機作出這樣的反應。
Disconnecting: 您的連接正在結束。
Idle: 遠程計算機在當前會話中已經打開,但沒有接受連接。
Inbound: 入站會話試著連接。
Listening: 遠程計算機可用。
Outbound: 您的會話正在建立TCP連接。
Reconnecting: 如果第一次連接失敗,就會顯示這個狀態,表示試著重新連接
下面是一台機器的NBTSTAT反應樣本:
C:\>nbtstat CA x.x.x.x
NetBIOS Remote Machine Name Table
Name Type Status
DATARAT <00> UNIQUE Registered
R9LABS <00> GROUP Registered
DATARAT <20> UNIQUE Registered
DATARAT <03> UNIQUE Registered
GHOST <03> UNIFQUE Registered
DATARAT <01> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
您通過下表能掌握有關該機器的哪些知識呢?
名稱編號類型的使用:
00 U 工作站服務
01 U 郵件服務
\\_MSBROWSE_ 01 G 主瀏覽器
03 U 郵件服務
06 U RAS伺服器服務
1F U NetDDE服務
20.U 文件伺服器服務
21.U RAS客戶機服務
22.U Exchange Interchange
23.U Exchange Store
24.U Exchange Directory
30.U 數據機共享伺服器服務
31.U 數據機共享客戶機服務
43.U SMS客戶機遠程控制
44.U SMS管理遠程控制工具
45.U SMS客戶機遠程聊天
46.U SMS客戶機遠程傳輸
4C U DEC Pathworks TCP/IP服務
52.U DEC Pathworks TCP/IP服務
87.U Exchange MTA
6A U Exchange IMC
BE U網路監控代理
BF U網路監控應用
03 U郵件服務
00 G域名
1B U域主瀏覽器
1C G域控制器
1D U主瀏覽器
1E G瀏覽器服務選擇
1C G Internet信息伺服器
00 U Internet信息伺服器
[2B] U Lotus Notes伺服器
IRISMULTICAST [2F] G Lotus Notes
IRISNAMESERVER G Lotus Notes
Forte_$ND800ZA U DCA Irmalan網關服務
Unique (U): 該名字可能只有一個分配給它的IP地址。在網路設備上,一個要註冊的名字
可以出現多次,但其後綴是唯一的,從而使整個名字是唯一的。
Group (G): 一個正常的群;一個名字可以有很多個IP地址。
Multihomed (M): 該名字是唯一的,但由於在同一台計算機上有多個網路介面,
這個配置可允許註冊。這些地址的最大編號是25。
Internet Group (I): 這是用來管理WinNT域名的組名字的特殊配置。
Domain Name (D): NT 4.0提供的新內容。
當安裝TCP/IP協議時,NetBIOS 也被Windows作為默認設置載入,我們的計算機也具有了NetBIOS本身的開放性。某些別有用心的人就利用這個功能來攻擊伺服器,使管理員不能放心使用文件和印表機共享。
利用NETBIOS漏洞進行攻擊的埠分別為:
135埠開放實際上是一個WINNT漏洞,開放的135的埠情況容易引起自外部的“Snort”攻擊!!!
對於135埠開放的問題,可以在你的防火牆上,增加一條規則:拒絕所有的這類進入的UDP包,目的埠是135,源埠是7,19,或者135,這樣可以保護內部的系統,防止來自外部的攻擊。大多數防火牆或者包過濾器已經設置了很多嚴格的規則,已復蓋了這條過濾規則,但仍需注意:有一些NT的應用程序,它們依靠UDP135埠進行合法的通訊,而打開你135的埠與NT的RPC服務進行通訊。如果真是這樣,你一定要在那些原始地址的系統上(需要135口通訊),實施上述的規則,指定來自這些系統的通訊可以通過防火牆,或者,可以被攻擊檢測系統所忽略,以便維持那些應用程序的正常連接。為了保護你的信息安全,強烈建議你安裝微軟的最新補丁包。
上面我們說到Netbios(NETwork Basic Input/Output System)網路基本輸入輸出系統。是1983年IBM開發的一套網路標準,微軟在這基礎上繼續開發。微軟的客戶機/伺服器網路系統都是基於NetBIOS的。在利用Windows NT4.0 構建的網路系統中,對每一台主機的唯一標識信息是它的NetBIOS名。系統可以利用WINS服務、廣播及Lmhost文件等多種模式通過139埠將NetBIOS名解析為相應IP地址,從而實現信息通訊。在這樣的網路系統內部,利用NetBIOS名實現信息通訊是非常方便、快捷的。但是在Internet上,它就和一個後門程序差不多了。因此,我們很有必要堵上這個可怕的漏洞。
1.利用軟體查找共享資源
利用NetBrute Scanner 軟體掃描一段IP地址(如10.0.13.1~10.0.13.254)內的共享資源,就會掃描出默認共享
2. 用PQwak破解共享密碼
雙擊掃描到的共享文件夾,如果沒有密碼,便可直接打開。當然也可以在IE的地址欄直接輸入掃描到的帶上共享文件夾的IP地址,如“\\10.0.13.191”(或帶C$,D$等查看默認共享)。如果設有共享密碼,會要求輸入共享用戶名和密碼,這時可利用破解網路鄰居密碼的工具軟體,如PQwak,破解后即可進入相應文件夾。
1. 解開文件和印表機共享綁定
滑鼠右擊桌面上[網路鄰居]→[屬性] →[本地連接] →[屬性],去掉“Microsoft網路的文件和印表機共享”前面的勾,解開文件和印表機共享綁定。這樣就會禁止所有從139和445埠來的請求,別人也就看不到本機的共享了。
2. 利用TCP/IP篩選
滑鼠右擊桌面上[網路鄰居] →[屬性]→[本地連接] →[屬性],打開“本地連接屬性”對話框。選擇[Internet協議(TCP/IP)]→[屬性]→[高級]→[選項],在列表中單擊選中“TCP/IP篩選”選項。單擊[屬性]按鈕,選擇“只允許”,再單擊[添加]按鈕(如圖2),填入除了139和445之外要用到的埠。這樣別人使用掃描器對139和445兩個埠進行掃描時,將不會有任何回應。
3. 使用IPSec安全策略
3.1 使用IPSec安全策略阻止對埠139和445的訪問
選擇[我的電腦]→[控制面板]→[管理工具]→[本地安全策略]→[IP安全策略,在本地機器],在這裡定義一條阻止任何IP地址從TCP139和TCP445埠訪問IP地址的IPSec安全策略規則,這樣別人使用掃描器掃描時,本機的139和445兩個埠也不會給予任何回應。
4. 停止Server服務
選擇[我的電腦]→[控制面板]→[管理工具]→[服務],進入服務管理器,關閉Server服務。這樣雖然不會關閉埠,但可以中止本機對其他機器的服務,當然也就中止了對其他機器的共享。但是關閉了該服務會導致很多相關的服務無法啟動,如機器中如果有IIS服務,則不能採用這種方法。
5. 使用防火牆防範攻擊
在防火牆中也可以設置阻止其他機器使用本機共享。如在“天網個人防火牆”中,選擇一條空規則,設置數據包方向為“接收”,對方IP地址選“任何地址”,協議設定為“TCP”,本地埠設置為“139到139”,對方埠設置為“0到0”,設置標誌位為“SYN”,動作設置為“攔截”,最後單擊[確定]按鈕,並在“自定義IP規則”列表中勾選此規則即可啟動攔截139埠攻擊了。
在windows9x下如果你是個撥號用戶。完全不需要登陸到nt區域網路環境的話。只需要在控制面板→網路→刪除microsoft網路用戶,使用microsoft友好登陸就可以了。但是如果你需要登陸到nt網路的話。那這一項就不能去處。因為nt網裡需要使用netbios。
在windowsNT下你可以取消netbios與TCP/IP協議的綁定。控制面板→網路→Netbios介面→WINS客戶(tcp/ip)→禁用。確定。重啟。這樣nt的計算機名和工作組名也隱藏了,不過會造成基於netbios的一些命令無法使用。如net等。
在windowsNT下你可以選中網路鄰居→右鍵→本地連接→INTERNET協議(TCP/IP)→屬性→高級→選項→TCP/IP篩選→在“只允許”中填入除了137,138,139隻外的埠。如果你在區域網中,會影響區域網的使用
在windowsXP下你可以在控制面板上點擊管理工具-本地安全策略,右擊"IP安全策略,在本地計算機"選擇"管理IP篩選器表和篩選器操作",點添加,在對話框里填,隨便寫。只要你記得住。最好還是寫"禁用135/139埠"比較看的懂。點右邊的添加->下一步->源地址為"任何地址"->目的地址"我的地址"->協儀為TCP->在到此埠里填135或139就可以.
還有一個辦法就是TCP/IP協議里禁用NETBIOS.