导语:本文将讲述如何通过滥用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
滥用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功能。
Open Forward攻击
正如你所猜测的那样,可以从WAN接口调用UPnP SOAP功能,而无需任何类型的身份验证。如果你发送一个恶意的AddPortMapping请求,你可以:
· 访问NAT后面的本地计算机
· 通过路由器访问远程计算机
第一个选项最近被Akamai称为UPnProxy:EternalSilence,另一个攻击者使用此技巧访问路由器后面的Windows'SMB端口来利用臭名昭着的EternalBlue漏洞。
在我的研究中(受赛门铁克发现的启发)我对第二种选择更感兴趣。那么它是怎样工作的呢?
Open Forwarding攻击流程
攻击实际上非常简单,你只需要问询——就像你在局域网一样,路由器用适当的参数添加端口映射即可。你可以指定任何一个公网IP地址,而不是将流量重定向到本地客户端。在大多数实现中,UPnP守护程序只会使用你指定的参数生成一个iptables进程…而不进行任何检查!
这样,你就可以将路由器用作匿名代理并伪装你的IP地址。这就是Inception间谍组织使用3层路由器进行攻击的过程。
Inception Framework:将它们放在一起
Inception Framework发起的完整攻击流程
碰撞
根据Shodan的查询结果,有两百多万(截至2018年11月)支持UPnP的设备会响应M-SEARCH发现请求……这个数量是巨大的,但到目前仍然存在于网络上。
通过主动扫描,我发现暴露在网络上UPnP设备中有13%很容易受到前面提到的Open Forward攻击。这是分布在80个国家的约有29万个易受攻击的设备。
易受“Open Forwarding”攻击的UPnP设备分布热力图
在80个国家或地区中有290,000个易受攻的设备
受影响最大的四个运营商是:
· FPT Telecom(越南)
· 韩国电信
· 中华电信(台湾)
· 中国电信上海网络
东南亚
欧洲也受到了影响
结论
本文所阐述的攻击技术展示了一大批潜在的受害者和可能存在的网络罪犯代理。实际上,有漏洞的节点的数量是Tor中继的44倍。并且这种利用这个漏洞不会产生额外的痕迹:因为利用这个漏洞不需要植入其他软件,并且通常很难获得这些设备的日志用于安全分析(大多数是专有的ISP设备)。
攻击者使用这种攻击技术来“隐藏”自己的另一个优势在于,大多数IP地址都是住宅IP,即没有被列入黑名单或被作为代理地址(例如VPN或Tor中继)。但是有几个缺点:这种攻击技术的网络传输非常慢(由于需要大量的SOAP开销),并且流量不会加密传输。
许多不同的APT攻击者正在使用UPnP“Open Forward”攻击技术……而且在我发表本文时它仍然在被利用。
请记住,这只是一个UPnP服务中的一个功能。我会让我的读者思考可能以这种方式滥用的其他潜在服务😏