受影響系統:
Microsoft Systems Management Server 2.0
Microsoft Windows NT 4.0
Microsoft BackOffice 4.5
Microsoft Windows NT 4.0
Microsoft Systems Management Server 1.2
Microsoft Windows NT 4.0
Microsoft BackOffice 4.0
Microsoft Windows NT 4.0
Microsoft Windows NT 4.0
Microsoft Windows NT 3.5.1
Microsoft Windows NT 3.5
Microsoft Windows NT Terminal Server
Microsoft Windows NT 4.0
Microsoft Windows NT 2000
描述:
隨Windows NT/2000一起發行的網絡監視器工具允許管理員捕獲和分析到本機的數據流以及局域網中的所有數據流。Netmon被設計成在數據流可以用圖形界面察看之前捕獲它們,它分析接收自網絡的信息,然后在用戶界面中將其轉換成可讀的格式。
Netmon中不同的DLL庫分析不同的應用協議。這些庫中一個名為“browser.dll”的DLL存在漏洞。通過利用這些存在漏洞的DLL中的函數調用的多處堆棧溢出,遠程攻擊者可以控制網絡監視器,執行任意代碼并控制受害主機。
測試方法:
警 告
以下程序(方法)可能帶有攻擊性,僅供安全研究與教學之用。使用者風險自負!
1、如果發送一個CIFS瀏覽幀到138號UDP端口,browser.dll中的函數FormatBrowserSummary( )將被調用。一種名為“Become Backup”的特定的CIFS瀏覽幀包含有要顯示的瀏覽服務器的名字。該信息從UDP數據報中提取,以便將其包含在單行的總結中。
瀏覽服務器名字被傳遞給Win32 API函數OemToChar( ),該函數將字符串從OEM定義的字符集轉換成ANSI字符集或者寬字符集。當OemToChar( )遇到一個空字符時將停止轉換。browser.dll中存在漏洞的FormatBrowserSummary( )函數調用OemToChar( )將服務器名字轉換后存放在堆棧中長度為255字節的緩沖區中。OemToChar( )沒有提供邊界檢查,堆棧可以被任意值覆蓋。
2、如果161號UDP端口收到一個SNMP請求,snmp.dll將被調用。SNMP請求中的community串是從數據報中提取的,以便用在與協議有關的總結中。SNMP community串被browser.dll用Win32函數wsprintfA( )拷貝到堆棧中的一個緩沖區中。由于該函數未提供足夠的邊界檢查,堆棧可被覆蓋。
3、如果從139號TCP端口接收到一個SMB會話,smb.dll將被調用。這個分析器包含兩個漏洞。如果網絡監視器接收到一個SMB會話,而該會話中有用于C類事務的很長的用戶名或文件名,它將按照類似如上所描述的SNMP分析器中的漏洞那樣,通過未經邊界檢查的wsprintfA( )調用覆蓋其堆棧。
可以通過兩種方法來控制這些漏洞中的指令指針,一種是通過覆蓋返回地址從而使存在漏洞的函數返回到指定的地址,另外一種方法是通過覆蓋結構化異常處理回調指針來導致一個無效的內存引用。
建議:
微軟已經提供如下補丁:
Microsoft Systems Management Server 2.0:
Microsoft patch Q273476c
Microsoft Systems Management Server 1.2:
Microsoft patch Q273476c (SMS 1.2)
Microsoft Windows NT 4.0:
Microsoft patch Q274835i
Intel
Microsoft Windows NT 2000:
Microsoft patch Q274835_W2K_SP2_x86_en