电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 505 人浏览分享

UPnP和DLNA协议

[复制链接]
505 0
前言

没有情情爱爱,只有技术相伴,给大家分享一下UPnP和DLNA协议;

UPnP的概念

通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套
网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接 并简化相关
网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。 UPnP这个
概念是从即插即用(Plug-and-play)派生而来的,即插即用是一种热拔插技术。

通俗点讲目前一般都用在路由器上面,如下截图所示;

QQ截图20220505113241.png

关于UPnP协议栈

QQ截图20220505113622.png

关于UPnP工作流程

QQ截图20220505113727.png

1.寻址

DHCP协议

2.发现

使用的是SSDP协议,这是一个工作在UDP上的HTTP协议;

3.描述

QQ截图20220505113808.png

通过扫描端口,遍历路径,可以发现路由器的UPnP服务接口;当然每家厂商有自己的固定路径后缀 也可以网上搜索;

699.png

698.png

  1. <?xml version="1.0"?>
  2. <root xmlns="urn:schemas-upnp-org:device-1-0">
  3. <specVersion>
  4. <major>1</major>
  5. <minor>0</minor>
  6. </specVersion>
  7. <device>
  8. <deviceType>urn:schemas-upnp-org:device:InternetGatewayDevice:1</deviceType> //设备类型,格式为:
  9. “urn:schemas-upnp-org:device:deviceType:v”,这里deviceType和v是由设备定义的。
  10. <presentationURL>http://192.168.0.1:80</presentationURL>
  11. <friendlyName>Wireless N Router MW313R</friendlyName> //一个更加友好的设备名
  12. <manufacturer>MERCURY</manufacturer> //制造商
  13. <manufacturerURL>http://www.mercurycom.com.cn</manufacturerURL>
  14. <modelDescription>MW313R 5.0</modelDescription>
  15. <modelName>MW313R</modelName>
  16. <modelNumber>5.0</modelNumber>
  17. <UDN>uuid:upnp-InternetGatewayDevice-4D5A5C269D27</UDN> //设备的UUID
  18. <UPC>123456789001</UPC>
  19. <serviceList>
  20. <service>
  21. <serviceType>urn:schemas-upnp-org:service:Layer3Forwarding:1</serviceType>
  22. <serviceId>urn:upnp-org:serviceId:L3Forwarding1</serviceId>
  23. <controlURL>/l3f</controlURL> //用于控制的URL
  24. <eventSubURL>/l3f</eventSubURL> //用于订阅事件的URL
  25. <SCPDURL>/l3f.xml</SCPDURL> //服务描述的URL
  26. </service>
  27. </serviceList>
  28. <deviceList>
  29. <device>
  30. <deviceType>urn:schemas-upnp-org:device:WANDevice:1</deviceType>
  31. <friendlyName>WAN Device</friendlyName>
  32. <manufacturer>MERCURY</manufacturer>
  33. <manufacturerURL>http://www.mercurycom.com.cn</manufacturerURL>
  34. <modelDescription>WAN Device</modelDescription>
  35. <modelName>WAN Device</modelName>
  36. <modelNumber>1.0</modelNumber>
  37. <modelURL></modelURL>
  38. <serialNumber>12345678900001</serialNumber>
  39. <UDN>uuid:upnp-WANDevice-4D5A5C269D27</UDN>
  40. <UPC>123456789001</UPC>
  41. <serviceList>
  42. <service>
  43. <serviceType>urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1</serviceType>
  44. <serviceId>urn:upnp-org:serviceId:WANCommonInterfaceConfig</serviceId>
  45. <controlURL>/ifc</controlURL>
  46. <eventSubURL>/ifc</eventSubURL>
  47. <SCPDURL>/ifc.xml</SCPDURL>
  48. </service>
  49. </serviceList>
  50. <deviceList>
  51. <device>
  52. <deviceType>urn:schemas-upnp-org:device:WANConnectionDevice:1</deviceType>
  53. <friendlyName>WAN Connection Device</friendlyName>
  54. <manufacturer>MERCURY</manufacturer>
  55. <manufacturerURL>http://www.mercurycom.com.cn</manufacturerURL>
  56. <modelDescription>WAN Connection Device</modelDescription>
  57. <modelName>WAN Connection Device</modelName>
  58. <modelNumber>1</modelNumber>
  59. <modelURL></modelURL>
  60. <serialNumber>12345678900001</serialNumber>
  61. <UDN>uuid:upnp-WANConnectionDevice-4D5A5C269D27</UDN>
  62. <UPC>123456789001</UPC>
  63. <serviceList>
  64. <service>
  65. <serviceType>urn:schemas-upnp-org:service:WANIPConnection:1</serviceType>
  66. <serviceId>urn:upnp-org:serviceId:WANIPConnection</serviceId>
  67. <controlURL>/ipc</controlURL>
  68. <eventSubURL>/ipc</eventSubURL>
  69. <SCPDURL>/ipc.xml</SCPDURL>
  70. </service>
  71. </serviceList>
  72. </device>
  73. </deviceList>
  74. </device>
  75. </deviceList>
  76. </device>
  77. </root>
复制代码

4.控制

使用SOAP协议来完成控制;

