我们在全球部署了多个 UPnP 蜜罐,通过蜜罐捕获到的数据来说明当前 UPnP 相关的威胁态势。同时, 我们也对全网 UPnP 的端口映射数据进行了分析,希望找出其中的恶意端口映射的影响情况。
利用 UPnP 的反射攻击分析为了进一步 分析利用 UPnP 进行的反射攻击,我们通过在全球部署的 UPnP 蜜罐,获取收到的探测 和反射请求数据,通过对这些数据的分析,我们可以更详细地描述这种反射攻击的影响范围和威胁程度。 本节所分析的数据来源于从 2018.10.17 至 2018.12.12 共 57 天内部署在全球的蜜罐记录的日志数据。
- 受害者分析
UPnP 蜜罐可伪装成反射源,捕获到攻击者进行反射攻击的请求。若短时间内在不同蜜罐中发现 针对同一个 IP 的大量反射攻击请求,那么这个 IP 就是反射攻击的受害者。如表 4.3 中的 IP 地址为 119...120 的受害者,在 2 分钟内同时接收到来自多个不同蜜罐的上万条攻击请求。显然,该 IP 遭受 到了基于 SSDP 服务反射的 DDoS 攻击。我们的蜜罐只是部分“放射源”,此时还存在其他反射源也在 对该 IP 进行反射攻击,所以 DDoS 的真实规模会更大。
表 4.3 反射攻击的受害者信息
受害者 IP蜜罐位置开始时间结束时间接收反射请求总数每秒接收反射请求数日期119...120德国22:05:3922:08:17178101132018/12/11119...120印度22:05:3922:08:18178941132018/12/11119...120美国22:05:3922:08:19179911122018/12/11119...120加拿大22:05:3922:08:19179911122018/12/11…通过对现有蜜罐日志数据的分析,我们发现了 1056 个反射攻击的受害者 IP,结合相关的物联网情 报数据,可以对受害者进行更细粒度的分析。- 受害者的国家分布
反射攻击受害者的国家分布情况如图 4.16 所示,中国占 71%、美国占 17%、韩国和新加坡 占 2%、 德国占 1%,其他国家占 7%。可见中国地区是利用暴露 SSDP 服务做的反射攻击的最大受害国,其次是 美国。
- 受害者的 ASN分布
我们共搜集到 942 个反射攻击受害者的 ASN数据,其中前十名受害者的 ASN分布情况如图 4.17 所示。在中国,使用不同运营商 网络的受害者数量分布都不同。在美国,使用 Enzu(美国)网络的用 户更容易遭受到利用暴露 SSDP 服务实施的反射攻击。
- 反射攻击事件数量分析
由于 SSDP 反射攻击放大系数可观,可用的脆弱物联网设备数量庞大,从而越来越受攻击者的青睐。 通过分析 2018 年 NTI的 DDoS 告警数据,我们得到了攻击手法为 SSDP 反射攻击的 DDoS 事件数量变 化图。
UPnP 端口映射服务威胁分析观点 8: 由于 SOAP服务缺乏鉴权机制,约 41 万台端口映射服务可访问的物联网设备存在被入侵 的可能。所有设备中,有 8.9%的设备被发现存在恶意的端口映射条目,例如会将内网的 445 端口和 139 端口暴露在互联网上,而这两个端口存在遭受永恒之蓝、永恒之红的攻击的风险,平均每个受感染的设备存在 282 条感染记录。
观点 9: 我们发现两类恶意端口映射家族,一类试图将所有的内网端口都暴露在互联网上,我们将 其称之为 IntraScan,全球有约 9 千台设备受到感染;一类主要存在两种恶意行为,一是映射到 8.8.8.8 的 53 端口,推测其将设备作为 DNS 反射攻击的肉鸡集群,二是映射到某色情广告平台,进行分布式广 告点击从中获利,由于其端口映射表的描述字段为 node:nat:upnp,我们将其称之为 NodeDoS,全球 有约 600 台设备受到感染。
在 SOAP 服务统计中,我们注意到所有 IGD设备中,绝大多数设备都提供了 WANIPConnection (以下简称 IPCon)或 WANPPPConnection(以下简称 PPPCon)服务。其中,PPPCon 服务除
了 UPnP 协 会 定 义 的 upnp-org:service:WANPPPConnection 以 外, 还 存 在 另 一 个 变 种 dslforum- org:service:WANPPPConnection,约占 IGD 设备总量的 2.1%,这个服务类型不提供下面提到的端口映 射服务,我们在下面的统计中将其排除在外。
IPCon 与 PPPCon 服 务 提 供 了 两 个 关 键 操 作 [39] AddPortMapping( 添 加 端 口 映 射) 和 GetGenericPortMappingEntry(查询端口映射),可以在路由器的外网端口上开启一个端口映射通道或 查询端口映射表中的已有条目,这个通道既可以通向内网,将内网的 IP 地址和端口暴露在互联网上, 也可以通向其他外网地址,从而将受控设备转化为一个网络代理,为攻击者的其他行为提供便利。
我们发现存在上述两个服务之一的设备(约 53 万台)占 IGD设备总量的 97.64%。而在这些设备中, 76.6%(约 41 万)的设备的端口映射表能够访问 [^1],我们认为,这些设备存在严重的安全隐患。
我们对全网设备的 UPnP 端口映射表进行了采集,本节将对其进行分析。
4.4.2.1 总体情况
端口映射表中的 description 字段一般会标识一条端口映射条目的来源,因此,本节的分析我们也 是围绕不同的 description 来进行的。我们爬取到约 1229 万条端口映射记录,发现约有一千种不同的 description,既有聊天类的应用,如 WhatsApp、Skype、Wechat,也有下载类的应用,如 Thunder5、 BitTorrent、Transmission,还有频监控设备类的应用,如 DVR_NVR 、ipcam-h264、IPC_CIVIL_ CMD、IPC_CIVIL_STREAM、IPC_RTSP。由于种类众多,我们很难全部辨识,因此我们重点关注了映 射条目总量最多的几类,从中我们发现了四类 [^2] 恶意端口映射类型,实际上,恶意端口映射类型会更多。 其中 EternalSilence、IntraScan、NodeDoS 主要用于对内网 IP 和端口进行映射,而 MoniProxy 主要用 于对外网的 IP 和端口进行映射,也即做代理。对于这四类,我们会在下面的小节中分别进行介绍,这 里主要描述一些整体情况。
表 4.4 恶意端口映射类型数量
名称Description受感染的 IP数端口映射总数EternalSilencegalleta silenciosa390627924165MoniProxyMONITOR7111568144IntraScan内网 IP 和端口拼接9240239373NodeDoSnode:nat:upnp68134873由于存在一个设备被多种恶意端口映射感染的情况,在对 IP 去重后,我们发现有约 4.4 万台设备被 感染,占所有开放端口映射服务的设备的 8.9%,而恶意的端口映射条目则要占到总的端口映射条目的 73%,平均每个受感染的设备存在 282 条感染记录。观察 10: 从开放端口映射的设备及受感染的设备的国家分布来看,无论是开放端口映射的设备数 还是存在恶意端口映射的设备数,韩国均居首位。
图 4.19 是开放端口映射的设备及受感染的设备的国家分布情况,从中可以看出,无论是设备总数, 还是受感染的设备数,韩国均居首位。从感染比例来看,韩国的感染设备占比最高,达到了 40%,我国 也有 10% 的设备受到感染。
[^1]这里的“能够访问”定义为,向 UPnP 设备发送端口映射查询请求,能够收到返回数据。由于不能对设备一一进行端口映射来确认
其支持端口映射,对于没有数据返回的设备,我们假定其不能进行端口映射操作。因此,这里的存在安全隐患的设备数量并非 IGD 设备的总量。
2 对于这四类恶意端口映射类型的命名,我们将在下面的小节分别进行介绍,这里不再展开。
在对端口映射表中的内网端口进行分析的过程中,我们发现约有 72 万条记录中的内网端口为 0(以 下称之为“0 条目”),占端口映射条目总量的 5%。这些记录存在于 1.2 万个左右的独立 IP 中,这些 设备占总设备的 3%,通过进一步分析,这些 IP 又可以分为两类:
- 映射表内所有端口映射条目均为 0 条目的设备有 721774,占所有 0 条目的 99.6%。
- 映射表内,只有部分条目内网端口为 0 的设备,占比为 占所有 0 条目的 0.37%,占这类设备中的所有映射条目的
我们认为,部分设备 [^1] 的 UPnP 协议实现存在问题,导致其报告映射信息时,错误的返回目标端口值 为 0,尚不明确这些条目是否能够生效。
更进一步的,我们对这些 0 条目的 description 字段进行了统计,如表 4.5 所示,从中可以看出, 既存在恶意的端口映射,如 galleta silenciosa(即 EternalSilence),也存在正常的端口映射,如 libtorrent、wechat 等。且 0 条目数量与映射总量的比例,也和出现 0 条目的设备在所有设备中的占比 大致相同,因此我们认为,绝大部分 0 端口映射数据时由设备本身的原因产生,尚未发现恶意发送 0 端 口指令(如构造消息字段进行命令注入)的应用。
表 4.5 端口映射表中 0 内网端口条目的 description 字段分布情况(前 10)
description0 条目数量galleta silenciosa343253MONITOR199604libtorrent29761PiXel24188Network18179wechat6938内网 IP 和端口拼接10243uTorrent33698miniupnpd8596DaumNPP53574.4.2.2 EternalSilence
观察 11: 全球有约 4 万台设备受 EternalSilence 感染,约占所有开放端口映射服务设备的 9.7%, 平均每个恶意 IP有 278 条恶意端口映射记录。EternalSilence 主要将内网的 139、445 端口暴露在互 联网中,利用永恒之蓝或其他 Samba 漏洞入侵内网主机,进行恶意操作。
“EternalSilence”首次出现在是 Akamai 的安全研究员在 2018 年 11 月份的 UPnProxy 研究报告 [9] 中。 该攻击者在进行端口映射时,会进行类似如下的描述:
{“NewProtocol”: “TCP”, “NewInternalPort”: “445”, “NewInternalClient”: “192.168.10.212”, “NewPortMappingDescription”: “galleta silenciosa”, “NewExternalPort”: “47669”}
其中的 NewPortMappingDescription 字段是西班牙语 galleta silenciosa,翻译成英文为 silent cookie/cracker。同时由于其会暴露 445 端口和 139 端口,而这两个端口存在遭受永恒之蓝(EternalBlue)、 永恒之红(EternalRed)的攻击的风险。因此,Akamai 的安全研究员将其命名为 EternalSilence。
在 Akamai 的研究报告中提到有超过 4.5 万的路由器受感染,而在我们的监控数据中,这一数字有 所减少,但也有 3.9 万受感染的设备,约占所有开放端口映射服务的设备的 6.8%。我们发现约有 792 万条 EternalSilence 的内外网端口映射关系数据。
图 4.20 是受 EternalSilence 感染的设备的国家分布情况。从中可以看出,虽然多个国家都受到 EternalSilence 的影响,但是韩国受到的影响最为严重,占所有感染数量的 77%。这也与图 4.19 中开放 端口映射的设备的国家分布情况相一致,说明一个国家暴露的设备越多,则其被攻破的设备数量就越多。
是 EternalSilence 入侵的内网端口的分布情况,EternalSilence 主要将内网的 139、445 端 口暴露在互联网中(占所有 EternalSilence 端口映射条目的 82%),利用永恒之蓝或其他 Samba 漏洞 入侵内网主机,进行恶意操作。同时,我们发现除了 139 和 445 端口外,还有 18% 的映射条目中的内 网端口的值是 0。另外,还有少量的 17962 端口(11 个设备)也对外进行了映射,我们暂时没有发现
17962 端口有什么独特之处。
表 4.6 是受 EternalSilence 感染的设备内外网端口映射关系的分布情况。从中可以看出,无论是 139 端口、445 端口还是 0 端口,所对应的外网端口号表现出了极强的连续性,例如从 28658 端口到 28911 端口,从 47458 端口到 47711 端口均连续出现。不过,在出现次数上较为分散。我们之后又关注了内网 IP,发现外网端口和设备 LAN侧整个网段是对应的,例如,28658 端口到 28911 端口刚好是 254 个端口,对应 ...1到 ...254,刚好是一个网段的 254 个 IP 地址。
表 4.6 受 EternalSilence 感染的设备内外网端口映射关系分布
内网端口外网端口数量139286582536139286592313………139289101576139289111550 内网端口外网端口数量445474581574445474591590………445477101203445477111178 13951357731………13951610671 44549860595………44550050599 028658665………028796604综上,EternalSilence 危害严重,还有约 41 万台的设备存在被攻击的可能。而这种利用 UPnP 进行 内网渗透的攻击手法正在逐渐打破我们以前对于网络隔离即安全的认知,值得相关厂商和安全研究人员 的关注。4.4.2.3 MoniProxy
观察 12: 全球有 7 千多台的设备受 MoniProxy 感染。MoniProxy 利用 UPnP 端口映射,搭建反向 代理进行广告欺诈。这些受感染的设备绝大部分(99.73%)位于韩国。
MoniProxy 是我们在扫描过程中发现的一类代理行为,它的特征是在受害者设备上开启端口映射时, 将请求中 NewPortMappingDescription 字段标记为“MONITOR”。正常应用如 Skype、BT 客户端等在 操作路由器时,是为了操作 UPnP 设备将内网端口提供给外网访问,因此目的主机也是内网的 IP,而 MoniProxy 的这些行为将路由器上的一个端口映射到其他主机的某些端口上,形成了一种反向代理的效 果,与 Akamai 在报告中描述的 UPnProxy 威胁类型相符。我们将其命名为 MoniProxy。
MoniProxy 开启的端口映射数据样例如下。
表 4.7 MoniProxy 映射样例
IP厂商端口目标端口目标主机Description111.249.215.163TOTOLINK3336444331.13.82.52MONITOR111.249.215.163TOTOLINK33365443182.161.73.67MONITOR111.249.215.163TOTOLINK222638043.227.116.81MONITOR同样的漏洞可能被利用于垃圾邮件、“薅羊毛”等黑产行为。鉴于代理行为对 IP 数量的需求大于 带宽需求,暴露端口映射服务的约 41 万台设备可能是黑产匿名代理服务的下一个“藏宝之地”。表 4.8 MoniProxy 目标 IP 对应域名
目标 IP数量Passive DNS 反查ABP blocked173.241.248.1435146us-u.openx.net是23.35.221.2134292js-sec.casalemedia.com是183.110.238.1364245idsync.admixer.co.kr是104.74.175.1964027stags.bluekai.com是182.161.73.2113960widget.as.criteo.com是182.161.73.823634widget.criteo.com是182.161.73.1953588static.jp.as.criteo.net否35.201.85.1143478data-ingress-ae1.tapad.com否43.227.116.783442adlc-exchange.toast.com否MoniProxy 平均在每个主机上开设 80 条映射记录,且同一主机上绝大多数的映射条目均指向不同 的目标 IP(仅有 1 ~ 2 条映射目标 IP 相同),我们可以大致理解为,它使用每个 IP 对 80 个广告联盟 进行广告点击。进行的映射操作总量越多,攻击者的获利越多。除 MoniProxy(标注为 MONITOR)之外,我们还监测到行为与其较为相似的其他恶意行为,统计 数据汇总于表 4.9 。
映射描述标记为 miniupnpd 的数据中混杂着正常映射行为,最终我们筛选出的恶意行为数据约占 miniupnpd 应用总条目的 4%,它们与第四列标记为 node:nat:upnp 的行为完全相同,将在 4.4.2.5 节详述。 标记为 proxy 的恶意行为向 951 个设备发送了目标地址为 209.85.144.101、目标端口为 80 的映射请求, DNS反查得到的域名关联到广告提供商 AdMob,因此也是与 MoniProxy 动机相似的恶意行为。
表 4.9 与 MoniProxy 相似的恶意代理行为
descriptionIP数量每 IP平均映射数量映射总量MONITOR711179.89568144miniupnpd30244.8914789proxy9511951node:nat:upnp58857.5133815- IntraScan
观察 13: 全球有约 9 千台设备受 IntraScan 感染,平均每个受害者 IP约有 31 条恶意端口映射记录。 IntraScan 几乎希望将所有的内部端口都暴露出来。
IntraScan 是一类打击面更广泛的内网扫描行为,它在映射表中的特征是,其 decription 字段的内容 是它映射的内网地址与端口字符串的拼接,如表 4.10 所示。由于其指向的目标端口多为敏感应用服务 端口,疑似扫描行为,因此,我们将其称之为 IntraScan。
表 4.10 IntraScan 映射表样例
外网 IP外网端口内网端口内网 IPdescription 字段175.182.186.*65545554192.168.1.200192.168.1.2005554175.182.186.*102121192.168.1.200192.168.1.20021175.182.186.*20801080192.168.1.200192.168.1.2001080175.182.186.*1445445192.168.1.200192.168.1.200445175.182.186.*108080192.168.1.200192.168.1.20080在我们的监控数据中,有约 9 千台受感染的设备,占所有开放端口映射服务的设备的 2.2%。我们 发现约有 26 万条 IntraScan 的内外网端口映射关系数据,平均每个恶意 IP约有 31 条恶意端口映射记录。图 4.24 是 IntraScan 入侵的内网端口的分布情况,IntraScan 几乎希望将所有的内部端口都暴露出来, 如 Web 服务相关的 80、81、82、8080 端口,FTP 21 端口,SSH 22 端口,Samba 445 端口,MySQL 3306 端口,MSSQL 1433 端口等。16% 的映射条目中的内网端口的值是 0,出现原因我们已经在 4.4.2.1 中进行说明。除此之外,暴露数量最多的是 9308 端口,即索尼 PlayStation 的端口。如果 IntraScan 更 为广泛的传播,其影响甚至要严重于 EternalSilence,因为除 139、445 端口外,它还将更多的端口映 射出来。我们目前并不知悉攻击者一旦成功入侵以后的下一步操作。
内网端口
表 4.11 是受 IntraScan 感染的设备内外网端口映射关系的示例。从中我们发现了两类不同的端口映 射规则。一类是内网端口和所映射的外网端口相同,这类规则发生在 9303-9308 端口之间和所有大于 等于 49152 端口的时候;另一类是将内网端口号加 1000 作为相对应的外网端口号,如果出现映射失败 的情况(即该外网端口已在使用中),则会尝试将内网端口号加 1025 作为相对应的外网端口号,如果 继续映射失败,则会持续在此基础上加 1 进行映射,直到映射成功,如示例中的 80、81、82、8443、 9999 端口。
表 4.11 受 IntraScan 感染的设备内外网端口映射关系示例
内网端口外网端口数量内网端口外网端口数量930393032880108010279304930418580110596930593051367801106159306930612468110817189307930717828111061009308930823548111072249152491525682108270949153491531882110711149155491551082110819554545545438443944339665255652553844394689465520655203999910999112- NodeDoS
观察 14: NodeDoS 主要存在两类恶意行为,一是映射到 8.8.8.8 的 53 端口,将设备作为 DNS 反 射攻击的肉鸡集群,二是映射到某色情广告平台,进行分布式广告点击从中获利。全球有约 600 台设 备受 NodeDoS 感染,平均每个受害者 IP约有 58 条恶意端口映射记录。
NodeDoS 在 description 字段的内容是 node:nat:upnp[^1],这种恶意类型的主要行为有二,一是映 射到 8.8.8.8 的 UDP 53 端口,将设备作为 DNS 反射攻击的肉鸡集群,二是映射到某色情广告平台, 进行分布式广告点击从中获利。在我们的监控数据中,有 600 台左右受感染的设备。约有 3.4 万条 NodeDoS 的内外网端口映射关系数据,平均每个恶意 IP 约有 58 条恶意端口映射记录。需要说明的是, Akamai 在其研究报告 [7] 中仅是以示例的形式提到了 node:nat:upnp,并未从统计意义上进行分析。
我们发现被 NodeDoS 感染的设备所属国家中,韩国依旧是占比最高的,占到了 51.4%,约有 9% 的受感染设备位于我国。
表 4.12 是 NodeDoS 开启的映射条目的目标主机与目标端口统计。我们共发现 774 组目标主 机和目标端口对,但是大部分目标主机和目标端口出现的次数都很少。由于目标主机以 8.8.8.8 和 205.185.208.85 为主,因此,我们主要对这两个地址进行分析。8.8.8.8 是 Google 的公共 DNS,入侵者
可以单纯将受害主机作为匿名 DNS,也可以利用 UPnP 设备作为跳板进行 DNS反射攻击。表 4.13 是另 一个目标 IP 205.185.208.85 在 VirusTotal 中关联到的域名,经验证,此域名属于某色情广告平台,同 样处于 ADBlock黑名单中,我们猜测这类操作是类似于 MoniProxy 的广告欺诈行为。
表 4.12 NodeDoS 映射的目标主机(前六)
目标主机目标端口映射数量8.8.8.85318090205.185.208.858011449199.217.119.213533114172.16.13.123276185.162.9.15153177192.168.1.17822222157表 4.13 205.185.208.85 在 VirusTotal 中的查询结果2019-01-12 vip0x055.ssl.rncdn5.com 2019-01-12 media.trafficjunky.net 2019-01-11 hw-cdn.trafficjunky.net 2019-01-01 static.trafficjunky.net 2018-11-12 cdn10.trafficjunky.net 2018-08-16 192.168.media.trafficjunky.net
4.4.2.6 恶意端口映射攻击源分析
我们的蜜罐捕获到了约 1.2 万次与操作路由器端口映射表相关的行为(10 月 -12 月),其中 EternalSilence 占到了 99%。因此,我们的分析将围绕 EternalSilence 的攻击源来进行。
1)攻击原理
通过对蜜罐日志的分析,我们发现 EternalSilence 的攻击流程可以分为三个步骤,首先扫描 SSDP 服务,之后通过 HTTP GET扫描 SOAP服务,最后通过 HTTP POST尝试在目标上添加新的端口映射关系
EternalSilence 对目标设备 SSDP 服务的扫描,遵从 SSDP 的报文格式,通过 UDP的方式进行。目 的有三个,首先,确认设备的 UPnP 服务是否开放(正常情况下,UPnP 服务开放后,SSDP 服务作为 子服务也会开放);第二,确认设备类型是否为网关(路由器),也即是否具备端口映射的能力;第三, 获取 SOAP服务的端口和访问的 URL(SSDP 返回内容的 Location 字段)。
在完成了对目标设备 SSDP 服务的扫描后,若确认设备为路由器,EternalSilence 会向设备的 SOAP 服务发送 HTTP GET请求,目的是获取端口映射相关操作的 URL。
最后,EternalSilence 会按照 SOAP 的报文,向路由器的 SOAP 服务发送 POST 请求,尝试依次将 路由器 LAN侧 C 类网段内 254 台设备的 139 和 445 端口 1 映射到路由器的 WAN口上。具体过程为,首 先对 ...1(如 192.168.1.1)的 139 端口进行映射,如果失败,则对 ...2的 139 端口进行映射,如 果成功,则继续对 ...1的 445 端口进行映射。以此类推,直到 ...254。同时,我们也对外网端口进 行了统计,和 4.4.2.2 中发现的内外网端口映射规律相一致。
2)攻击源分析
我们的蜜罐一共捕获到 45 个攻击源。首先,我们结合 NTI的资产数据对这些攻击源开放的端口进 行了分析,从端口分布来看较为分散(共出现了 58 个不同的端口),既有路由器相关的端口(7547 端 口),也有摄像头相关的端口(554 端口、3777 端口),因此,我们初步推断攻击者利用有漏洞的物联网设备进行了恶意代码的植入,从而控制这些肉鸡来对全网开放 UPnP 服务的设备进行端口映射。由 于攻击源数量来自我们积累了三个月左右的数据,因此,我们推断攻击者控制的肉鸡数量并不多,可能 也与进行端口映射并不需要数量很多的肉鸡有关,攻击者并没有刻意去扩大肉鸡的规模。
我们也对这些攻击源的地理分布进行了分析,发现这些攻击源的地理分布相对分散,位于 17 个国 家(包括中国、乌克兰、巴西、意大利、土耳其、德国、法国、马来西亚等),除中国出现了 19 个外, 其他国家基本上都只出现了 1-3 个。我们推测攻击源以中国居多的原因是带有攻击者所利用的漏洞的设 备以中国居多。由于缺少攻击者控制攻击源的恶意样本,我们很难进行更深入的分析。
参考资料绿盟 2018物联网安全年报
友情链接CSA 云原生安全技术规范(征求意见表)