虽然 UPnP 在将新设备添加到本地网络时无需进行大量设置,但此协议可能会给您的数据和操作带来相当大的风险。快速连接设备的能力很方便,但 UPnP 的速度往往是以网络安全为代价的。本文介绍了 UPnP(通用即插即用)以及与此网络协议相关的安全风险。继续阅读以了解此协议的工作原理,并了解黑客如何利用 UPnP 绕过防火墙并创建进入目标网络的入口点。
什么是 UPnP?
UPnP(通用即插即用)是一种网络协议,它使设备能够相互发现并连接,而无需手动配置或用户干预。该协议自动化了同一网络上设备之间识别和通信所需的所有步骤。
UPnP 的主要目标是提供一种将新硬件添加和连接到本地网络的自动化方式。该协议使设备能够通过以下方式加入网络:
- 设置设备的 IP 地址。
- 将设备的名称和功能广播到网络的其余部分。
- 通知新硬件有关其他连接设备的功能。
- 使网络设备能够串联通信和运行。
UPnP 用于什么?
UPnP 的一些最常见用例包括:
- 将新打印机连接到家庭中的每台 PC 和平板电脑。
- 将游戏机连接到游戏服务器以玩和流式传输在线游戏。
- 将内容从计算机流式传输到智能电视。
- 将无线扬声器连接到手机。
- 连接到家庭监控系统以在您离开时密切关注房屋。
- 从移动设备(智能照明、互联网控制的恒温器、智能锁等)连接和远程控制物联网系统。
虽然方便,但 UPnP 协议并非没有风险。如果该协议允许具有严重漏洞或恶意软件的设备加入,则熟练的黑客可以创建进入本地网络的永久入口点。这种安全风险就是为什么 UPnP 通常仅在住宅设置而不是小型企业或企业网络上启用的原因。
UPnP 如何工作?
UPnP 使应用程序和设备能够自动打开和关闭端口以连接到 LAN 网络。此过程(称为端口转发或端口映射)发生在路由器上,并且可以允许 Web 流量从外部源通过内部网络。
UPnP 通过四个标准实现自动的设备到设备端口转发:
- 互联网协议套件 (TCP/IP)。
- 超文本传输协议 (HTTP)。
- 可扩展标记语言 (XML)。
- 简单对象访问协议 ( SOAP )。
由于该协议依赖于通用网络标准,UPnP 不需要任何额外的驱动程序或技术即可工作。市场上的大多数设备都可以参与 UPnP,无论其操作系统、编程语言或制造商如何。
从用户的角度来看,UPnP 是一个简单的过程。您将新设备带回家,将其连接到网络,您的其他设备可以立即与最新的硬件进行通信。但是,该过程在后台要复杂得多,每当您设置新设备时,UPnP 都会经历六个阶段:
- 寻址。
- 发现。
- 描述。
- 控制。
- 赛事。
- 介绍。
该协议依赖于客户端-服务器模型,其中 UPnP 控制点(客户端)搜索提供服务的 UPnP 服务器(设备)。下面是对 UPnP 协议每个阶段发生的情况的详细介绍。
寻址
新设备必须具有唯一的 IP 地址才能成为网络的一部分,因此 UPnP 可以:
- 从动态主机配置协议 (DHCP) 服务器请求新设备的 IP 地址。
- 使设备能够使用称为 AutoIP 的进程自行分配 IP(如果没有 DHCP 服务器)。
如果设备在 DHCP 事务期间(例如,通过DNS 服务器或通过 DNS 转发)获得域名,则设备将在网络操作中使用该名称。
并非所有物联网设备都需要 IP 地址,例如联网咖啡壶、恒温器和灯泡。相反,这些设备通过蓝牙或射频识别 (RFID) 等技术与网络进行通信。
发现
该设备使用简单服务发现协议 (SSDP) 将其详细信息呈现给网络控制点。新设备发送 SSDP 活动消息,其中包含以下基本细节:
- 设备类型。
- 标识符。
- 指针(网络位置)。
根据 UPnP 设置,网络控制点可以主动搜索感兴趣的设备或被动收听 SSDP 消息。
描述
一旦控制点发现设备,网络必须在与新硬件交互之前了解其功能。设备发送详细描述,其中包括:
- 有关供应商的信息。
- 型号名称。
- 序列号。
- 任何服务的列表。
- 供应商特定网站的演示 URL(可选)。
设备以 XML 格式发送这些消息,网络创建一个设备描述文档,其中列出了用于控制、事件和服务描述的 URL。每个服务描述还包括服务可以响应的命令和每个操作的参数。
控制
在控制点开始与发现的设备交互之前,网络会发送消息以调用服务上的操作。这些控制消息也是 XML 格式并使用简单对象访问协议 (SOAP)。
事件通知(Eventing)
UPnP 有一个称为通用事件通知架构 (GENA) 的协议,该协议使控制点能够将自己注册为服务以获取设备状态更改的通知。
每当状态变量发生变化时,该服务都会向所有已注册的控制点发送事件通知。这些简单的事件消息采用 XML 格式,仅包含状态变量及其当前值。
介绍
如果新设备在描述阶段提供了一个演示 URL,控制点可以从这个 URL 中检索一个页面并将其加载到 Web 浏览器中。在某些情况下,用户可以通过浏览器控制设备或查看其状态。
用户可以通过演示 URL 与设备交互的程度取决于网页和设备的特定功能。
UPnP 安全吗?它有哪些安全风险?
尽管 UPnP 有很多好处,但该协议有两个主要的安全风险:
- 默认情况下,UPnP 不对设备进行身份验证,只是假设每个设备都是值得信赖的。
- UPnP 允许家庭网络之外的实体在路由器中戳洞并访问本地设备,而无需通过防火墙。
由于 UPnP 使流量能够绕过安全屏障,因此如果受恶意软件感染的设备设法连接到网络,该协议可能会导致各种安全问题。
另一个安全问题是 UPnP没有正式实施。不同的路由器有不同的应用程序,许多部署都带有黑客可以利用的独特的 UPnP 相关错误。
不幸的是,许多路由器制造商默认启用 UPnP,使基于 LAN 的设备可以从 WAN 中发现。由于端口转发中与路由器相关的缺陷,发生了几起引人注目的基于 UPnP 的攻击,例如:
- 当受害者访问运行特定 Flash 小程序的网站时,Flash UPnP 攻击开始,该小程序向故障路由器发送请求以转发端口。
- Mirai 攻击背后的黑客攻击了由于启用了 UPnP 而暴露的开放 telnet 端口的路由器。一旦他们发现一个易受攻击的路由器,黑客就会使用凭证填充来访问网络并在所有本地设备上安装 Mirai 恶意软件。
- CallStranger 漏洞也是基于路由器的 UPnP 漏洞的结果,该漏洞可能使用户面临数据丢失的风险。
黑客如何利用 UPnP?
黑客以不同方式利用过度信任的 UPnP 协议。大多数漏洞利用需要黑客首先以某种方式(例如,通过暴力破解或网络钓鱼电子邮件)破坏网络,以便在系统上安装恶意软件。在恶意软件注入之后,攻击可能如下所示:
- 恶意程序伪装成 LAN 设备(例如 Xbox 或智能电视)。
- 该程序向您的路由器发送一个 UPnP 请求。
- 路由器打开端口并允许病毒或蠕虫在目标网络上安装(即使防火墙在正常情况下会阻止此类流量)。
- 黑客在您的网络中安装了后门,可以安装任何程序或运行他们选择的任何脚本。
来自 UPnP 缺陷的后门可能会在几个月内未被发现,因此犯罪分子有足够的时间来实现他们的目标。最常见的目标是:
- 将恶意软件传播到其他设备。
- 窃取敏感数据并导致数据泄露。
- 加密静态数据并启动勒索软件攻击。
- 远程访问其他网络设备(最常见的是控制或劫持物联网设备)。
- 将路由器用作其他网络犯罪活动的掩护或代理(通常将设备变成机器人以进行分布式拒绝服务 (DDoS) 攻击)。
- 修改管理凭据。
- 更改 PPP、IP 或 Wi-Fi 设置。
- 监视网络活动并将信息转发给黑客。
- 更改 DNS 服务器设置(通常加载诱饵凭据窃取网站而不是合法网站)。
- 模仿具有高权限的设备横向移动并到达其他网段。
您应该禁用 UPnP 吗?
如果安全是您的首要任务,则没有真正的理由让 UPnP 处于开启状态。区分恶意和合法 UPnP 请求太困难了,这就是为什么具有安全意识的用户通常将协议作为网络安全最佳实践保持关闭。
如果端口转发是您的用例的基本要求(例如,如果您有 VoIP 程序、点对点应用程序、游戏服务器等),比 UPnP 更安全的选择是手动转发每个端口。手动端口转发可确保您控制每个连接,并且不会冒着恶意行为者或程序利用 UPnP 幕后自动化的风险。
依赖 UPnP 是明智选择的唯一方案是运行没有敏感数据或系统的简单家庭网络。但是,仍然存在风险,您需要保持与 UPnP 相关的整个攻击面为最新状态,包括:
- 路由器。
- 防火墙。
- 防病毒和恶意软件。
- 所有连接的物联网设备。
如果您关闭 UPnP,请记住您的网络将不再自动打开 LAN 上的端口。路由器甚至会忽略合法请求,因此您需要手动为每个连接设置端口转发规则。
另一个更安全的选择是使用称为UPnP-UP(通用即插即用 - 用户配置文件)的非标准解决方案。此版本具有原始协议缺少的用户身份验证扩展。不幸的是,虽然 UPnP-UP 比协议的标准版本安全得多,但并非所有设备都支持 UPnP-UP。
不要优先考虑便利性而不是安全性
虽然 UPnP 满足了真正的需求,但该协议存在严重的设计缺陷,可能会危及网络上的每台设备。除非 UPnP 对您的操作至关重要,否则您应该关闭该协议。路由器将忽略所有传入请求,您需要手动设置新设备,但您的安全值得付出额外努力。