绝大部分 DoS 攻击,一般来说都是目标系统收到大量服务请求,最终导致拒绝服务状态。实际上,随着技术的发展,如果要让现在的系统“拒绝服务”,是需要海量请求配合的——也就是所谓的泛洪攻击才能做到的,这就需要用到分布式拒绝服务,也就是 DDoS 攻击了。但在前不久结束的 DEF CON 大会上,安全研究人员在 Windows SMB 服务中发现一个漏洞,利用该漏洞,即便是一台普通性能的计算机,也能对拥有海量运算资源的服务器发动 DoS 攻击。
近日,RiskSense的安全研究人员找到了一个20年之久的Windows SMB漏洞,他们称之为SMBloris,在最近的DEF CON黑客会议上,介绍了他们的发现。
这个漏洞可以让攻击者轻松地通过20行Python代码和树莓派远程使windows服务器崩溃。
但微软表示不会修复这个漏洞,因为你要做的仅仅是屏蔽掉连接到互联网的一个端口。
只有那些通过SMBv1端口连接到互联网的机器才会被攻击者使用SMBloris 攻击到,那也就是为什么微软认为这只是一个配置上的问题。
这个漏洞影响了SMB协议的每一个版本和从windows 2000开始的每一个windows版本。RiskSense高级安全研究员Sean Dillon说,它可能要比操作系统的出现还要早。与同事Zach Harding共同研究的Dillon还称这次攻击为SMBloris,因为它与在2009年Robert Hansen开发的Slowloris相当。这两种攻击都可以使一个功能强大的服务器崩溃或冻结,但对于Slowloris来说,它的攻击目标不像SMBloris那样是web服务器。
“与Slowloris类似,它需要建立多个连接到服务器,但这些连接的成本对于攻击者来说很低,所以一台机器就就能够执行攻击,”Dillon说。
Dillon是第一批分析永恒之蓝的研究人员,WannaCry的传播和ExPetr wiper这样的恶意软件都是利用了NSA SMB的漏洞,而正是在分析永恒之蓝的过程中,Dillon发现了这个SMBv1漏洞。
DIllon解释道“在研究永恒之蓝的时候,我们就观察到了在windows内核上使用的是非分页池的内存分配模式,非分页池必须保存在物理RAM中,不能被换出来,这是系统中最宝贵的内存池,但我们还是想出了如何耗尽这个内存池的办法,即使带有128GB的强大内存的服务器,我们也可以用树莓派把它拿下。“
Dillon说,“这个问题是在6月初向微软报告的,因为EternalBlue分析已经完成。微软告诉研究人员,两个内部安全小组认定这个漏洞是一个中等的问题,不会被移入安全部门,可能永远不会被修复。在星期六的DEF CON谈话的60天前,我们就向微软提交了报告,在这次谈话的45天前,我们收到了微软的回应。”
微软公司的一位发言人表示,“这种情况并没有给安全带来严重的影响,我们也不打算用安全更新解决这个问题,企业用户如果担心的话,建议他们不要从SMBv1端口访问互联网。”
“他们说这是一个中等的问题,因为虽然它需要建立许多与服务器的连接,但是这些操作完全可以用一台机器完成,而树莓派就可以使最强大的服务器瘫痪,”Dillon说。
该漏洞是利用了SMB数据包的处理方式和内存分配的方式。 Dillon和Harding表示,他们发现了一种利用该系统分配方式来破坏服务器的方法。
这种攻击就能对类似DDoS这样的攻击进行放大了。Dillon解释说,如果一台机器就可以完成DoS攻击使windows服务器瘫痪的话,为什么还要用DDoS呢,你也不再需要使用肉鸡了。
Dillon说,该攻击可以分配服务器所有的可用内存,甚至不会蓝屏,操作系统通过很长的内存列表来寻找未分配的内存,而这样会使操作系统崩溃,CPU占用率也会达到峰值。
“服务器崩溃的很严重时你可以完全冻结系统,”Dillon说,“但当所有的非分页池内存都分配完了的时候,还会有很多完整性的问题,比如某些磁盘的权限问题,甚至会出现因为内存耗尽而无法进行日志记录的问题。我们遇到的一个问题是:我们已经完全消耗尽了系统的内存并导致系统被冻结;而不显示蓝屏也是因为需要显示蓝屏的资源不够,系统会冻结,并且永远都无法修复。“
Dillon表示,在前不久的black hat大会上,他和Harding分享一些有关这种攻击的更多的技术细节,并演示攻击的内容。
“这样的攻击还是很简单的,我相信大部分人都可以弄明白发生了什么,”Dillon说。
以下是SMBLoris攻击消耗windows RAM演示视频:
NBSS是NetBIOS会话服务协议,每个连接都会分配128 KB的内存,在连接关闭时释放内存。当没有活动执行的时候,连接会在30秒后关闭。 使用65535个TCP端口,攻击者可以填充超过8 GB的数据,在ipv4和ipv6协议下,DDoS攻击可以达到16GB数据,两个ip的话,攻击流量可以翻倍,即达到32GB。 攻击会触发NBSS的内存饱和,需要重新启动服务器才能恢复正常操作。
Dillon认为对于微软来说,修复这个漏洞却并没有那么简单。
“我认为问题就在于这个漏洞并不是很容易修复,微软已经使用这样的SMB内存分配方式20年了。所以,所有的东西都依赖于客户端说”我发送的缓存区有这么大“这样一个事实。对服务器来说,它也保留了同样多的内存,所以,服务器才可以处理客户端发来的数据。“
Dillon表示,可以用联机设备(包括防火墙)来限制单个IP地址到SMB端口的活动连接数来缓解这种情况。