基于SSDP的物联网DDoS反射放大攻击及防御实验
2018-07-18林心阳胡曦明马苗李鹏
林心阳,胡曦明,2,马苗,2 ,李鹏,2
(1.陕西师范大学计算机科学学院,西安 710119;2.现代教学技术教育部重点实验室,西安 710119)
0 引言
分布式拒绝服务攻击(DDoS:Distributed Denial of Service)指将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,耗尽被攻击网络的系统资源,从而使被攻击网络无法处理合法用户的请求[1]。反射型DDoS则是一种新的变种,其利用了DNS、NTP、SMTP等网络协议工作原理中普遍存在的点对多点型请求与响应过程。攻击方通过向网络中发送伪造的请求报文,引起网络中的大量设备作为应答方,向目标设备发送大量无端的响应报文,由此利用点对多点型请求与响应过程制造出对DDoS攻击的反射放大效果,给网络安全带来极大威胁。
在物联网环境中,网络摄像头、打印机、智能家电等物联网设备普遍采用UPnP(即插即用)协议作为网络通讯协议,而UPnP设备的发现主要是通过简单服务发现协议(SSDP:Simple Service Discovery Protocol)进行相互感知的。由于UPnP设备的数量庞大,基于SSDP的物联网DDoS反射放大攻击,其攻击带宽放大倍数统计平均可达30倍以上[2]。近年来,在DDoS反射放大攻击流量中,SSDP渐渐取代DNS、NTP等成为被利用的主要协议[3],因此基于SSDP的物联网DDoS反射放大攻击及防御技术成为物联网安全领域的热点和难点。
1 SSDP反射放大攻击原理
简单服务发现协议是封装在UDP上的一种应用层协议,端口号为1900。按照协议的规定,当一个控制点(客户端)接入网络的时候,它可以向一个特定的多播地址的SSDP端口用M-SEARCH方法发送“ssdp:discover”消息[4]。当设备监听到这个保留的多播地址上由控制点发送消息时,设备会分析控制点的请求服务,如果自身提供了控制点的请求服务,设备将通过单播的方式直接响应控制点的请求。
当一个设备计划从网络上卸载时,它也应当向一个特定多播地址的SSDP协议端口使用NOTIFY方法发送“ssdp:byebye”消息。基于SSDP的物联网DDoS反射放大攻击原理如图1所示。
在反射放大攻击中,所谓“反射”,是指攻击者并不直接攻击目标服务IP,而是通向组播地址发送构造的请求报文,将被攻击方的IP地址伪造成报文的源IP地址。所有支持该协议的设备都会收到搜索报文如图1虚线所示。所谓“放大”,是指这些设备会将数倍于请求报文的回复数据发送到被攻击方,从而对其间接形成DDoS攻击,如图1中实线所示。这个过程利用SS⁃DP协议“组播请求、单播响应”的特点,实现了攻击的反射放大。
图1 反射放大攻击原理
2 物联网环境下的攻击与防御实验
物联网环境的概念非常宽泛,包括传感器等工业用物联网,服务器、打印设备等商用物联网,天气环境监测网络系统等公共服务用物联网。这些日趋广泛的物联网环境都极易受到DDoS的威胁[5]。其中,由智能冰箱、恒温控制器、家用路由器和监控摄像头等设备组成的智能家居物联网环境由于其设备购置成本低,组网灵活,攻击与防御范围可控等优点适合于作为在教学中开展攻击和防御实验的网络环境。
2.1 实验环境嗅探
在基于智能家居的物联网环境中,如何找到可被SSDP攻击利用的智能设备成为攻击实现的前提和关键。为此,本文提出一种基于Python进行Socket编程对物联网内的UPnP设备进行探测的解决方案,采用该方案可以有效地探测物联网内可被攻击利用进行反射的设备。
首先,通过向协议的固定组播地址239.255.255.250发送一个搜索报文(ssdp:discover);然后,捕获响应报文进行报文内容的提取,从而可以全面而准确地发现物联网内可被攻击利用进行反射的设备;最后,通过计算得出此实验物联网环境下SSDP协议的带宽放大因子(BAF,Bandwidth Amplification Factor),即回复报文的总字节数与请求报文字节数的比值。关键步骤实现如表1所示。
表1 实验环境嗅探关键步骤
通过对程序运行结果进行整理和统计,列出在探测报文发出后应答报文(HTTP/1.1 200 OK)的源IP、响应报文个数及平均长度如表2。这些响应报文即为DDoS攻击进行流量反射的媒介。
表2 UPnP设备探测报文应答统计表
设B为发出的搜索报文字节数,bi为第i个应答报文的字节数,从而依式(1)求出实验BAF值[6]:
其中,由Wireshark抓取所发出的数据包得B=133bytes。可见,实验BAF高于近年SSDP攻击中测得BAF的平均值30.08,保证了实验的参考价值[7]。
2.2 方案设计与实现
在工作和生活中常见的电子设备都可能随时遭受基于SSDP协议的DDoS威胁,而在互联网内最易受到攻击的则是服务器[8]。在物联网实验环境的探测后,针对实验环境及常见攻击特点设计模拟攻击实验方案如图2所示。
图2 实验方案设计流程图
在网段内对智能家居物联网中的个人电脑、An⁃droid手机、路由器、网络机顶盒进行攻击实验,并根据设备特性用不同的方式观察其实验效果。跨网段对互联网中服务器进行攻击,并由服务器资源状态走势图观察实验效果,本文实验中使用阿里云服务器作为被攻击对象。
(1)攻击的实现
用Python的scapy模块编写脚本实现包含IP欺骗的SSDP搜索请求报文发送,通过控制发包数量及速率,指定目标设备的IP地址为发出报文的源IP地址,使局域网内所有设备响应均发送至该设备,从而实现对局域网内智能终端进行攻击,关键步骤如表3。
表3 攻击实现关键步骤
由于Windows系统默认会对所发出报文进行IP查验,因此无法进行IP欺骗,即不能发出SSDP攻击报文,故选择在Linux(Ubuntu16.1.4)系统上配置Python环境,运行攻击脚本。
(2)网段内攻击实验
①主机攻击实验
对IP为192.168.1.108的主机进行攻击,在攻击持续的时间内,打开Windows资源监视器发现网络带宽资源由于攻击而被大量占用,如图3所示。
图3 受到攻击时网络资源状况
在被攻击主机上打开Wireshark抓包得到由攻击主机伪造源IP发出大量搜索报文以及收到大量的来自局域网内设备的SSDP响应报文如图4、5所示。
图4 伪造IP搜索报文
图5 SSDP响应攻击报文
在攻击结束后,查看资源监视器,网络逐渐恢复正常状态,网络资源情况如图6。
图6 攻击结束后网络资源状况
根据网络资源状况的对比可知攻击产生了较为明显的效果。在模拟攻击过程中由于Python多线程运行的特点及发包速率受到Python scapy模块发包性能的限制,攻击流量较小。但从攻击主机和被攻击的主机两者的带宽占用比值来看,攻击放大倍数约为10倍,达到较好的放大效果,能够很好地模拟SSDP反射放大攻击过程。同时若使用多台主机形成DDoS攻击,或局域网内可用支持UPnP的设备数量更多,则攻击流量大小必将成倍增加。
②其他终端攻击实验
以下对智能手机、家用路由器以及网络电视机顶盒进行DDoS攻击模拟。
首先,对局域网内一台Android手机(IP=192.168.1.102)进行SSDP攻击,通过软件PingTools可观察到在遭受攻击的时间里手机的网络使用率激增,在攻击结束后恢复正常如图7。
图7 被攻击手机网络使用率走势图
编写脚本攻击家庭路由器(IP=192.168.1.1),在攻击持续时间内局域网内的设备均受到一定程度的影响,正在播放视频的电视及手机均出现严重的卡顿现象。在局域网内手机上通过PingTools查看路由器信号强度走势如图8,路由器信号强度由100%下降并稳定在76%。
图8 路由器信号强度走势图
最后,对局域网中家庭电视的网络机顶盒(IP=192.168.1.105)进行SSDP攻击,在攻击持续的时间内,手动调节视频进度以排除提前缓存因素影响,电视视频播放画质明显下降并且出现持续的闪屏现象。
(3)跨网段攻击实验
由于SSDP协议并没有检查搜索请求报文是否来自于设备所在的局域网络的机制,即便M-SEARCH报文来自于互联网,设备也会积极应答这个报文[9]。如果设备将1900这个UDP端口暴露在互联网中,那么这个端口就有可能成为UDP放大攻击的绝佳目标。为探究攻击报文是否可以穿越互联网,进行如下实验进行验证。
将发出的攻击报文源地址改为互联网上的云服务器地址,在Linux系统上运行脚本,对该服务器发起SSDP攻击。由于攻击方处于表1所示的家居物联网环境中,所以局域网中的终端在本实验中起到反射和放大作用。发起两次攻击分别持续10min(12:25至12:35)、70min(12:40至 13:50),在此过程中查看服务器资源状态如图9。
图9 服务器出/入报文速率走势图
其中,由图中可见在[12:49:30]时刻入报文速率为586个/秒,明显高于攻击发生前,可见攻击者可以跨网段攻击互联网中任意一台具有公网IP的服务器。
3 SSDP漏洞分析与攻击防范
3.1 协议漏洞分析与改进
SSDP协议成为黑客发起DDoS攻击的帮凶,在一定程度上是由于该协议存在漏洞造成的[10]。对本文的实验过程进行分析得出结论:在SSDP实现发现设备的过程中可加入IP地址校验机制,即当一台智能设备收到搜索请求报文后能够自动进行IP地址检查,若IP为非局域网内IP则不进行响应。由此将SSDP报文限制在局域网内,可以避免互联网内大规模的SSDP反射放大攻击。
3.2 SSDP-DDoS攻击防御措施
客观上我们无法阻止黑客对我们的服务器发动DDoS攻击,除非主动断开互联网连接。但我们可以在理解攻击的原理及过程后,采取如下两种有效措施将这种攻击的危害大大降低。
(1)对于不需要启用UPnP服务的设备,手动停止该服务或关闭1900端口(配置防火墙)。
在Windows系统中可以在“控制面板-管理工具-服务-属性-启动类型”中将SSDP Discovery Service服务停止,其进程名是svchost.exe。在Linux系统中可以在终端下通过命令进行服务关闭操作。
(2)引入流量清洗技术,对业务流量进行实时监控分析。
如果检测短时间内可能遭受DDoS攻击,则进行流量清洗,将收到的UDP攻击包丢弃,对特定端口进行限速等。根据不同的防护等级需求,可选取采用三个层次的流量清洗:本地清洗、运营商清洗、云清洗。
若教师期望在课堂上进行防御下的攻击验证实验,学生可按上述方法将计算机的SSDP服务停止,其1900端口将不会被利用从而受到攻击,攻击者得到的反射报文数量也会明显减少,即可证明攻击可被有效地防御。
4 结语
本文针对反射放大型DDoS所带来的网络安全问题,利用家居物联网环境中的智能终端进行攻击实验。首先对物联网环境中可开展攻击与防御的设备进行嗅探,然后利用Python开发了基于SSDP的物联网DDoS反射放大攻击实验软件,通过实验验证了该软件可以应用于家居物联网及互联网环境下的DDoS反射放大攻击实验。在此基础上,针对物联网环境中的放射放大型DDoS的防御,进一步分析了SSDP协议存在的安全漏洞并提出改进方案及防御策略。
本文的实验过程方案可在物联网环境下实现多场景再现,不局限于某一种局域网环境或设备。因此,教师可根据教学目标开展当堂实验,使教室内的多媒体设备、移动终端及个人电脑成为课堂实验工具,形成理论与实践的结合的授课模式。