在过去一段时间内,爱尔兰的许多在线服务和公共网络都遭受到了 DDoS 攻击。英国广播公司(BBC)最近的一篇文章[ 链接 ]就指出 2016 年 DDoS 攻击事件将呈现上升趋势。
针对爱尔兰的 DDoS 攻击大部分为 NTP 放大攻击。之所以使用 NTP 进行DDoS攻击,主要是因为 NTP 像 DNS 一样是一个基于 UDP 的简单协议,可以通过发送一个很小的请求包产生巨大的相应包。
本文首先会针对此次 DDoS 攻击进行取证分析,随后会给出缓解这类 DDoS 攻击的方法。文中所有的截图来源于 LANGuardian 系统面板,该系统通过 SPAN 端口监控网络边界流量。
下列截图全部来源于真实网络环境,为 2016 年 1 月份遭受的多次 DDoS 攻击。第一张图展示了没有遭受攻击时的网络相关流量信息,从图中我们发现:
1、主要流量为 IPv4;
2、超过 97% 的流量为 TCP,而 UDP 流量只占到非常少的比例。这是非常正常以及我们期望的情况;
3、UPD 流量中绝大多数为 DNS 流量,对于大部分网络来说,DNS 都会是最为活跃的 UDP 协议。
下图为遭受 DDoS 攻击时的网络流量分布,最大的变化就是此时 UDP 流量占到了绝大多数,这也是遭受放大攻击的典型特征。
进一步分析 UPD 流量发现,网络中存在大量的 NTP 和 DNS 流量。但由于这两个协议都非常重要,所以无法直接将其屏蔽。另一个问题在于,这些网络数据包中包含的均为伪造的 IP 地址,所以基本的防火墙策略变的毫无用处。而这些看似合法的请求流量来自于大量的“僵尸”和伪造的身份,这也使得几乎不可能进行识别并进行阻止这些恶意流量。
再进一步分析发现这些流量来自于4700个不同的服务器。我们可以对这些 IP 进行 whois 查询看其是否来自于声誉较好机构的真实 NTP 服务器。看上去不可能有4700个真实的 NTP 服务器被攻破用来进行这次攻击,所以肯定发生了些其他的事情。
NTP 是一个基于 UDP 的无连接协议。这就意味着恶意攻击的客户端可以不使用自己的 IP 地址作为请求源地址,取而代之使用目标网络的 IP 地址作为源地址创建一个 NTP 请求。而 NTP 服务器会认为请求是真实的并进行响应,但它会回复响应包到目标地址而不是发送客户端的地址。这就是所谓的 NTP 放大攻击。
可以确定现在正在遭受这种攻击,因为我们的网络没有发送任何的 NTP 数据包给 NTP 服务器(0数据包发送,0比特发送)如下图:
更进一步分析,我们可以计算出接收到的 NTP 应答包平均大小为 440 字节,这明显大于标准的 NTP 应答包(90字节)。440 字节的数据包可能是对 monlist 请求进行相应的应答包,NTP 服务器响应 monlist 请求会返回与 NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。也就是说一个简单的 monlist 请求会收到多个大尺寸的相应数据包。这就是所谓的放大攻击,只需一个很小的请求数据包就会收到很大的相应数据包。
最后,那么攻击者的客户端是如何发出 NTP 请求的?这点我们无从得知,因为攻击者在 NTP 请求数据包中成功的伪造了源 IP 地址。我们认为这些客户端都是僵尸网络的一部分,在统一接收到命令后就开始攻击目标网络,这些僵尸网络可能拥有成千上万的客户端。
下图展示了一个命令和控制服务器是如何控制众多僵尸节点生成畸形的 NTP 请求并发向许多服务器,进而向目标网络发动 NTP 放大攻击的。
报告中出现的任何本地服务器都需要检测其服务器上是否含有恶意软件,因为这些服务器可能是因为恶意软件从而变成僵尸网络的一个节点也可能其本身就是用于传播恶意软件的服务器。
说到缓解 DDoS 攻击有很多选择,但它取决于你当前情况,如果你目前正在遭受攻击,你可能需要:
1、询问你的 ISP 是否可以屏蔽攻击流量。大部分情况下这是不行的,但如果你是一个教育或政府机构也许可以在 ISP 层面解决这个问题;
2、如果是自己架设 WEB 应用服务器可以考虑部署一个 DDoS 防御系统。高性能的防御系统可以跟踪分析攻击流量并进行清洗,从而抵御较大规模的 DDoS 攻击;
3、如果你的网站是托管在其他地方,那你可以考虑使用像 Cloudflare DDos 防御设施 ;
4、在一些极端情况下,我听说过有公司直接通过更换 ISP 来摆脱这个问题,公司的公网 IP 是唯一对外的目标,通过更换 ISP 可以转移这个目标。
*原文地址: netfort ,FB小编xiaix编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)