利用UPnP协议在物联网设备的迷宫中隐藏自己
Inception Framework间谍组织
在2018年3月,赛门铁克报告了关于滥用易受攻击的UPnP服务来隐藏攻击活动的Inception Framework 间谍组织。 Inception APT是一个来自不明来源的网络间谍组织,自2014年以来该间谍组织一直使用本文提到的技术发动隐身攻击。在这个特殊的案例中,赛门铁克还报告说,这种攻击技术不需要在路由器上注入自定义的恶意软件……OK,现在让我们深入了解一下。
什么是UPnP?
UPnP代表通用即插即用,基本上来说只是一组网络协议,允许设备在局域网中相互发现并使用一些网络功能(如数据共享或娱乐)而无需任何配置(因此才叫作“即插即用”) 。这是一个非常古老的协议,设计于90年代后期,并在2000年初完成。实施最多的协议版本可能是2008年发布的1.1和2015年发布的最新版本(UPnP Device Architecture 2.0)。
根据UPnP规范,它有6层协议,其中有三个协议对于研究本文提及的攻击技术很重要:
· 发现:也称为简单服务发现协议(SSDP),用于启用UPnP的设备发现彼此;
· 描述:设备描述通过远程URL以XML表示,这是设备描述其功能的方式;
· 控制:控制消息也使用SOAP协议以XML表示,它看起来有点像RPC(但没有任何身份验证);
这是一个了解这些协议层如何组合在一起的图表:
UPnP协议层(引用地址)
UPnP规范1.1和2.0中都记录了所有内容。
滥用UPnP
滥用UPnP的方法不止一种,在本文中我甚至不会讨论影响UPnP实现的众多CVE漏洞。在过去十年中,安全研究人员已经报告了UPnP设计中的若干个漏洞,其中大多数漏洞都是由于服务配置错误或实现不当造成的。我在本文中将阐述其中的一个漏洞:Open Forward攻击,稍后会有更多内容。
通常UPnP应该在本地网络上工作,如下图所示:
用于P2P使用的典型UPnP对话
SSDP在1900端口上使用UDP协议,它会将M-SEARCHHTTPU数据包(是的,它是基于UDP的HTTP)发送到239.255.255.250这个IPv4地址(来自RFC2365的本地范围组播地址)或ff0X::c这个IPv6地址。
IGD发现M-SEARCH包(1900 / udp)
现在,如果你通过网络向一些易受攻击的UPnP设备发送M-SEARCH数据包,这些设备实际上会响应你的请求,即使该协议本应该是仅本地使用的网络协议!这是迈向目标的第一步:使用路由器作为代理。
远程UPnP是(不是)一个特殊的功能
这是此处的第一个漏洞,发现服务不应该在WAN接口上监听。现在有什么能让攻击者可以发送的M-SEARCH数据包呢?
示例配置错误的设备实际上会回复响应:
SSDP通过网络传输,这一点是完全没问题的
M-SEARCH服务器的响应中包含了一个LocationHTTP标头,它指向了XML格式的设备描述。
在这里,你可以注意到URL中包含了私有IP地址,但是你可以再次(在大多数情况下)通过其公共IP地址上的WAN访问到这台Web服务器。你将获得SCPD(服务控制协议文档),这是一个XML文档,它定义了服务实现的动作和状态变量集。也就是UPnP标准……
UPnP的SCPD XML
这基本上是你可以找到该设备可以提供哪些功能的地方。XML还将显示每个服务的ControlURL变量,这是与该特定服务进行通信的SOAP端点(本质上来说只要你用GET或POST请求这个URL就可以触发操作)。
我们要研究的最有趣的服务之一是WANIPConnection,这是一个被滥用的服务。也是后面通过UPnP服务隐藏自己的关键点。
WANIPConnection服务
根据UPnP标准:
此服务类型使UPnP控制点能够配置和控制符合UPnP的InternetGatewayDevice的WAN接口上的IP连接。
可以支持IP连接的任何类型的WAN接口(例如,DSL或电缆)都可以使用此服务。
[…]
为WANConnectionDevice上的每个实际Internet连接实例激活WANIPConnection服务的实例(请参阅状态变量表)。
WANIPConnection服务为LAN上的联网客户端提供了与ISP的IP级连接。
更简单的说,这是UPnP标准的NAT遍历工具箱。在文档中,你将找到一个名为的AddPortMapping()函数,用于请求路由器(IGD)将TCP/IP流量重定向到LAN中的特定主机或端口上。这对于需要打开一个“NAT”设备后面的端口的点对点通信或游戏非常有用。
引用自WANIPConnection 规范
现在让我们滥用这个UPnP功能。
Inception Framework间谍组织
在2018年3月,赛门铁克报告了关于滥用易受攻击的UPnP服务来隐藏攻击活动的Inception Framework 间谍组织。 Inception APT是一个来自不明来源的网络间谍组织,自2014年以来该间谍组织一直使用本文提到的技术发动隐身攻击。在这个特殊的案例中,赛门铁克还报告说,这种攻击技术不需要在路由器上注入自定义的恶意软件……OK,现在让我们深入了解一下。
什么是UPnP?
UPnP代表通用即插即用,基本上来说只是一组网络协议,允许设备在局域网中相互发现并使用一些网络功能(如数据共享或娱乐)而无需任何配置(因此才叫作“即插即用”) 。这是一个非常古老的协议,设计于90年代后期,并在2000年初完成。实施最多的协议版本可能是2008年发布的1.1和2015年发布的最新版本(UPnP Device Architecture 2.0)。
根据UPnP规范,它有6层协议,其中有三个协议对于研究本文提及的攻击技术很重要:
· 发现:也称为简单服务发现协议(SSDP),用于启用UPnP的设备发现彼此;
· 描述:设备描述通过远程URL以XML表示,这是设备描述其功能的方式;
· 控制:控制消息也使用SOAP协议以XML表示,它看起来有点像RPC(但没有任何身份验证); 无奈人生安全网
这是一个了解这些协议层如何组合在一起的图表:
UPnP协议层(引用地址)
UPnP规范1.1和2.0中都记录了所有内容。
滥用UPnP
滥用UPnP的方法不止一种,在本文中我甚至不会讨论影响UPnP实现的众多CVE漏洞。在过去十年中,安全研究人员已经报告了UPnP设计中的若干个漏洞,其中大多数漏洞都是由于服务配置错误或实现不当造成的。我在本文中将阐述其中的一个漏洞:Open Forward攻击,稍后会有更多内容。
通常UPnP应该在本地网络上工作,如下图所示:
用于P2P使用的典型UPnP对话
SSDP在1900端口上使用UDP协议,它会将M-SEARCHHTTPU数据包(是的,它是基于UDP的HTTP)发送到239.255.255.250这个IPv4地址(来自RFC2365的本地范围组播地址)或ff0X::c这个IPv6地址。
www.wnhack.com
IGD发现M-SEARCH包(1900 / udp)
现在,如果你通过网络向一些易受攻击的UPnP设备发送M-SEARCH数据包,这些设备实际上会响应你的请求,即使该协议本应该是仅本地使用的网络协议!这是迈向目标的第一步:使用路由器作为代理。
远程UPnP是(不是)一个特殊的功能
这是此处的第一个漏洞,发现服务不应该在WAN接口上监听。现在有什么能让攻击者可以发送的M-SEARCH数据包呢?
示例配置错误的设备实际上会回复响应:
SSDP通过网络传输,这一点是完全没问题的
M-SEARCH服务器的响应中包含了一个LocationHTTP标头,它指向了XML格式的设备描述。
无奈人生安全网
在这里,你可以注意到URL中包含了私有IP地址,但是你可以再次(在大多数情况下)通过其公共IP地址上的WAN访问到这台Web服务器。你将获得SCPD(服务控制协议文档),这是一个XML文档,它定义了服务实现的动作和状态变量集。也就是UPnP标准……
UPnP的SCPD XML
这基本上是你可以找到该设备可以提供哪些功能的地方。XML还将显示每个服务的ControlURL变量,这是与该特定服务进行通信的SOAP端点(本质上来说只要你用GET或POST请求这个URL就可以触发操作)。
我们要研究的最有趣的服务之一是WANIPConnection,这是一个被滥用的服务。也是后面通过UPnP服务隐藏自己的关键点。
WANIPConnection服务
根据UPnP标准:
此服务类型使UPnP控制点能够配置和控制符合UPnP的InternetGatewayDevice的WAN接口上的IP连接。
可以支持IP连接的任何类型的WAN接口(例如,DSL或电缆)都可以使用此服务。 内容来自无奈安全网
[…]
为WANConnectionDevice上的每个实际Internet连接实例激活WANIPConnection服务的实例(请参阅状态变量表)。
WANIPConnection服务为LAN上的联网客户端提供了与ISP的IP级连接。
更简单的说,这是UPnP标准的NAT遍历工具箱。在文档中,你将找到一个名为的AddPortMapping()函数,用于请求路由器(IGD)将TCP/IP流量重定向到LAN中的特定主机或端口上。这对于需要打开一个“NAT”设备后面的端口的点对点通信或游戏非常有用。
引用自WANIPConnection 规范
现在让我们滥用这个UPnP功能。