分层服务提供者

分层服务提供者（，缩写LSP）是一项已被弃用的Microsoft Windows中Winsock 2（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 98和Windows 2000上的服务质量（QoS）在TCP/IP协议栈上实现为一个LSP。LSP的另一种用法是开发专门的URL过滤软件，阻止网页浏览器访问特定网站，而不必关心所用的网页浏览器款型。Winsock 2 SPI允许软件开发人员创建两种类型的服务提供者——传输与命名空间。传输提供者（通常称为协议栈）为提供连接建立、数据传输、流量控制、错误控制等功能的服务。命名空间提供者则是将网络协议的寻址属性与一个或多个人类友好名称相关联，并实现与协议无关的名称解析。SPI还允许开发两种类型的传输服务提供者——基本与分层服务提供者。

基本服务提供者实现传输协议的实际细节：建立连接、传输数据，以及执行流控制和错误控制。分层服务提供者仅在更高层级实现定制的通信功能，并依靠现有的底层基本提供者与远程端点进行实际的数据交换。

Winsock 2 LSP被实现为有单个导出入口点函数“WSPStartup”的WindowsDLL 。其他传输SPI函数可通过LSP的访问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上捕捉。

LSP有两种：IFS与非IFS。市场上现有的大多数LSP均是非IFS。两种LSP的区别是：非IFS的LSP修改socket句柄为一个非有效的Windows IFS句柄，从而LSP必须实现所有的Winsock 2方法。IFS LSP则是保留套接字句柄，使LSP能够只实现想要拦截的函数。

 弃用和绕过LSP 
LSP从Windows Server 2012起已被弃用。包含LSP的系统将不能通过Windows认证产品的商标检查。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等操作后自愈。

已安装的LSP可以使用XP/Vista中Windows Defender的软件资源浏览器或第三方工具查看。

 参考资料 

 Unraveling the Mysteries of Writing a Winsock 2 Layered Service Provider - Microsoft Systems Journal 
 Categorizing LSPs and Applications 

 外部链接 
 New PowerPoint Trojan installs itself as LSP 
 The "Dark Side of Winsock": PDF of a DefCon presentation dealing with the creation and exploitation of Winsock Layered Service Providers
 the "Dark Side of Winsock": Video of same presentation  -

Category:微軟API
Category:Windows通信和服务