沒有情情愛愛,只有技術相伴,給大家分享一下UPnP和DLNA協議;
UPnP的概念通用即插即用(英語:Universal Plug and Play,簡稱UPnP)是由“通用即插即用論壇”(UPnP? Forum)推廣的一套網絡協議。該協議的目標是使家庭網絡(數據共享、通信和娛樂)和公司網絡中的各種設備能夠相互無縫連接,并簡化相關網絡的實現。UPnP通過定義和發布基于開放、因特網通訊網協議標準的UPnP設備控制協議來實現這一目標。 UPnP這個概念是從即插即用(Plug-and-play)派生而來的,即插即用是一種熱拔插技術。
通俗點講目前一般都用在路由器上面,如下截圖所示;
關于UPnP協議棧;
關于UPnP工作流程1.尋址DHCP協議;
2.發現使用的是SSDP協議,這是一個工作在UDP上的HTTP協議;
3.描述通過掃描端口,遍歷路徑,可以發現路由器的UPnP服務接口;當然每家廠商有自己的固定路徑后綴,也可以網上搜索;
使用SOAP協議來完成控制;
5.事件通過返回xml消息,使用GENA格式;
UPnP相關測試miranda了解到原來kali是自帶這個工具,但是新版本刪掉了,找到了github的源文件,可以使用;https://github.com/0x90/miranda-upnp;
沒太清楚為什么新版kali刪掉這個工具,但是了解下來,UPnP基本上路由器都會默認開啟,雖然UPnP協議沒有任何身份驗證機制,但是實際利用場景還是比較弱,如果路由器是公網ip還說可以建一條出網的通道,一般來說路由器是局域網ip,然后能開啟的場景下也就已經進入內網了,其他出網的辦法也很多,UPnP協議也只是建一條轉發路由,前提還得是轉發的ip存在問題;
掃描模式:
pcap:被動發現設備通過嗅探設備接入網絡時發送的NOTIFY消息獲取設備信息。msearch:通過主動發送M-serach消息來發現設備。(一般使用msearch比較快) 測試下來,我是msearch發現不了,但是用msearch掃描了一段時間后,切pcap就可以立馬出現結果;信息獲取發現設備后可用host命令來查看詳細信息。
host list:查看發現的設備列表;host get:獲取信息(查詢summary之前需執行);host info:顯示查詢到的信息(n為設備在列表中的編號);host summary 0 :顯示xml文件的摘要信息;利用host info 0 deviceList //設備列表,或者說設備信息host info 0 deviceList WANConnectionDevice services //設備服務列表
host info 0 deviceList WANConnectionDevice services WANIPConnection serviceStateVariables //服務狀態列表host info 0 deviceList WANConnectionDevice services WANIPConnection actions //服務控制列表,操作功能
host send 0 WANConnectionDevice WANIPConnection AddPortMapping //規則配置
登陸后臺可以看到規則已配置,并且生效了;
其他功能解析,這部分其實有些是廠商自定義的,有些是默認自帶的功能;
AddPortMapping : {}GetNATRSIPStatus : {}GetGenericPortMappingEntry : {}GetSpecificPortMappingEntry : {}ForceTermination : {}GetExternalIPAddress : {}GetConnectionTypeInfo : {}GetStatusInfo : {}SetConnectionType : {}DeletePortMapping : {}RequestConnection : {}
小技巧:由于發現upnp服務比較困難,掉線或者退出進程后,需要重新發現,又只能等;找了一下,官方提供了存儲和恢復的功能;
upnp> save info 0 wrt54gHost info for "192.168.1.1:2869" saved to "info_wrt54g.mir"upnp> save data wrt54gHost data saved to "struct_wrt54g.mir"upnp> load struct_wrt54g.mir Host data restored:[0] 192.168.1.1:2869DLNA簡要概述
數字生活網絡聯盟(英語:Digital Living Network Alliance,簡稱:DLNA)是一個由消費性電子、移動電話以及電腦廠商組成的聯盟組織。該組織的目標在于創建一套可以使得各廠商的產品互相連接,互相適應的工業標準,從而為消費者實現數字化生活。聯盟成員包括飛利浦、三星電子、松下、惠普、索尼、微軟、英特爾和諾基亞在內的眾多業界領袖。
其實DLNA應該是一系列協議棧的組合統稱,并不是一個單獨的協議;
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服務一般用于投屏,這個就是直接可以利用的;然后還有特殊場景,視頻流拉取,操作指令控制等。
留個坑,miranda源代碼解析;
參考:
https://blog.csdn.net/braddoris/article/details/41646789
https://breezetemple.github.io/2019/02/25/dlan-introduction/
https://github.com/CharonChui/AndroidNote/blob/master/VideoDevelopment/DLNA%E7%AE%80%E4%BB%8B.md
X 關閉
X 關閉