SSDP协议
SSDP (Simple Service Discovery Protocol,简单服务发现协议)是一种用于小型网络(包括家庭网络)的网络协议,用于宣传和发现主要由通用即插即用(Universal Plug-and-Play, UPnP)架构支持的网络服务。简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。它使用UDP数据报交换消息。
1. SSDP功能
SSDP是即插即用架构的骨干。它允许轻松地连接工作在同一个小网络或连接到相同的Wi-Fi点的家庭设备,这些设备可能包括智能手机、打印机和多媒体播放器、智能电视、媒体控制台、扬声器、摄像机等。要使SSDP工作,这些设备必须支持即插即用功能。在支持SSDP的设备和PC上,可以开启、关闭和暂停该特性。当启用SSDP时,设备就会与任何其他即插即用客户端通信关于它们自身和它们提供的服务的信息。使用SSDP,连接到网络的计算机也提供关于可用服务的信息。使用SSDP,设备和PC不仅可以相互了解,还可以以某种方式进行交互:在另一台设备上交换数据、启动功能和服务等等。
2. 与SSDP相关的威胁
首先,SSDP协议本身并不提供加密(它不能阻止设备交换加密数据),其次,在许多设备用于家庭、在小办公室环境中,SSDP在缺省情况下是启用的,造成未经授权访问的风险。因此,这个功能应该保持禁用,只有在真正需要它的时候才启用它,并确保在每个当前没有使用SSDP的设备上都禁用它。可以在Windows PC上使用services.msc命令检测SSDP发现服务是否开启。关于SSDP的一种威胁可能是利用SSDP特性用于DDoS攻击如SSDP放大攻击的实现。
网络层(L3)攻击利用了其中嵌入SSDP协议的漏洞,这可能是出于其开发人员希望尽可能简化小型网络中的设备交互的初衷。不幸的是,这种简单性是以牺牲安全性为代价的。在最一般的情况下,一个新设备的网络接入是这样的。为了查明网络中已经存在哪些设备,添加到其中并启用SSDP的设备使用 fan-out 或 multicasting向其他设备发送一个搜索请求到保留地址和端口(239.255.255.250:1900)。在请求中,设备指定一个与其类型相对应的模板或目标。为了响应这个请求,网络上每一个支持SSDP的设备都会发送一个带有自身信息的UDP消息到发送这个请求的源IP地址和端口。
技巧在于,在SSDP协议中,不会检查消息发送方的位置,因此设备不仅可以响应来自邻居的请求,还可以响应来自网络外部的请求。防火墙可以并且应该对此类请求进行保护。但是,首先网络所有者并不总是安装防火墙,其次在已安装的防火墙中,端口1900经常保持开放。而且,由于对SSDP请求的响应可能是请求本身的几倍甚至几十倍,因此会出现放大攻击的可能:一个来自外部网络的虚假请求,包含一个IP地址作为受害者主机的反向地址,可以触发一个乘数响应,并将其发送给受害者。然后,就像在经典的DDoS场景中一样:要么受害者节点的通信通道被垃圾SSDP响应流量阻塞,要么节点本身被淹没,试图处理强大的SSDP响应流。具体如图1所示。
图1:SSDP DDoS攻击