1、事件回顾
正当美国陷入焦头烂额的总统大选之际,黑客们于2016年10月21日利用恶意软件Mirai所控制的僵尸网络(Botnet)对域名管理供应商Dyn发起了三波大规模的洪水(DDOS)攻击,几乎摧毁了大半个美国互联网。不能访问的网站包括:Twitter(社交)、Spotify (音乐)、Netflix(电影)、PayPal(支付)、Amazon (购物)、Nytimes (报纸)、Github(程序开发)等。
虽然“狼来了”喊了很长一段时间了, 但这次近乎瘫痪式地攻击还是让人大吃一惊!每个DDoS攻击平均能使公司损失40万美金(其中部分公司可能高达百万美金),考虑到本次受到波及的不仅仅是互联网内巨头,还有其它中小型网站,长达6个小时的三次攻击,可以预测本次的损失将是一个天文数字。
Figure1. 美国受DDoS攻击影响的区域
受本次攻击所影响的区域见Figure 1, 图中大片红色江山意味着多个地区的互联网访问瘫痪, 影响是全国范围的。
目前中国的物联网事业方兴未艾, 2016年10月底第七届世界物联网博览会将在无锡举行。为促进IoT在中国的健康发展,本文从技术层面深入探讨IoT引发的网络安全问题,希望和同行们一起找到解决问题的有效方法。
2、历史回顾
物联网(Internet of Things,IoT) 从一开始就有人担心其安全性【1】,不过主要还是考虑对其自身的安全性、健康性的问题。有关IoT过去15年的安全事故回顾请参考【2】, 其中最有名的是2010年发生的利用Stuxnet病毒一举摧毁了伊朗的核反应堆。
利用IoT攻击其它网络是从2013年开始盛行的,当年爆发的攻击是利用可以联网的打印机来实施的【3】。其原理是利用UPnP(Universal Plug and Play)协议来探测某个打印机是否远程可用,然后组网(Botnet)发起DDoS 攻击。UPnP本来是一个局部的通讯协议,被滥用后有8千万个支持UPnP协议的公网IP地址被发现,这些IP都有被恶意利用的潜在危险。
今年是利用IoT攻击其它网络的高峰,这次大规模洪水攻击就是利用Mirai僵尸网络进行的。九月份就有对国外安全研究员Brian Krebs的个人网站KrebsSecurity.com的尝试性攻击,小试牛刀一下,立马致其被迫下线数日。值得注意的是,这个网站本来是受业界翘楚的Akamai保护的。但是在高达620Gbps的攻击下,Akamai举起了白旗。让在DDoS防御方面的行业老大挂不住脸,可见这种攻击的破坏力之大!至于其他人号称能防的住,我们还是拭目以待吧。
接下来黑客们把Mirai的源代码公开了【5】,造成了Mirai僵尸网络规模的成倍增长,这样使得利用IoT设备攻击其它网络变得越来越容易。
美国时间10月21日,利用千万IP地址的大规模DDoS攻击终于爆发了,它一战成名,立刻瘫痪了美国重要地区的互联网。发动DDoS攻击的僵尸网络这次具备超过1.5Tbps的攻击能力,一共调动了十几万台的物联网设备,其中包括了闭路电视(CCTV)、监控摄像头(IP Camera)和视频录像机(DVR)等可联网IoT设备。如此大的破坏力从何而来呢? 下面我们来一一道解。
3、攻击原理
DDoS (DistributedDenial of Service)攻击是利用成千上万个联网设备(IPs)对某一网站(IP)的攻击。如何发现可以用来攻击的联网IP而组成僵尸网络是其关键的第一步。由于物联网设备可以上网,它们是大型僵尸网络肉鸡潜在的最好资源之一,也同时是DDoS攻击的有效马前卒。
实际上物联网设备与人们熟知的电脑一样,也是由硬件+操作系统构成,因此它们只要联网同样会受到传统漏洞和攻击的威胁。加上由于物联网设备多以嵌入式出现,人们普遍对其威胁性认识不足。
虽然人们不断提醒IoT的网络安全危险【4】, 但由于缺乏认识,还是让这次攻击轻松得逞。本次攻击涉及到的主要手段有:
撞库获取设备的控制权限
扫描组成僵尸网络
利用DNS设计缺陷发起DDoS 攻击
3.1 撞库攻击
撞库攻击一般指利用在其他地方获得的登录信息来登录某个联网设备。其原理是利用人类的弱点:为方便记忆通常在不同的网站使用相同的登录信息。黑客们发现国内某厂商生产的DVR其登陆信息是一样的, 例如:root的密码是:xc3511。这样黑客们就可能轻松地获得该设备的最高管理权限。Mirai掌握了60多种IoT设备出厂时设置的root的密码,大大方便了对这些联网IoT设备发起撞库攻击,从而建立僵尸网络。
另外有些设备上还有一个漏洞:一般来说网页登录是通过网址:http:/IP地址/login.htm来进行的。但这个可以通过另外一个URL:http://IP地址/DVR.htm来绕过, 从而不登陆就能直接对该设备的配置进行修改。
这两个漏洞一旦被黑客利用, 就可以方便地招募肉鸡,组织庞大的僵尸网络。
3.2 僵尸网络
Mirai是通过telnet使用上面介绍的默认密码侵入IoT设备的,扫描的TCP端口号是23和少量的2323。扫描过程是通过如下C语言的do-while循环过程实现的。
Table 1. 扫描整个IPv4地址空间, 绕过不需要扫描的段落。
Table 1描述了搜索InternetIPv4 32位地址空间的过程。 首先生成一个随机数, 然后跳过一些地址段,反复循环, 直到找到一个有价值的IP地址。IP地址的高八位用o1变量表示,一些知名的地址段,例如HP、邮政部、国防部的地址,因为在里面找不到的有价值的肉鸡,需要跳过。跳过的地址段大约是整个IPv4地址空间的20%, 这种机智地跳跃大大加快了整个的扫描过程。
一旦发现了一个IoT设备的IP可以侵入,下载bot程序,加入Mirai僵尸网络,然后关闭port 22, 23, 80等防止该系统被其他人利用。从这个角度来说, Mirai和其它的僵尸网络是排斥性关系,都想对所控制的资源独占。感染后的肉鸡Bot通过DNS的53端口和僵尸网络的控制中心通讯维持联系,攻击时也通过DNS的53端口发起DDoS攻击。
3.3 DNS WaterTorture Attack
DNS (Domain Name System)是Internet的电话号码本, 记录了网站名到IP地址的对应关系。 要想访问一个网站,先要查DNS找出其对应的IP地址,然会才能进行访问。 所以如果DNS不通了, 网站的服务也就无法获取了。
由于DNS的重要性,其通讯用的53端口一般都是打开的。Mirai巧妙地也用53端口号通讯,这样就使得在防火墙上拦截Mirai很难进行,总不能杀敌一千,自损八百吧?
由于DNS设计上的一些缺陷,使得它常常被用来做DDoS攻击。这次用的就是强迫DNS服务器做递归查询,从而达到瘫痪目标DNS服务器的目的。
Figure 2. DNS Water Tortureattacks
如Figure2所示:如果想攻击yahoo.com,就问一个有随机字符串前缀的域名xyz4433.yahoo.com, 同时强迫DNS服务器在找不到时做递归查询,即找不到也要向有yahoo.com解释权的权威DNS服务器发出请求。这样当大量的无效请求到来时,负责yahoo.com权威解析的DNS服务器就会很忙。请注意,由于递归DNS服务器的数量远远大于权威DNS服务器的个数。这样一种非对称结构使得权威DNS服务器最终忙于应付大量无效的请求而无力响应正常的请求,达到了DDoS攻击的目的。
还有一个副作用就是递归DNS服务器的缓存里同时也放进了大量无效的DNS域名,有效域名反而被挤出去了,这同样延缓了对有效域名的查询速度。这就是城门失火,殃及池鱼, 有些中小型网站就是这样无辜被影响的。
这就是为什么递归DNS查询要谨慎使用的原因,DNS服务通常鼓励用循环(iterative)而不是递归(recursive)查询。 但攻击者恰恰抓住了这个设计弱点,打蛇打七寸,用递归查询迫使DNS服务器之间的大量通讯从而瘫痪整个网络。
和其它DNS攻击相比,每个肉鸡发出的随机域名不是很多,和正常请求没有太大的区别。一个请求就迫使多个DNS服务器通讯多次,造成DNS服务器越来越忙。这种在应用层面上充分利用“反对称”原理,四两拨千斤,把DNS服务器之间的通讯量“无限”放大,用小的流量就能让应用服务器忙得要死, 从而达到封锁对正常DNS服务的请求。
如今,经过近二十年的发展壮大,DDoS攻击已形成了一条高度成熟的黑色产业链。腾讯曾发布报告称,目前在这条黑色产业链中,相关黑产从业人员或已达到三十余万人,涉及数千个大大小小的黑产团伙,国内年产值将超过100亿。所以这次美国的互联网被瘫痪就不足为奇了。如何防止这种攻击在国内大规模地爆发呢?
4、防御措施
2015年5月,艺龙、去哪儿、途牛等先后遭受DDoS攻击,网站一度瘫痪,事后证实,这是一次针对行业的攻击事件。
而从目前来看,DDoS的防护办法并不多,主要还是得“砸钱”。有人算过一笔账,自建机房进行防御,1G带宽一年的成本大约是30万。而目前市面上一台10G的清洗防火墙价格在十几万到几十万不等。换言之,组建30G的防御设备成本约在100万左右,这还没有算上人力、电力成本…… 简单的说,就是要耗费大量的人力和财力。
因此,DDoS的防护也自然成了一块“肥肉”。目前腾讯和阿里巴巴都推出了自家“防火墙”,涉足了DDoS防护这盘“生意”。虽然背靠大树好乘凉,但并不意味着可以“一劳永逸”。对于互联网创业者来说,若想保证线上业务系统的安全,首先必须对IoT设备、网站构架、网站系统进行加固和完善,及时修补存在的漏洞,同时做好应急预案。总而言之,DDoS防护是一场长期持久的战争,要从预防、限制入手。
针对这次IoT引起的DNS Water Torture Attack, 市面上目前没有有效的防御方法,主要难点在于:
· 由于root的密码被盗,入侵非常容易; 有些root密码被固化了,也无法修改。
· Mirai僵尸网络通过动态域名和其控制台(C2)通讯, C2的IP地址经常变化,感染后不容易检查到;
· 攻击时每个肉鸡发出的流量不大,和正常请求很难区别。
唯有技术上的不断创新才是解决问题的唯一途径。深层报文分析、大数据分析、专家系统可以联合起来解决如上三个难题。
深层报文分析(Deep Packet Inspection)是用来详细地解析DNS报文。例如: 要知道一个DNS请求是否是递归的? DNS 域名是什么?返回的结果是什么? 这些要靠DPI技术来解决。
Figure 3. DNS 多级域名的分析
拿到了DNS域名后, 要利用大数据分析技术对域名做流水线的聚合,看看哪级域名有发散的现象。Figure 3展示了利用大数据分析对DNS域名的二、三两级分别进行聚合的结果。对比左、右两张图可以看出:
1) DNS域名 jittc.org的个数左右一致,肯定不发散;
2) DNS域名 bdimg.com也应该不发散,原因是左、右个数相差不大。
通过这样的分析,一旦有发散的现象, 就可以用专家系统的规则库自动识别,从而实现自动报警。 发散现象找到后, 还需要能识别某一分级域名是随机字符串, 这样这个DDoS攻击的识别问题就引刃而解了。 总结一下:
1) 当一个机器对网络发起扫描时,要能利用大数据分析及时地发现telnet的session过多;
2) 当一个肉鸡和Mirai的控制台通讯时,要能用DPI技术识别出DNS 的域名,然后进一步判断子域名是黑客常用的DGA域名【6】;
3) 当攻击发生时, 要能用DPI找出域名,并对其做多级的过滤、聚合,识别发散的子域名。然后检查前缀域名是否是随机字符串。
前两个技术主要用于僵尸网络形成的识别,后一技术用于DDoS攻击时的主动识别。我们已有以上的技术积累, 愿意和国内同仁共同携手,打造IoT网络安全的预警平台,在竞争中超越美国,防止类似的大规模网络瘫痪事件的再次发生,为中国的IoT设备保驾护航。
参考文献:
【1】 Mohamed Abomhara and Geir M. Køien, " Cyber Security and the Internet of Things:Vulnerabilities, Threats, Intruders and Attacks", Journal of CyberSecurity, Vol. 4, P65-88, May 2015.
【2】 CiscoWhite Paper, "IoT Threat Environment",http://www.cisco.com/c/dam/en/us/products/collateral/se/internet-of-things/C11-735871.pdf,2015
【3】 LucianConstantin,“UPnP flaws expose tens ofmillions of networked devices to remote attacks”, http://www.computerworld.com/article/2494836/data-center/upnp-flaws-expose-tens-of-millions-of-networked-devices-to-remote-attacks--researchers-s.html#tk.drr_mlt, Jan. 2013.
【4】 Lea Toms,“5 Common Cyber Attacks in theIoT - Threat Alert on a Grand Scale”, https://www.globalsign.com/en/blog/five-common-cyber-attacks-in-the-iot/,Apr. 2016.
【5】 Jgamblin,”Mirai Source Code",https://github.com/jgamblin/Mirai-Source-Code,Sep. 2016
【6】 Manos Antonakakis et. al., “DGAs and Cyber-Criminals: A Case Study”, 2012
----- The End -----
大家可能还感兴趣:
谢谢。