分層服務提供者

分層服務提供者(英語:Layered Service Provider,縮寫LSP)是一項已被棄用的Microsoft WindowsWinsock 2服務提供者接口英語Service Provider Interface(SPI)的特性,它也被稱為分層服務提供商分層服務提供程序。分層服務提供者為使用Winsock API插入本身到TCP/IP協議棧DLL。在進入協議棧後,分層服務提供者可以攔截和修改入站和出站的互聯網流量。它可以處理所有訪問互聯網的應用程序(例如網頁瀏覽器電子郵件客戶端等)連接互聯網的TCP/IP流量。但是,它也可能被惡意軟件用以重定向網絡訪問到惡意網站,或阻止訪問Windows Update等網站。不過,計算機安全程序也可以用它掃描網絡流量以檢測病毒和其他威脅。Winsock服務提供者接口(SPI)API提供了一種將提供者彼此分層的機制。Winsock LSP可用於一系列功能目的,包括家長控制和Web內容過濾。Windows Vista中的家長控制Web過濾器就是一個LSP。所有提供者的分層順序保存在Winsock目錄中。

細節

不同於被許多書籍、文檔和示例覆蓋而眾所周知的Winsock 2 API,Winsock 2 SPI相對不那麼被人所知。Winsock 2 SPI由網絡傳輸服務提供者和命名空間解析服務提供者實現。Winsock 2 SPI可以用來擴展現有的傳輸服務提供者,從而實現一個分層的服務提供者。例如,Windows 98Windows 2000上的服務質量(QoS)在TCP/IP協議棧上實現為一個LSP。LSP的另一種用法是開發專門的URL過濾軟件,阻止網頁瀏覽器訪問特定網站,而不必關心所用的網頁瀏覽器款型。Winsock 2 SPI允許軟件開發人員創建兩種類型的服務提供者——傳輸與命名空間。傳輸提供者(通常稱為協議棧)為提供連接建立、數據傳輸、流量控制、錯誤控制等功能的服務。命名空間提供者則是將網絡協議的尋址屬性與一個或多個人類友好名稱相關聯,並實現與協議無關的名稱解析。SPI還允許開發兩種類型的傳輸服務提供者——基本與分層服務提供者。

基本服務提供者實現傳輸協議的實際細節:建立連接、傳輸數據,以及執行流控制和錯誤控制。分層服務提供者僅在更高層級實現定製的通信功能,並依靠現有的底層基本提供者與遠程端點進行實際的數據交換。

Winsock 2 LSP被實現為有單個導出入口點函數「WSPStartup」的WindowsDLL 。其他傳輸SPI函數可通過LSP的調度表英語Dispatch table訪問ws2_32.dll或上層鏈的分層提供者。LSP和基本攔截者串聯在一起而形成協議鏈。LSP DLL必須使用特殊的LSP註冊人指示Winsock 2註冊,LSP的加載順序(可以安裝多個LSP)和要攔截的協議。

LSP通過在ws2_32.dll處理前攔截Winsock 2命令來工作;因此它可以修改命令、刪除命令,或者僅記錄數據。因此它成為了惡意軟件、網絡過濾器、網絡截取和基於數據流的嗅探器的有力幫手。通過LSP嗅探網絡流量有時很麻煩,因為防病毒廠商經常將此種活動標為惡意行為——因此網絡數據包分析器是捕捉網絡流量的更好方法。

LSP的功能和Winsock代理嗅探允許某個應用程序的流量被捕捉並使其轉向localhost(127.0.0.1),從而在Windows上捕捉。[1]

LSP有兩種:IFS與非IFS。市場上現有的大多數LSP均是非IFS。兩種LSP的區別是:非IFS的LSP修改socket句柄為一個非有效的Windows IFS句柄,從而LSP必須實現所有的Winsock 2方法。IFS LSP則是保留套接字句柄,使LSP能夠只實現想要攔截的函數。

棄用和繞過LSP

LSP從Windows Server 2012起已被棄用。[2]包含LSP的系統將不能通過Windows認證產品的商標檢查。[3]Windows 8中使用網絡的「Metro」式應用將自動繞過所有LSP。Windows過濾平台提供了類似的功能,並且兼容Windows 8的「Metro」式和常規的桌面應用程序。

損壞問題

LSP的主要問題是任何LSP中的缺陷均可能導致應用程序故障。例如,一個LSP可能通過接口返回錯誤的字節數,導致應用程序進入等待網絡堆棧指示數據已發送的無限循環。

LSP的另一個重要的常見問題是,如果它被不正確的移除或註銷,或者如果LSP有錯誤,則會導致註冊表中Winsock目錄的錯誤,整個TCP/IP堆棧將中斷,計算機將無法訪問網絡。

LSP技術經常被間諜軟件廣告軟體所利用,用來攔截互聯網通信。例如,惡意軟件可能將自身插入為網絡堆棧中的一個LSP並轉發用戶的所有流量到未經授權的外部站點,從而進行非授權的數據挖掘或其他非法活動。如果惡意軟件的LSP被非正確的移除,Windows可能將無法正常訪問網絡。

防止所有網絡連接潛在損壞的功能在Windows XP Service Pack 2、Windows Server 2003 Service Pack 1及之後所有的Windows操作系統中已存在,其中的Winsock有能力在用戶卸載LSP等操作後自愈。[4]

已安裝的LSP可以使用XP/Vista中Windows Defender的軟件資源瀏覽器或第三方工具查看。

參考資料

  1. ^ "Proxocket - A Winsock Proxy Sniffer", NETRESEC Network Security Blog, 2011. [2017-02-12]. (原始內容存檔於2020-08-14). 
  2. ^ 存档副本. [2017-02-12]. (原始內容存檔於2017-02-13). 
  3. ^ 存档副本. [2017-02-12]. (原始內容存檔於2017-08-26). 
  4. ^ How to determine and recover from Winsock2 corruption. [2017-02-12]. (原始內容存檔於2015-03-07). 

外部連結