利用UPnP协议在物联网设备的迷宫中隐藏自己

栏目: 服务器 · 发布时间: 7年前

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 规范 1.1 和 2.0 中 都记录了所有内容。

滥用 UPnP

滥用UPnP的方法不止一种,在本文中我甚至不会讨论影响UPnP实现的 众多CVE 漏洞。在过去十年中,安全研究人员已经 报告了UPnP设计中的若干个漏洞 ,其中大多数 漏洞 都是由于服务配置错误或实现不当造成的。我在本文中将阐述其中的一个漏洞:Open Forward攻击,稍后会有更多内容。

通常 UPnP 应该在本地网络上工作,如下图所示:

利用UPnP协议在物联网设备的迷宫中隐藏自己

用于 P2P 使用的典型 UPnP 对话

SSDP 在 1900 端口上使用 UDP 协议,它会将 M-SEARCH HTTPU 数据包(是的,它是基于 UDP 的 HTTP )发送到 239.255.255.250 这个 IPv4 地址(来自 RFC2365 的 本地范围组播地址)或 ff0X::c 这个 IPv6 地址。

利用UPnP协议在物联网设备的迷宫中隐藏自己

IGD 发现 M-SEARCH 包( 1900 / udp )

现在,如果你通过网络向一些易受攻击的 UPnP 设备发送 M-SEARCH 数据包,这些设备实际上会响应你的请求,即使该协议本应该是仅本地使用的网络协议!这是迈向目标的第一步:使用路由器作为代理。

利用UPnP协议在物联网设备的迷宫中隐藏自己

远程 UPnP 是(不是)一个特殊的功能

这是此处的第一个漏洞,发现服务不应该在 WAN 接口上监听。现在有什么能让攻击者可以发送的 M-SEARCH 数据包呢?

示例配置错误的设备实际上会回复响应:

利用UPnP协议在物联网设备的迷宫中隐藏自己

SSDP 通过网络传输,这一点是完全没问题的

M-SEARCH 服务器的响应中包含 了一个 LocationHTTP 标头, 它指向了 XML 格式的设备描述。

利用UPnP协议在物联网设备的迷宫中隐藏自己

在这里,你可以注意到 URL 中包含了私有 IP 地址,但是你可以再次(在大多数情况下)通过其公共 IP 地址上的 WAN 访问到这台 Web 服务器。你将获得 SCPD (服务控制协议文档),这是一个 XML 文档,它定义了服务实现的动作和状态变量集。也就是 UPnP 标准 ……

利用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”设备后面的端口的点对点通信或游戏非常 有用。

利用UPnP协议在物联网设备的迷宫中隐藏自己

引用自 WANIPConnection  规范

现在让我们滥用这个 UPnP 功能。

Open Forward 攻击

正如你所猜测的那样,可以从 WAN 接口调用 UPnP SOAP 功能,而无需任何类型的身份验证。如果你发送一个恶意的 AddPortMapping 请求,你可以:

· 访问 NAT 后面的本地计算机

· 通过路由器访问远程计算机

第一个选项最近被 Akamai 称为 UPnProxy : EternalSilence ,另一个攻击者使用此技巧访问路由器后面的 Windows'SMB 端口来利用臭名昭着的 EternalBlue 漏洞。

在我的研究中(受赛门铁克发现的启发)我对第二种选择更感兴趣。那么它是怎样工作的呢?

利用UPnP协议在物联网设备的迷宫中隐藏自己

Open Forwarding 攻击流程

攻击实际上非常简单,你只需要问询 —— 就像你在局域网一样 , 路由器用适当的参数添加端口映射即可。你可以指定任何一个公网 IP 地址,而不是将流量重定向到本地客户端。在大多数实现中, UPnP 守护程序只会使用你指定的参数生成一个 iptables 进程 … 而不进行任何检查!

这样,你就可以将路由器用作匿名代理并伪装你的 IP 地址。这就是 Inception 间谍组织使用 3 层路由器进行攻击的过程。

Inception Framework :将它们放在一起

利用UPnP协议在物联网设备的迷宫中隐藏自己

Inception Framework 发起的完整攻击流程

碰撞

根据 Shodan 的查询结果 , 有两百多万(截至2018年11月)支持UPnP的设备会响应M-SEARCH发现请求……这个数量是巨大的,但到目前仍然存在于网络上。

通过主动扫描,我发现暴露在网络上UPnP设备中有13%很容易受到前面提到的Open Forward攻击。这是分布在80个国家的约有29万个易受攻击的设备。

利用UPnP协议在物联网设备的迷宫中隐藏自己

易受 “Open Forwarding” 攻击的 UPnP 设备分布热力图

在 80个国家或地区中有290,000个易受攻的设备

受影响最大的四个运营商是:

· FPT Telecom (越南)

· 韩国电信

· 中华电信(台湾)

· 中国电信上海网络

利用UPnP协议在物联网设备的迷宫中隐藏自己

东南亚

利用UPnP协议在物联网设备的迷宫中隐藏自己

欧洲也受到了影响

结论

本文所阐述的攻击技术展示了一大批潜在的受害者和可能存在的网络罪犯代理。 实际上,有漏洞的节点的数量是Tor中继的44倍。并且这种利用这个漏洞不会产生额外的痕迹:因为利用这个漏洞不需要植入其他软件,并且通常很难获得这些设备的日志用于安全分析(大多数是专有的ISP设备)。

攻击者使用这种攻击技术来 “ 隐藏 ” 自己的另一个优势在于,大多数 IP 地址都是住宅 IP ,即没有被列入黑名单或被作为代理地址(例如 VPN 或 Tor 中继)。但是有几个缺点:这种攻击技术的网络传输非常慢(由于需要大量的 SOAP 开销),并且流量不会加密传输。

许多不同的 APT 攻击者正在使用 UPnP“Open Forward” 攻击技术 …… 而且在我发表本文时它仍然在被利用。

请记住,这只是一个 UPnP 服务中的一个功能。我会让我的读者思考可能以这种方式滥用的其他潜在服务 :smirk:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

C语言的科学和艺术

C语言的科学和艺术

罗伯茨 / 翁惠玉 / 机械工业出版社 / 2005-3 / 55.00元

《C语言的科学和艺术》是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。《C语言的科学和艺术》以介绍ANSI C为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发等内容。《C语言的科学和艺术》采用了库函数的方法,强调抽象的原则,详细阐述了库和模块化开发。此外,《C语言的科学和艺术》还利用大量实例讲述解决问题的全过程,对开发过程中常见......一起来看看 《C语言的科学和艺术》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具