5.事件

通过返回xml消息,使用GENA格式;

UPnP相关测试

miranda

了解到原来kali是自带这个工具,但是新版本删掉了,找到了github的源文件
可以使用;https://github.com/0x90/miranda-upnp;

没太清楚为什么新版kali删掉这个工具,但是了解下来,UPnP基本上路由器都会默认开启,虽然UPnP协议没有
任何身份验证机制,但是实际利用场景还是比较弱,如果路由器是公网ip还说可以建一条出网的通道一般来说路
由器是局域网ip,然后能开启的场景下也就已经进入内网了,其他出网的办法也很多,UPnP协议也只是建一条
转发路由,前提还得是转发的ip存在问题;

697.png

696.png

扫描模式:

pcap:被动发现设备通过嗅探设备接入网络时发送的NOTIFY消息获取设备信息。
msearch:通过主动发送M-serach消息来发现设备。(一般使用msearch比较快) 测试下来我是msearch
发现不了,但是用msearch扫描了一段时间后,切pcap就可以立马出现结果;

299.png

信息获取

发现设备后可用host命令来查看详细信息。

host list:查看发现的设备列表
host get<n>:获取信息(查询summary之前需执行)
host info<n>:显示查询到的信息(n为设备在列表中的编号)
host summary 0 :显示xml文件的摘要信息

298.png

266.png

利用

host info 0 deviceList //设备列表,或者说设备信息

host info 0 deviceList WANConnectionDevice services //设备服务列表

219.png

host info 0 deviceList WANConnectionDevice services WANIPConnec
tion serviceStateVariables //服务状态列表
host info 0 deviceList WANConnectionDevice services WANIPConn
ection actions //服务控制列表,操作功能

218.png

host send 0 WANConnectionDevice WANIPConnection AddPortMapping //规则配置

216.png

登陆后台可以看到规则已配置,并且生效了;

118.png

其他功能解析,这部分其实有些是厂商自定义的,有些是默认自带的功能;

AddPortMapping : {}
GetNATRSIPStatus : {}
GetGenericPortMappingEntry : {}
GetSpecificPortMappingEntry : {}
ForceTermination : {}
GetExternalIPAddress : {}
GetConnectionTypeInfo : {}
GetStatusInfo : {}
SetConnectionType : {}
DeletePortMapping : {}
RequestConnection : {}

小技巧:由于发现upnp服务比较困难,掉线或者退出进程后,需要重新发现,又只能等;
找了一下,官方提供了存储和恢复的功能;

upnp> save info 0 wrt54g
Host info for '192.168.1.1:2869' saved to 'info_wrt54g.mir'

upnp> save data wrt54g
Host data saved to 'struct_wrt54g.mir'

upnp> load struct_wrt54g.mir
Host data restored:
[0] 192.168.1.1:2869

DLNA简要概述

数字生活网络联盟(英语:Digital Living Network Alliance,简称:DLNA)是一个由消费性电子、移动电话以及电脑
厂商组成的联盟组织。该组织的目标在于创建一套可以使得各厂商的产品互相连接,互相适应的工业标准,从而为消费
者实现数字化生活。联盟成员包括飞利浦、三星电子、松下、惠普、索尼、微软、英特尔和诺基亚在内的众多业界领袖。

其实DLNA应该是一系列协议栈的组合统称,并不是一个单独的协议;

117.png

NetWorking Connectivity 网络互联方式:802.3 以太网,802.11WiFi,802.15 蓝牙
NetWorking Stack 网络协议栈:IPv4、IPv6
Device Discovery&Control 设备发现和控制:UPnP,具体参考UPnP的相关文档
Media Management媒体管理:识别、管理、分发、记录;
Media Transport 媒体传输:HTTP
Media Formats媒体格式:各种音频图片格式:avi、rmvb、mkv。。。
Remote UI 远程用户接口:接口;
可以看到风险点主要在3、5、7, 3的分析还是参考 UPnP部分章节,5、7也就是常规的http服务由于不管是
DLNA的设计还是UPnP原协议的设计均不存在认证授权这一环节,主要是服务发现,以及请求构造;只要进
入局域网能够连接服务,均可以任意调用服务;

由于手上没有DLNA服务的设备,可以参考: https://breezetemple.github.io/2019/02/25/dlan-introduction/

从文章中可以发现 不管是DLNA还是UPnP,都是通过soap来完成控制调用,格式也都是xml; 但是miranda-upnp
是针对upnp的 不知道是否也能发现基于UPnP的DLNA服务,即使能发现估计后续的服务发现需要调整源码的xml解析
具体参考源代码解析。

总结

不管是UPnP还是DLNA都是不存在验证授权机制,也就是说只要进入局域网就可以任意调用,如果只是UPnP一般用于
路由器上路由配置,链路转发,然后服务一般默认开启,这个利用场景相对风险较低一些,因为需要在其他设备存在问
题且路由器为公网ip的情况,才能实现公网直接访问的利用场景,其他场景的利用都是没有必要使用到这个场景的
也可能是我没有想到;DLNA服务一般用于投屏,这个就是直接可以利用的;然后还有特殊场景
视频流拉取,操作指令控制等。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.