您的位置:首页 > 其它

即插即用UPnP分析

2013-03-12 00:49 232 查看

UPnP简述:

UPnP是通用即插即用(Universal Plug and Play)的缩写,它主要用于实现设备的智能互联互通。使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用C,C++,JAVA和VB等开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境。
随着越来越多的设备联入网络,对于共享设备以及共享设备提供的资源和服务的需求也越来越强烈,透明的访问各种联入网络的资源也成为了一种非常复杂的任务。因此,在1999年,Microsoft公司开始大张旗鼓地宣传下一代即插即用技术--通用即插即用( Universal Plug and Play,简称UPnP)。UPnP实际上是扩展了传统单机的设备和计算机系统的概念,在"零配置"的前提下提供了连网设备之间的发现、接口声明和其他信息的交换等互动操作功能。Microsoft公司称"UPnP将延伸到家庭中的每一个设备,它会成为个人电脑、应用程序、智能设备集成工作所必需的框架、协议和接口标准"。
UPnP是实现智能设备端到端网络连接的结构。它也是一种架构在TCP/IP和HTTP技术之上的,分布式、开放的网络结构,以使得在联网的设备间传递控制和数据。UPnP 技术实现了
控制点、 设备和 服务之间通讯的支持,并且设备和相关服务的也使用XML定义并且公布出来。使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。

SSDP简述:

简单服务发现协议(SSDP,Simple
Service Discovery Protocol)是一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一。
简单服务发现协议提供了在局部网络里面发现设备的机制。控制点(也就是接受服务的客户端)可以通过使用简单服务发现协议,根据自己的需要查询在自己所在的局部网络里面提供特定服务的设备。设备(也就是提供服务的服务器端)也可以通过使用简单服务发现协议,向自己所在的局部网络里面的控制点声明它的存在。
简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。
按照协议的规定,当一个控制点(客户端)接入网络的时候,它可以向一个特定的多播地址的SSDP端口使用M-SEARCH方法发送“ssdp:discover”消息。当设备监听到这个保留的多播地址上由控制点发送的消息的时候,设备会分析控制点请求的服务,如果自身提供了控制点请求的服务,设备将通过单播的方式直接响应控制点的请求。

UPnP工作过程:

UPnP在控制指针和被控制设备之间提供通讯功能。而网络介质、TCP/IP协议、HTTP仅提供基本的连接和IP地址分配。整个工作过程需要处理六个方面的内容,即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。

设备开启UPnP时:


设备关闭UPnP时:


测试设计:



拓扑说明:
PC1:开启了UPnP Host和SSDP服务,并开启了UDP的1900端口;
PC2:安装了ScanNowUPnP.exe工具;
TP-Link:开启了UPnP服务。



测试过程:
1、 PC2使用ScanNowUPnP.exe工具对TP-Link进行检测,通过抓包进行观察,TP-Link路由器接收到SSDP包,并响应SSDP包,返回相对应的设备信息。抓包截图:



2、 PC2使用ScanNowUPnP.exe工具对PC1进行检测,通过抓包进行观察,PC1接收到SSDP包,但不响应该SSDP包。抓包截图如下:



因为UPnP设备会以组播形式响应SSDP包,再通过查看组播包情况并未发现PC1(192.168.0.43)响应SSDP包。



结论:

开启了UDP1900端口Windows是UPnP的控制点,并不提供UPnP服务,因此不响应SSDP包。而且“UPnP多个缓冲区溢出漏洞”的利用是通过构造特殊的或超长的SSDP包来触发,因此可得:作为UPnP控制点的Windows,即使开了UDP1900端口也不受该漏洞影响。

PS:在测试过程中发现设备有时候不响应NowScanUPnP.exe的SSDP包,用Metasploit却不会。查看了包内容都是Discover,但是包大小不同,不知道是否受这影响,哪位牛人可以告知一下~~~本文出自 “Terrying技术空间” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: